Avançado

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:

  1. Deploy inicial com policy ampla (ex.: s3:*).
  2. Deixe rodar 30–90 dias em produção.
  3. Gere a policy sugerida com o Access Analyzer.
  4. Revise, ajuste, substitua a original.
  5. 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.

bash
1
2
aws iam generate-service-last-accessed-details --arn arn:aws:iam::111:role/AppRole
aws 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

  1. Comece no console: o IAM Policy Editor tem autocomplete e alerta de permissões amplas.
  2. Prefira ações específicas a s3:*, ec2:*, etc.
  3. Restrinja Resource a ARNs específicos. É o maior ganho de segurança.
  4. Use conditions para limitar contexto (região, IP, tags).
  5. 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.