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 aAdministratorAccess.
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:
1234
"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.
Ver solução de referência
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Listar",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::relatorios"
},
{
"Sid": "Ler",
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::relatorios/*"
}
]
} 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.