Implantação

OpenBao auto-unseal · GCP Cloud KMS

Auto-unseal do OpenBao do diagnos com o Google Cloud KMS via Workload Identity e um único papel de cifrar/decifrar.

Nesta página

English · Português (Brasil)

Envolve a master key do OpenBao com uma chave do Cloud KMS. Verificado contra openbao.org/docs/configuration/seal/gcpckms (docs da v2.6.x) — veja seal.hcl para o stanza exato que este overlay traz.

1. Criar o key ring e a chave#

gcloud kms keyrings create diagnos-openbao --location=<region>
gcloud kms keys create unseal --location=<region> --keyring=diagnos-openbao \
  --purpose=encryption

2. Papel IAM mínimo#

Conceda à GSA abaixo exatamente roles/cloudkms.cryptoKeyEncrypterDecrypter nesta única chave — não no key ring, não no projeto inteiro:

gcloud kms keys add-iam-policy-binding unseal \
  --location=<region> --keyring=diagnos-openbao \
  --member="serviceAccount:<gsa-name>@<project>.iam.gserviceaccount.com" \
  --role="roles/cloudkms.cryptoKeyEncrypterDecrypter"

3. Vínculo do Workload Identity#

Vincule a GSA à KSA openbao (namespace openbao) para a anotação que ../kustomization.yaml aplica por patch no ServiceAccount de fato resolver para credencial ambiente:

gcloud iam service-accounts add-iam-policy-binding \
  <gsa-name>@<project>.iam.gserviceaccount.com \
  --role="roles/iam.workloadIdentityUser" \
  --member="serviceAccount:<project>.svc.id.goog[openbao/openbao]"

4. Aplicar#

# preencha o project/region/key_ring/crypto_key de seal.hcl e a
# anotação REPLACE_ME da GSA antes de aplicar
kubectl apply -k deploy/k8s/autounseal/gcp

Reaproveitado pelo Compose#

Defina OPENBAO_SEAL=gcp no deploy/compose/.env. Não existe Workload Identity fora do GKE, então aponte GOOGLE_APPLICATION_CREDENTIALS para uma chave JSON de service account montada no container em vez disso — veja o comentário naquele .env.example.