Overview
오늘은 Hashicorp Vault에 대해서 공부해보려고 한다.
Vault란?
HashiCorp Vault는 ID 기반 비밀 관리 및 암호화 관리 시스템이다.
여기서 말하는 Secret이란 API 키, 암호, 인증서 등 외부로 노출되어서는 안 되는 민감한 정보들을 의미한다.
Vault는 인증(Authentication)과 권한 부여(Authorization)를 기반으로 접근을 제어하며, UI, CLI, HTTP API를 통해 Secret을 안전하게 저장, 관리, 감사할 수 있는 기능을 제공한다.
📌 공식 사이트: https://www.vaultproject.io
📅 관련 글
2024.01.24 - [Networking, Security, Protocols] - Vault 설치와 사용법
2024.11.08 - [Open Source Software] - Vaultwarden(Bitwarden)이란?
Vault 작동원리
Vault는 기본적으로 토큰(Token)을 기반으로 작동하며, 이 토큰은 정책(Policy)과 연결된다.
각 정책은 경로(Path) 단위로 정의되며, 해당 경로에 어떤 권한을 부여할지 설정하는 방식이다.
Vault의 기본 워크플로는 아래와 같이 4단계로 구성된다.
단계 | 설명 |
1. 인증(Authentication) | 클라이언트가 Vault에 자신을 인증 |
2. 검증(Validation) | Github, LDAP 등 외부 시스템과 연동해 신뢰성 확인 |
3. 권한 확인(Authorization) | 클라이언트의 정책에 따라 어떤 경로에 어떤 작업이 가능한지 확인 |
4. 액세스(Access) | 정책에 따라 Secret, Key 등에 접근 허용 |
Vault 주요기능
요즘 기업들은 각 팀마다 따로 Secret을 관리하는 경우가 많아, 보안 리스크가 상당하다.
Vault는 이러한 자격 증명 및 Secret을 중앙 집중화하여 관리할 수 있는 강력한 솔루션이다.
Vault가 제공하는 주요 기능은 아래와 같다.
기능 | 설명 |
Secure Secret Storage | Secret을 암호화해 저장하고, 원본 데이터에 직접 접근해도 노출되지 않음 |
동적 비밀(Dynamic Secret) | AWS IAM 키, DB 계정 등을 요청 시 생성하고 자동 폐기 |
데이터 암호화(Encryption as a Service) | Vault가 데이터 저장 없이 암호화/복호화 서비스 제공 |
임대 및 갱신(Lease & Renewal) | 모든 Secret에 임대 기간을 부여하고, 자동 폐기 또는 갱신 지원 |
해지(Revocation) | Secret을 즉시 폐기하거나, 특정 사용자/경로 전체를 일괄 폐기 |
Vault 아키텍처
1️⃣ 초기화 단계(Initialization Phase)
클라이언트는 Vault 초기화 요청을 보낸다. 이는 Vault 서버의 /v1/sys/init 엔드포인트에 대한 POST 요청을 통해 수행된다
Vault 서버는 초기화 시 마스터 키와 초기 토큰을 스토리지 백엔드에 저장한다. 이는 잠금 해제 프로세스와 Vault에 대한 초기 액세스에 중요하다.
스토리지 백엔드는 이러한 키와 토큰의 저장을 승인한다.
Vault 서버는 잠금 해제 키와 초기 루트 토큰을 클라이언트에 반환한다. 이 잠금 해제 키는 다음 단계에서 Vault를 잠금 해제하는 데 사용된다.
2️⃣ 봉인 해제 단계(Unseal Phase)
Vault는 처음에는 잠긴 상태이므로 잠금 해제 키를 사용해 잠금을 해제해야 한다.
클라이언트는 Vault 서버에 잠금 해제 요청(/v1/sys/unseal에 대한 POST 요청)을 반복적으로 보낸다.
Vault 서버는 각 개봉 키를 확인한다.
충분한 양의 올바른 잠금 해제 키가 제공되면 Vault가 잠금 해제되어 작동하게 된다.
3️⃣ 작동 단계(Operational Phase)
Vault의 잠금이 해제되면 클라이언트는 로그인할 수 있다.
이는 적절한 자격 증명(토큰, 사용자 이름 및 비밀번호 등)이
포함된 로그인 요청을 Vault 서버로 전송하여 수행된다.
정확한 로그인 엔드포인트는 사용된 인증 방법(/v1/auth/{method}/login)에 따라 다르다.
Vault 서버는 스토리지 백엔드를 통해 이러한 자격 증명의 유효성을 검사한다.
검증에 성공하면 Vault 서버는 세션 토큰을 생성하여 클라이언트에 반환한다.
그런 다음 클라이언트는 이 토큰을 사용하여 Vault에서 비밀을 요청할 수 있다.
예를 들어 /v1/secret/data/{name}에 대한 GET 요청은 저장된 비밀을 검색한다.
Vault 서버는 저장소 백엔드에서 요청된 비밀을 검색하여 클라이언트에 반환한다.
마무리
Vault는 단순히 Secret을 저장하는 서비스가 아니라,
✔️ Secret의 수명주기 관리
✔️ 접근 권한 제어
✔️ 외부 시스템과의 연동
✔️ 강력한 감사 및 추적 기능
등을 제공하는 종합 보안 솔루션이다.
✅ 특히, 팀마다 따로 관리되던 각종 인증 정보들을 Vault 하나로 통합함으로써
✅ 보안 강화와 운영 효율성을 동시에 확보할 수 있다.
Reference
'Networking, Security, Protocols' 카테고리의 다른 글
SSID(Service Set Identifier)란? (0) | 2023.04.05 |
---|---|
CDN이란? (2) | 2022.11.11 |
AS, BGP(Border Gateway Protocol)란? (0) | 2022.09.19 |
Mail Server (0) | 2022.02.17 |
HTTPS (0) | 2022.02.11 |