O arquivo criptografado (secrets/production.enc.env) é commitado no git. Cada valor é criptografado individualmente — chaves permanecem visíveis, valores são ENC[AES256_GCM,...].
Decriptação
A pipeline de CD decripta usando a chave privada age armazenada como SOPS_AGE_KEY nos secrets do GitHub Actions:
Editando Secrets
Se o .env no servidor for modificado diretamente, re-criptografe:
Depois copie production.enc.env para o repositório e commite.
Nota: O parser dotenv do SOPS não suporta comentários (#) ou linhas em branco. Sempre remova-os antes de criptografar.
Arquivos
Arquivo
Commitado
Propósito
.sops.yaml
Sim
Mapeia padrões de arquivo para chave pública age
secrets/production.enc.env
Sim
Secrets de produção criptografados
secrets/*.env
Não (.gitignore)
Secrets decriptados (nunca commitados)
secrets/
Não (.dockerignore)
Excluído do contexto de build do Docker
Gerenciamento de Chaves
Chave
Localização
Acesso
Chave pública
.sops.yaml (no repo)
Qualquer pessoa pode criptografar
Chave privada
Secret do GitHub Actions SOPS_AGE_KEY
Apenas pipeline de CD e desenvolvedores autorizados
Cópia do desenvolvedor
~/.age/nexo-secrets.key
Máquinas individuais de desenvolvedores
Rotação de Chaves
Para rotacionar a chave age:
Gerar novo par de chaves: age-keygen -o new-key.key
Atualizar .sops.yaml com a nova chave pública
Re-criptografar todos os secrets: sops updatekeys secrets/production.enc.env
Atualizar SOPS_AGE_KEY nos Secrets do GitHub
Distribuir nova chave privada para desenvolvedores autorizados