HashiCorp Vault
개념 설명:
Centralize secret management, rotate old credentials, generate credentials on demand, audit client interactions, and support regulatory compliance.
공식문서
비밀(Secrets) 관리를 중앙화하고, 오래된 자격 증명을 교체하며, 필요 시 자격 증명을 생성하고, 클라이언트의 상호작용을 감사하며, 규제 준수를 지원
The kubernetes auth method can be used to authenticate with Vault using a Kubernetes Service Account Token. This method of authentication makes it easy to introduce a Vault token into a Kubernetes Pod.
공식문서 - Kubernetes 인증 방법
Kubernetes 인증 방법은 Kubernetes 서비스 계정 토큰을 사용하여 Vault에 인증하는 데 사용가능
즉, Kubernetes 파드에 Vault 토큰을 쉽게 주입할 수 있음
1) Vault 설치 및 Dev 서버 실행
2) Vault CLI 초기화 및 토큰 설정
1
2
| export VAULT_ADDR='http://127.0.0.1:8200'
export VAULT_TOKEN='root'
|
3) 시크릿 저장 예시
1
| vault kv put secret/enginrect-db password="MyS3cretPassword"
|
4) Kubernetes 인증 메서드 활성화
1
| vault auth enable kubernetes
|
5) Vault에 Kubernetes 관련 설정 추가
1
2
3
4
| vault write auth/kubernetes/config \
token_reviewer_jwt="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \
kubernetes_host="https://kubernetes.default.svc" \
kubernetes_ca_cert=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
|
6) Policy 생성 (예: enginrect-app 전용)
1
2
3
4
| # enginrect-policy.hcl
path "secret/data/enginrect-app/*" {
capabilities = ["read"]
}
|
1
| vault policy write enginrect-policy enginrect-policy.hcl
|
7) Kubernetes ServiceAccount에 권한 연결
1
2
3
4
5
| vault write auth/kubernetes/role/enginrect-role \
bound_service_account_names=enginrect-sa \
bound_service_account_namespaces=default \
policies=enginrect-policy \
ttl=1h
|
- 애플리케이션에서 Vault 에이전트 주입 또는 API 호출 방식으로 시크릿을 가져올 수 있음.