Armazenando segredos com segurança
Lição 6 · Módulo 2 — Autenticação e segredos
Todo app tem segredos
Senhas de banco de dados, API keys de terceiros, tokens de webhook, certificados… Aplicações precisam desses valores em runtime. A pergunta é: onde guardar?
O que NÃO fazer
- Hardcoded no código — vai parar em Git, screenshot, log.
- Em variáveis de ambiente em texto claro (ex.:
Environmentde Lambda sem KMS) — fica visível no console e CloudTrail. - Em arquivos
.envcommitados — o vetor clássico de vazamento público. - Em buckets S3 "privados" sem criptografia — um bucket policy frouxa e acabou.
Secrets Manager
AWS Secrets Manager é o serviço dedicado a segredos. Principais benefícios:
- Criptografia em repouso com KMS.
- Rotação automática para RDS, Redshift, DocumentDB — a AWS troca a senha pra você.
- Auditoria completa via CloudTrail: toda leitura de segredo fica registrada.
- Integração nativa com ECS, Lambda, EKS (via CSI driver).
Sua aplicação lê o segredo com o SDK:
123
const { SecretsManagerClient, GetSecretValueCommand } = require("@aws-sdk/client-secrets-manager");const r = await client.send(new GetSecretValueCommand({ SecretId: "prod/db/password" }));const senha = r.SecretString; Systems Manager Parameter Store
Parameter Store
é o primo mais barato. Serve para configurações (string, stringList)
e segredos leves (tipo SecureString, criptografado com KMS).
| Secrets Manager | Parameter Store | |
|---|---|---|
| Custo | $0.40/segredo/mês + leituras | Standard: grátis |
| Rotação automática | Sim (com Lambda) | Não nativo |
| Tamanho máx. | 64 KB | 4 KB (standard), 8 KB (advanced) |
| Versionamento | Sim, com labels | Sim, por versão numérica |
| Caso de uso | Senhas, API keys críticas | Config, feature flags, segredos simples |
Dando acesso ao segredo
Seu workload (Lambda, ECS, EC2) acessa via role. Policy mínima:
12345
{ "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:prod/db/password-*"} O -* no fim do ARN cobre o sufixo aleatório que o Secrets Manager adiciona para evitar colisão de nomes.
Teste rápido
Você tem uma lista de 200 feature flags boolean usadas pela aplicação. Onde guardar?
Resumo
Nunca hardcode. Para segredos críticos (DB, API keys externas): Secrets Manager. Para configuração e flags: Parameter Store. Acesse sempre via role, nunca via access key embutida.
Referência Well-Architected
Esta lição está alinhada com a boa prática Store and use secrets securely do Well-Architected Framework.
Referências
Terminou esta lição?
Seu progresso fica salvo apenas neste navegador.