Básico

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.: Environment de Lambda sem KMS) — fica visível no console e CloudTrail.
  • Em arquivos .env commitados — 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:

JavaScript
1
2
3
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 ManagerParameter Store
Custo$0.40/segredo/mês + leiturasStandard: grátis
Rotação automáticaSim (com Lambda)Não nativo
Tamanho máx.64 KB4 KB (standard), 8 KB (advanced)
VersionamentoSim, com labelsSim, por versão numérica
Caso de usoSenhas, API keys críticasConfig, feature flags, segredos simples

Dando acesso ao segredo

Seu workload (Lambda, ECS, EC2) acessa via role. Policy mínima:

JSON
1
2
3
4
5
{
"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.