Skip to content

feat(vault): DigitalOcean overlay with GCP Cloud KMS auto-unseal - #53

Merged
danielgines merged 1 commit into
mainfrom
feat/vault-digitalocean-gcpckms
Aug 23, 2026
Merged

feat(vault): DigitalOcean overlay with GCP Cloud KMS auto-unseal#53
danielgines merged 1 commit into
mainfrom
feat/vault-digitalocean-gcpckms

Conversation

@danielgines

Copy link
Copy Markdown
Member

Primeiro passo do suporte a DigitalOcean. Puramente aditivo — nenhum arquivo existente muda, e nenhum deployment AWS ou Azure carrega este overlay.

Por que GCP KMS num cluster DigitalOcean

A DigitalOcean não tem serviço gerenciado de KMS. Para auto-unseal sobram duas opções: um KMS externo, ou o operador redigitando unseal shares a cada restart de pod. Este PR padroniza a primeira.

A dependência cross-cloud é real e está dita no arquivo: um Vault na DigitalOcean não abre enquanto o Google KMS estiver inalcançável. É a mesma forma de dependência que AWS e Azure já têm com o KMS deles — só que atravessando nuvem.

Sem credencial estática no cluster

Vault autentica no Google por Workload Identity Federation: token projetado da ServiceAccount, com audience escopada ao provider da federação, trocado por token de curta duração que impersona a service account com encrypt/decrypt na chave. Não existe JSON de service account, então não há o que vazar nem rotacionar.

O arquivo de configuração de credencial não carrega chave privada — o Google o documenta como não-confidencial — por isso ele monta de ConfigMap e não de Secret.

Escopo

Este arquivo carrega só o que o platform-root não injeta, espelhando vault-aws.yaml. A stanza de seal e a fiação da federação vêm no PR correspondente do estabilis-platform.

Permissões exigidas na chave, conforme a doc do gcpckms do Vault: cloudkms.cryptoKeyVersions.useToEncrypt, useToDecrypt, cloudkms.cryptoKeys.get.

DigitalOcean has no managed KMS, so auto-unseal there has no in-provider
option: either an external KMS, or operator-held unseal shares re-entered on
every pod restart. This standardises on GCP Cloud KMS via seal "gcpckms".

Vault reaches that key through Workload Identity Federation — a projected
ServiceAccount token, audience-scoped to the WIF provider, exchanged for a
short-lived Google token. No service account JSON key exists, so none can leak.
The credential configuration file describing the exchange carries no private
key (Google documents it as non-confidential), which is why it mounts from a
ConfigMap rather than a Secret.

The file carries only what platform-root does not inject, mirroring
vault-aws.yaml. Additive: no existing file changes, and no AWS or Azure
deployment loads it.
@danielgines
danielgines merged commit 0e797f7 into main Aug 23, 2026
5 checks passed
@danielgines
danielgines deleted the feat/vault-digitalocean-gcpckms branch August 23, 2026 04:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant