c2.21 Manter os segredos fora do código
Codificar segredos no código arrisca expor uma credencial a qualquer um que possa ler o repositório. Obtenha os segredos em tempo de execução a partir do AWS Secrets Manager e escaneie o código para capturar um segredo enviado antes que ele chegue à produção.
Guia de implementação
Não codifique segredos
Um segredo no código pode ser lido por qualquer um com acesso ao repositório, vaza facilmente para repositórios públicos e é difícil de rotacionar. Se o segredo codificado for uma access key, prefira credenciais temporárias via roles.
Obtenha segredos de longa duração em tempo de execução
Quando o seu código precisa de um segredo genuíno de longa duração (uma senha de banco de dados, uma API key de terceiros), armazene-o no AWS Secrets Manager e recupere-o em tempo de execução. Conceda à carga permissão para ler o segredo por meio da sua role IAM (instance profile, role de execução de Lambda/ECS), de modo que não haja credenciais embarcadas no código. O Secrets Manager pode rotacionar automaticamente os segredos compatíveis; veja as boas práticas.
Capture os segredos antes que cheguem à produção
Escaneie o código em busca de segredos enviados com ferramentas como o git-secrets, e integre o escaneamento de segredos ao seu pipeline para que um segredo detectado bloqueie a promoção. O Amazon Q Developer também sinaliza segredos enquanto o código é escrito.
Busque em runtime, escaneie antes do commit
Recupere o segredo em tempo de execução em vez de codificá-lo:
aws secretsmanager get-secret-value \
--secret-id prod/db/password \
--query SecretString --output text
Adicione um scan do repositório para que um segredo commitado bloqueie o pipeline:
git secrets --install
git secrets --register-aws
git secrets --scanComo validar
- Você usa o AWS Secrets Manager (ou similar) para armazenar e rotacionar segredos como senhas de banco de dados?
- Você impede que segredos sejam enviados ao código (varredura, verificações pre-commit)?
- Os desenvolvedores são treinados para não armazenar segredos no código?
- O pipeline para quando um segredo é detectado?
Ameaças atendidas
- Segredos no código podem ser pegos por qualquer um com acesso de leitura (testers, revisores) e usados fora do código ou vendidos a adversários.
- Os desenvolvedores podem enviar código para repositórios públicos como o GitHub, expondo as credenciais; os adversários rastreiam ativamente os repositórios em busca delas.
- Segredos codificados são difíceis de rotacionar rapidamente, o que é crítico durante um comprometimento conhecido. Os mesmos riscos se aplicam a segredos em arquivos de configuração enviados junto ao código.
Serviços AWS
Preços
O AWS Secrets Manager custa US$ 0,40 por segredo por mês mais US$ 0,05 por 10.000 chamadas de API, com um teste gratuito de 30 dias. Veja os preços do Secrets Manager.
Cloud Security Maturity Model