Intermediário

Deny por padrão e explicit deny

Lição 9 · Módulo 3 — Modelo de avaliação

A regra de ouro da AWS

O modelo de autorização da AWS tem duas regras inamovíveis:

  1. Deny por padrão — se nada concede, a request é negada.
  2. Explicit deny vence — um Deny explícito sempre supera qualquer Allow.

Entender essas duas regras resolve 80% das dúvidas de "por que minha policy não está funcionando".

O fluxograma oficial

Para cada request, a AWS executa este fluxograma:

  1. Existe algum Deny explícito em qualquer policy aplicável? → Deny.
  2. Existe algum Allow aplicável? → Allow.
  3. Caso contrário → Deny (implicit).

Quando usar Deny explícito

Deny explícito é a ferramenta para exceções negativas — "permita tudo, exceto isto":

  • Proibir ações destrutivas mesmo para admins (ec2:TerminateInstances sem MFA).
  • Bloquear regiões específicas (aws:RequestedRegion).
  • Forçar uso de TLS (aws:SecureTransport).
  • Impedir alteração de logs (s3:DeleteObject no bucket de CloudTrail).

Implicit deny — o caso silencioso

Implicit deny é o que acontece quando você simplesmente não escreveu uma policy que cobre aquela ação/recurso. Não tem mensagem especial, não tem log diferente. Do ponto de vista do usuário, parece igual a um Deny explícito.

Para debugar, use o IAM Policy Simulator ou o campo errorMessage do CloudTrail — ele diz qual policy decidiu o Deny.

Teste rápido

Um usuário tem AdministratorAccess + uma policy com Deny s3:DeleteObject em * com Condition aws:MultiFactorAuthPresent=false. Ele chamou DeleteObject com MFA ativa. Resultado?

A mesma policy, mas ele chama DeleteObject SEM MFA. Resultado?

Laboratório — ataque e defesa

Escreva uma policy que permita tudo em S3, mas bloqueie a exclusão de objetos no bucket logs-imutaveis e no seu conteúdo. Use dois statements: um Allow amplo + um Deny específico.

Laboratório — escreva a policy

Permita toda ação S3 em qualquer recurso, EXCETO s3:DeleteObject no bucket 'logs-imutaveis' e seus objetos.

Resumo

Deny por padrão é o piso; explicit deny é o teto. Entre eles, a união dos Allows define o que é possível. Use Deny explícito com parcimônia, para proteger o que é crítico mesmo contra humanos com poder demais.

Referência Well-Architected

Esta lição fundamenta as boas práticas de gestão de permissões do Well-Architected Framework — dominar a avaliação é pré-requisito para qualquer design de permissões seguro.

Referências

Terminou esta lição?

Seu progresso fica salvo apenas neste navegador.