Vault 쿠버네티스 키 관리
Vault 쿠버네티스 키 관리 (Vault Kubernetes Key Management)
vault-kube-kms 플러그인으로 쿠버네티스 클러스터가 Vault Enterprise로 저장 데이터(at-rest)를 암호화하는 방법을 다룹니다.
출처: 문서
본문
베타 기능이에요. 베타 기능은 안정적이지만 아직 불완전할 수 있고 변경될 수 있어요. 프로덕션 Vault 배포에 베타 기능을 쓰는 것은 권장하지 않습니다.
Enterprise에요. 적절한 Vault Enterprise 라이선스가 필요합니다.
Vault Kubernetes Key Management는 쿠버네티스 KMS v2 플러그인(Vault 플러그인이 아니라)인 vault-kube-kms를 제공해요.
Vault Kubernetes Key Management는 쿠버네티스 클러스터가 저장 데이터 암호화(encryption at rest)에 Vault Enterprise를 사용하게 해 줍니다. 쿠버네티스 API 서버는 DEK(데이터 암호화 키) 시드(seed)로 클러스터 데이터를 암호화·복호화하는 DEK를 생성해요. API 서버는 키 암호화 키(KEK)를 클러스터에 저장하는 대신, vault-kube-kms 프로세스를 호출해 DEK 시드를 암호화·복호화합니다.
vault-kube-kms 프로세스는 쿠버네티스 컨트롤 플레인에서 실행되며, API 서버가 봉투 암호화(envelope encryption)에 사용하는 KMS v2 호환 gRPC 엔드포인트를 노출해요.
vault-kube-kms 프로세스는 EncryptionConfig와 kube-apiserver 매니페스트를 수정할 권한이 있는 쿠버네티스 클러스터에서만 실행할 수 있어요.
동작 방식 (How it works)
쿠버네티스 클러스터 관리자가 클러스터에 KMS 암호화를 활성화하거나, Vault 클러스터 관리자가 Transit 키를 회전하면, 쿠버네티스 API 서버가 vault-kube-kms 프로세스에 DEK 시드를 암호화하라는 gRPC 호출을 보내요.
시작 시 쿠버네티스 API 서버는 vault-kube-kms 프로세스를 호출해 이전에 암호화된 DEK를 복호화합니다.
vault-kube-kms 프로세스는 암호화·복호화 요청을 Vault 서버로 전달하고, Vault 서버는 Transit 시크릿 엔진 플러그인으로 암호화·복호화 작업을 수행해요. 그러면 쿠버네티스 API 서버는 DEK 시드에서 생성한 일회용 DEK로 리소스 데이터를 로컬에서 암호화합니다. API 서버는 암호화된 DEK를 etcd에 저장하고, KEK 암호화에 대한 암호 권한은 Vault가 유지해요.
사용 사례 (Use cases)
- 저장 데이터의 쿠버네티스 시크릿 암호화 — 애플리케이션 코드를 바꾸지 않고, etcd에 저장된 시크릿을 Vault 기반 암호화로 보호해요.
- 키 관리와 정책 중앙화 — 중앙 집중식 감사와 RBAC 적용으로 Vault에서 암호화 키와 접근 정책을 관리해요.
- 키 회전 워크플로 지원 — 기존 데이터의 복호화 능력을 유지하면서 Vault에서 키를 회전해요.
- 운영 가시성 향상 — Vault 감사 로그와 Vault Kubernetes Key Management 로그·메트릭으로 키 사용량, 지연 시간, 오류를 확인해요.
지원되는 쿠버네티스 버전
IBM이 다음 쿠버네티스 마이너 릴리스에 대해 Vault를 테스트하고 검증합니다. IBM은 다른 쿠버네티스 버전과의 Vault는 지원하지 않지만, 동작할 수는 있어요.
- 1.36
- 1.35
- 1.34
- 1.33
- 1.32
지원되는 쿠버네티스 배포판
Vault Kubernetes Key Management는 다음 쿠버네티스 배포판에서 검증되었어요.
- Red Hat OpenShift
- 클러스터 관리자가 EncryptionConfig와 kube-apiserver 매니페스트를 수정할 수 있는 셀프 매니지드·매니지드 쿠버네티스 배포판.