Files
project-infra/docs/vault-vso.md
T

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로 수행합니다.