Least privilege na prática
Lição 13 · Módulo 4 — Permissões em escala
Do ideal à realidade
Todo mundo concorda que least privilege — conceder exatamente as permissões necessárias, nada a mais — é o caminho certo. Na prática, quase ninguém aplica. O motivo: você não sabe de antemão o que a aplicação vai precisar.
A abordagem madura é iterativa: comece permissivo, observe, reduza. Repita.
IAM Access Analyzer — geração de policy
O policy generation do Access Analyzer lê os últimos 90 dias de CloudTrail para uma role e gera automaticamente uma policy contendo apenas as ações que foram realmente usadas.
Fluxo típico:
- Deploy inicial com policy ampla (ex.:
s3:*). - Deixe rodar 30–90 dias em produção.
- Gere a policy sugerida com o Access Analyzer.
- Revise, ajuste, substitua a original.
- Repita se os padrões de uso mudarem.
Last accessed — o que realmente foi usado
O Access Advisor (também chamado service last accessed data) mostra, para cada identidade, a última vez que cada serviço foi usado.
12
aws iam generate-service-last-accessed-details --arn arn:aws:iam::111:role/AppRoleaws iam get-service-last-accessed-details --job-id <id> Use para identificar permissões concedidas mas nunca exercidas. Serviços não usados em 90+ dias são candidatos imediatos a remoção.
Permissões action-level
Além de "quais serviços", você pode ver quais ações específicas dentro
de um serviço foram usadas. Disponível para S3, IAM, Lambda, EC2 e mais.
Assim, s3:* pode ser reduzido a s3:GetObject + s3:ListBucket
com base em dados reais.
Unused access findings
O Unused Access Analyzer gera findings automáticos para:
- Roles não assumidas há N dias.
- IAM Users inativos.
- Access keys sem uso.
- Permissões concedidas mas não exercidas.
Configure a idade (padrão 90 dias) e integre com Security Hub para priorização. É a base de um programa contínuo de redução de permissões.
Como escrever políticas minimalistas desde o início
- Comece no console: o IAM Policy Editor tem autocomplete e alerta de permissões amplas.
- Prefira ações específicas a
s3:*,ec2:*, etc. - Restrinja Resource a ARNs específicos. É o maior ganho de segurança.
- Use conditions para limitar contexto (região, IP, tags).
- Reutilize managed policies da AWS apenas como rascunho; raramente são least-privilege.
Teste rápido
Uma role em produção tem AmazonS3FullAccess anexada. O Access Analyzer mostra que, em 90 dias, só foram usadas GetObject e ListBucket em 'reports-prod'. Qual a primeira ação?
Resumo
Least privilege é processo, não evento. Comece pragmático, meça com CloudTrail/Access Analyzer, aperte. Automatize findings via Unused Access Analyzer. Revisite trimestralmente.
Referência Well-Architected
Esta lição está alinhada com as boas práticas Grant least privilege access e Reduce permissions continuously do Well-Architected Framework.
Referências
Terminou esta lição?
Seu progresso fica salvo apenas neste navegador.