Referência

Campos de uma policy — cheatsheet

Consulta rápida de todos os elementos JSON de uma policy IAM.

Esqueleto básico

A estrutura mínima de uma policy identity-based:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "RotuloOpcional",
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::bucket/*"
    }
  ]
}

Tabela de referência rápida

Campo Obrigatório? Tipo Descrição curta
Version Sim String fixa Sempre "2012-10-17"
Id Não String ID opcional (usado em algumas resource policies)
Statement Sim Objeto ou array As declarações da policy
Sid Não String Rótulo legível do statement
Effect Sim "Allow" ou "Deny" Concede ou nega
Principal Só em resource-based Objeto, string ou "*" Quem pode executar a ação
NotPrincipal Não Objeto Todos exceto estes principals
Action Sim (ou NotAction) String ou array Ações permitidas/negadas
NotAction Alternativa a Action String ou array Todas as ações exceto estas
Resource Sim em identity-based ARN ou array de ARNs Recursos alvo
NotResource Alternativa a Resource ARN ou array Todos os recursos exceto estes
Condition Não Objeto aninhado Restrições contextuais (MFA, IP, tags, região…)

Version

Valores válidos: "2012-10-17" (atual) · "2008-10-17" (legado).

Define a versão da linguagem. Sempre use "2012-10-17" em policies novas — features como variáveis (${aws:username}) e wildcards só funcionam nela.

Documentação oficial

Id

Onde aparece: algumas resource policies (SQS, SNS). Ignorado em identity-based.

É apenas uma string identificadora da policy inteira. Raramente usado na prática.

Documentação oficial

Statement

Valor: um objeto ou um array de objetos. Cada objeto é avaliado independentemente.

Não há ordem nem prioridade entre statements. O resultado final é determinístico — um Deny qualquer vence todos os Allows.

Documentação oficial

Sid

Valor: string alfanumérica, única dentro da policy.

Apenas rótulo legível, ignorado pela avaliação. Aparece em logs e ajuda a identificar qual statement causou uma decisão.

Documentação oficial

Effect

Valores válidos: "Allow" ou "Deny". Case-sensitive.

Regra de ouro: Deny sempre vence Allow. E ausência de Allow = Deny implícito.

Documentação oficial

Principal / NotPrincipal

Onde aparece: apenas em resource-based policies.

Formatos de valor:

  • { "AWS": "arn:aws:iam::111:user/alice" } — IAM User ou Role específico
  • { "AWS": "arn:aws:iam::111:root" } — qualquer identidade da conta 111
  • { "Service": "lambda.amazonaws.com" } — serviço AWS
  • { "Federated": "arn:aws:iam::111:saml-provider/MyIdP" } — IdP federado
  • { "CanonicalUser": "..." } — usuário canônico (legado S3)
  • "*" — qualquer um, incluindo anônimo

Principal · NotPrincipal

Action / NotAction

Formato: servico:Operacao (PascalCase do lado direito).

String ou array. Aceita wildcards * e ?.

Exemplos de Action

  • "s3:GetObject" — uma ação específica
  • ["s3:GetObject", "s3:ListBucket"] — várias ações
  • "s3:*" — todas as ações do S3
  • "s3:Get*" — todas do S3 que começam com Get
  • "*" — todas de todos os serviços (admin)

Lista completa de ações por serviço: Service Authorization Reference.

Action · NotAction

Resource / NotResource

Formato: ARN completo ou lista. Aceita wildcard *.

Estrutura do ARN:

arn:aws:<servico>:<regiao>:<account-id>:<recurso>

Exemplos

  • "arn:aws:s3:::meu-bucket" — bucket específico
  • "arn:aws:s3:::meu-bucket/*" — objetos dentro do bucket
  • "arn:aws:ec2:us-east-1:111:instance/*" — todas as instâncias na região/conta
  • "*" — qualquer recurso (válido só para ações globais)

Em resource-based policies, Resource é opcional — o recurso é implicitamente aquele onde a policy está anexada.

Resource · NotResource · Formato de ARN

Condition

Estrutura:

"Condition": {
  "<operador>": {
    "<context-key>": "<valor>"
  }
}

Operadores comuns

  • StringEquals, StringNotEquals, StringLike
  • NumericEquals, NumericLessThan, NumericGreaterThan
  • DateGreaterThan, DateLessThan
  • Bool, BoolIfExists
  • IpAddress, NotIpAddress
  • ArnLike, ArnEquals

Context keys frequentes

  • aws:MultiFactorAuthPresent — MFA foi usada?
  • aws:SourceIp — IP de origem
  • aws:RequestedRegion — região da request
  • aws:SecureTransport — conexão HTTPS?
  • aws:PrincipalTag/<key> — tag do principal
  • aws:ResourceTag/<key> — tag do recurso

Condition · Operadores · Global context keys

Onde aprofundar

Voltar para a trilha