O Que É Gestão de Secrets? Mantendo Credenciais Fora do Código
Gestão de secrets é a disciplina de armazenar credenciais com segurança, entregá-las ao processo certo no momento certo e nunca deixá-las vazar para o código ou os logs.
Todo pipeline precisa de secrets: um token para dar push em uma imagem, uma chave para fazer deploy, uma senha para rodar testes de integração. A gestão de secrets é o conjunto de práticas e ferramentas que mantém esses valores fora do controle de versão, criptografados em repouso, restritos a quem precisa deles e auditáveis. Bem feita, é invisível. Mal feita, é assim que brechas começam.
O que conta como um secret
- Chaves de API e tokens de acesso para serviços de terceiros.
- Credenciais de nuvem e chaves de assinatura.
- Senhas de banco de dados e connection strings.
- Chaves privadas, certificados e secrets de assinatura de webhook.
Os princípios centrais
Uma boa gestão de secrets se apoia em algumas ideias: armazenar secrets criptografados e fora do repo, conceder acesso na base do necessário para saber, rotacionar valores regularmente e auditar quem leu o quê e quando. Secrets devem ser injetados em tempo de execução, nunca commitados.
Como a CI consome secrets
A maioria dos sistemas de CI oferece um store criptografado (secrets do GitHub Actions, variáveis de CI do GitLab) que injeta valores como variáveis de ambiente ou arquivos no início do job. A plataforma os mascara nos logs para que não sejam impressos por acidente. O job usa o secret, depois o ambiente é destruído.
Erros comuns
As falhas clássicas são hardcodar uma chave em um arquivo de config, ecoar um secret nos logs, passá-lo como argumento de linha de comando visível no ps, ou conceder a um token muito mais escopo do que o job precisa. Cada uma amplia o raio de dano se algo der errado.
Reduzindo a necessidade de secrets armazenados
A jogada mais forte é armazenar menos secrets de vida longa em primeiro lugar. Tokens de vida curta emitidos por job via OIDC removem a credencial permanente por completo, então não há nada durável para vazar.
Secrets e o runner
Um secret é tão seguro quanto a máquina que o manipula. Em um runner compartilhado e de vida longa, um secret vazado ou remanescente pode ser lido pelo próximo job. Runners isolados e efêmeros (como os runners gerenciados da Latchkey) destroem o ambiente após cada job, então os secrets nunca sobrevivem ao trabalho que precisou deles.
Principais conclusões
- A gestão de secrets mantém credenciais criptografadas, restritas, rotacionadas e fora do código.
- A CI injeta secrets em tempo de execução e os mascara nos logs, depois destrói o ambiente.
- Tokens de vida curta e runners efêmeros reduzem por quanto tempo um secret pode ser abusado.