Infraestrutura, nuvem e DevOps · Avançado

Gerenciar segredos e chaves

Em uma linha: Um segredo no repositório de código é um segredo vazado — mesmo que o repositório seja privado e mesmo que você o tenha deletado depois.

Onde armazenar

Em um store de segredos gerenciado que injeta valores em tempo de execução, com permissões por serviço e por ambiente, e com log de acesso. Variáveis de ambiente são um mecanismo de transporte, não um lugar de armazenamento.

Rotação periódica

Todo segredo precisa de um processo de rotação que dá para executar em minutos. É necessário quando alguém sai, num vazamento suspeito e rotineiramente. Se a rotação exige tempo de inatividade, não será feita quando precisar.

Suporte duas chaves ativas em paralelo por um tempo breve, para que a rotação seja suave.

Prevenir um vazamento com antecedência

Um scanner de segredos no processo de build e um hook antes de salvar uma mudança, para que um segredo seja bloqueado antes de entrar no histórico. Se já entrou — assuma que vazou, rotacione imediatamente e só então limpe o histórico.

Indo mais fundo

Separe segredos por ambiente de forma absoluta. Uma chave de produção acessível de um ambiente de desenvolvimento anula o sentido da separação, e é assim que a maioria dos vazamentos internos acontece — não com malícia, mas por um script apontado por engano para o endereço errado.