Intermediário

Action e Resource

Lição 4 · Módulo 1 — Átomos do IAM

Onde 90% dos erros acontecem

Agora que você conhece a anatomia da policy, vamos aprofundar nos dois campos onde mais se erra: Action e Resource.

Action

Formato: servico:Operacao. Sempre em PascalCase do lado direito. A lista completa de ações por serviço está na Service Authorization Reference.

  • s3:GetObject — lê um objeto no S3.
  • ec2:StartInstances — liga instâncias EC2.
  • iam:PassRole — permite passar uma role para um serviço.

Wildcards funcionam como em shell:

  • s3:* — todas as ações do S3.
  • s3:Get* — todas as ações do S3 que começam com Get (GetObject, GetBucketPolicy, GetObjectTagging…).
  • * — literalmente todas as ações de todos os serviços. Equivale a AdministratorAccess.

Resource (ARN)

ARN = Amazon Resource Name. Endereço único de qualquer recurso na AWS.

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

Exemplos:

  • arn:aws:s3:::meu-bucket — o bucket (S3 não usa região/conta no ARN).
  • arn:aws:s3:::meu-bucket/relatorio.pdf — um objeto dentro do bucket.
  • arn:aws:ec2:us-east-1:111122223333:instance/i-0abc123 — uma instância EC2.
  • arn:aws:iam::111122223333:role/AppRole — uma role (IAM também não tem região).

Partes vazias são normais — o serviço não usa aquele campo.

A diferença crítica: bucket vs objeto

No S3, operações de bucket (como ListBucket) atuam sobre o ARN do bucket. Operações de objeto (como GetObject) atuam sobre o ARN do objeto. Por isso você frequentemente vê os dois ARNs juntos:

JSON
1
2
3
4
"Resource": [
"arn:aws:s3:::meu-bucket",
"arn:aws:s3:::meu-bucket/*"
]

Teste rápido

Você quer permitir listar e ler objetos do bucket 'relatorios'. Qual combinação está correta?

Laboratório

Chegou sua vez. Escreva a policy abaixo e clique em Testar — o motor valida contra os casos esperados.

Laboratório — escreva a policy

Escreva uma policy que permita LISTAR o conteúdo do bucket 'relatorios' e LER objetos dentro dele. Nada mais.

Resource: "*"

Algumas ações são globais e não se aplicam a um recurso específico — por exemplo ec2:DescribeInstances lista todas as instâncias. Nesses casos, Resource: "*" é o único valor válido e não é inseguro. Para ações que suportam recurso específico (como s3:GetObject), Resource: "*" é excessivo.

Fim do Módulo 1

Você agora entende os átomos: principal, credenciais, a estrutura de uma policy e como Action e Resource casam com o mundo real. No próximo módulo mergulhamos no modelo de avaliação — como a AWS decide cada request combinando várias policies.

Referência Well-Architected

Esta lição aplica a boa prática Grant least privilege access do Well-Architected Framework: restringir Resource a ARNs específicos é a forma mais direta de seguir o princípio do menor privilégio.

Referências

Terminou esta lição?

Seu progresso fica salvo apenas neste navegador.