2.6 KiB
Vault and Vault Secrets Operator
Ownership
- Vault workload:
gitops/platform/vault - VSO Helm values:
gitops/platform/secret-delivery/base/helm/values.yaml - VaultConnection/VaultAuth:
gitops/platform/secret-delivery/base - lab secret declarations:
gitops/platform/secret-delivery/overlays/lab
Vault KV-v2가 secret source of truth이며, workload는 VSO가 만든 Kubernetes Secret만 소비합니다.
Bootstrap order
VSO controller/CRD install
Vault workload Running
Vault init + unseal
Kubernetes auth + policy/role
KV seed
VaultConnection/VaultAuth/pre-data VaultStaticSecret apply
pre-data destination Secret wait
PostgreSQL/MinIO/Keycloak apply
MinIO registry access key generate -> Vault
registry VaultStaticSecret/apply
consumer workloads apply
이 순서 때문에 all/ aggregate를 직접 apply할 수 없습니다.
Access split
| VaultAuth | Policy | Read paths |
|---|---|---|
vault-auth-auth-platform |
vso-auth-platform |
identity-postgres/*, auth-server/*, keycloak/*, oauth2-proxy/* |
vault-auth-storage |
vso-storage |
minio/*, docker-registry/* |
현재 lab은 두 auth boundary가 같은 namespace와 ServiceAccount를 공유합니다. 실무 namespace 분리 시 workload/domain별 ServiceAccount, VaultAuth, policy, bound namespace를 함께 분리해야 합니다.
Secret catalog
| Domain | Kubernetes Secret |
|---|---|
| PostgreSQL | identity-postgres-superuser, keycloak-db, auth-server-db |
| Keycloak | keycloak-db-operator, keycloak-bootstrap-admin-operator, keycloak-client-auth-server-ingress |
| oauth2-proxy | oauth2-proxy-secrets |
| MinIO | minio-tenant-env |
| registry | docker-registry-minio, docker-registry-basic-auth, docker-registry-pull-credentials |
VSO destinations use overwrite: true. auth-server와 oauth2-proxy는 지원되는
Secret 변경에 rollout target을 선언합니다. DB/MinIO/registry credential은
backend 상태를 먼저 바꾸는 조정된 rotation이 필요합니다.
docker-registry-minio는 MinIO가 생성한 access key를 Vault에 기록한 뒤
35-registry에서 동기화합니다. 다른 정적 seed와 같은 시점에 미리 만들지
않습니다.
Key material
vault-init-keys.json에는 root token과 unseal material이 들어가므로 Git에
들어가면 안 됩니다. 기본 lab 파일도 평문이며 단지 ignored/0600일 뿐입니다.
VAULT_KEYS_FILE=/secure/path/lab-vault-init.json \
bash scripts/bin/bootstrap.sh lab
과거 Git 이력에 포함된 값은 삭제만으로 복구되지 않습니다. live credential 회전과 원격 history 정리는 별도 incident response로 수행합니다.