1. What is Vault?
- 중앙 집중화된 secret 관리 및 접근 제어를 제공하는 도구
- ✅ 모듈형 설계
- ✅ 플러그인 생태계
- ➡️ 기존 시스템과 손쉽게 통합 가능
Plugin
- Vault의 기능 단위 블록
- ✅ "데이터가 어떻게 처리되고, 클라이언트가 어떻게 접근하는지" 제어함
- ✅ 내장 플로그인은 기본 포함되어 별도 등록없이 "enable" 해서 사용함
- ✅ 외부 플러그인은 별도 배치 및 등록이 필요함
Who can access data in Vault?
- Vault는 저장되는 데이터에 대한 접근을 엄격히 제한함
- ✅ 데이터는 저장 시 자동으로 암호화됨
- ✅ 접근은 인증과 인가 과정을 반드시 거쳐야 함
- ✅ 모든 인증/인가 시도를 감사 로그로 기록함
2. How Vault works
Core Workflow

- 인증: 토큰, LDAP 프로토콜, 외부 클라우드 프로바이더, AppRole 등을 통해 인증
- 검증: 인증 정보를 통해 사용자를 확인
- 인가: 클라이언트 토큰에 연결된 정책을 확인하여 접근 권한 체크
- 응답
- 요청 경로에 따라 Secrets Engine으로 전달됨
- 액세스 토큰 발급: 요청자에 적용되는 보안 정책과 매핑됨. Lease ID 부여
- 시크릿 접근
- 클라이언트는 특정 리소스 경로를 통해 시크릿을 조회하거나 암호화 연산을 요청함
- Lease: 응답받은 토큰/시크릿에는 만료시간이 있어 자동 회수됨
- Audit log: 성공/실패 모든 요청이 기록됨
Encryption Barrier

- vault는 데이터를 저장하기 전에 모두 암호화함
- ✅ 내부에서 암호화된 데이터로 통신함
- ➡️ 스토리지 해킹 시에도 데이터는 노출되지 않음
Shamir Secret Sharing 알고리즘

- Vault 서버는 시작할 때 "sealed 상태"로 실행 됨
- ✅ 이걸 Unseal 해야 내부 데이터를 사용할 수 있음
- ✅ 잠금 해제를 위해서는 Unseal Key가 필요함
- ✅ Unseal Key는 여러 조각으로 쪼개 각 개인에 의해 보관됨
- ➡️ 일정 수의 키 주인이 각각 자신의 키를 가지고 Unseal 해야 데이터 접근 가능
출처