Use um gerenciador de segredos (Vault, provedor de nuvem ou serviço dedicado) e injete em runtime. Nunca commite segredos no git. Rotacione credenciais periodicamente. Em Kubernetes use Secrets ou operador externo.
Por que não .env ou repo
- Risco:
.envou arquivos de config com segredos no repo podem vazar via histórico git, backup ou cópia. Uma vez commitado, considere o segredo comprometido; rotacione e remova do histórico. - Boas práticas: Segredos ficam em um store dedicado. A aplicação ou script de startup obtém em runtime e injeta em ambiente ou config. Sem segredos em código ou repo.
- CI/CD: Pipelines também precisam de segredos. Use store de segredos do pipeline; nunca faça echo ou log.
Gerenciador de segredos e injeção
- Vault: Armazene segredos, credenciais dinâmicas (ex. DB), encryption as a service. App autentica e lê via API. Integre com init container ou sidecar que escreve env ou arquivos antes da app iniciar.
- Nuvem: AWS Secrets Manager, Azure Key Vault, GCP Secret Manager. Integração nativa com workloads na mesma nuvem; IAM controla quem pode ler. Busque no boot ou via SDK em runtime.
- Injeção: Escreva em variáveis de ambiente, arquivos temp (com permissões seguras) ou monte como volumes (Kubernetes Secrets). App lê de env ou arquivo. Restrinja acesso ao filesystem e processo.
Rotação e acesso
- Rotação: Mude senhas de DB, chaves de API e certs em cronograma ou após incidente. O gerenciador pode suportar rotação (ex. credenciais dinâmicas de DB com TTL curto). Atualize a app ou reinicie para pegar novos valores.
- Controle de acesso: Só a app (ou o conjunto mínimo de processos) deve ter acesso de leitura. Use IAM, políticas do Vault ou permissões de arquivo. Audite quem acessou qual segredo e quando. Revogue quando alguém sair ou serviços forem descomissionados.
- Kubernetes: Use Kubernetes Secrets (codificados em base64; considere criptografia em repouso) ou store externo com operador. Não coloque segredos crus em Helm values ou ConfigMaps no git.
Resumo
Use um gerenciador de segredos e injete em runtime. Nunca commite segredos no git. Rotacione credenciais periodicamente. Em Kubernetes use Secrets ou operador externo. Restrinja e audite acesso.




