Cloud Security Maturity Model·AWS v3.0.0

Arraste para explorar · faça pinça para ampliar

Fundacional Segurança de aplicações

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 --scan

Como 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

AWS Secrets Manager Amazon Q Developer

Preços

Teste gratuito · 30 dias

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.

Mapeamentos de frameworks

AWS CAF

Well-Architected

NIST CSF

Referências