IAM: identidades, roles e menor privilégio
Objetivos desta aula
- Distinguir usuário, role e política
- Escrever política mínima
- Eliminar chaves estáticas
IAM é o serviço mais importante da AWS porque erra caro: uma política permissiva transforma um bug em incidente de segurança. Usuário representa pessoa, role é identidade assumível por serviço ou federação, e política é o documento JSON que autoriza ações sobre recursos, com condições.
Menor privilégio é um processo, não um estado: comece restrito, colete as negações reais e libere apenas o necessário. Ferramentas como Access Analyzer e os logs do CloudTrail mostram quais permissões foram efetivamente usadas — base objetiva para reduzir escopo.
A regra prática mais valiosa: aplicação em EC2, Lambda ou ECS usa role anexada à instância/tarefa, e pipeline usa OIDC. Chave de acesso de longa duração só quando não houver alternativa, com rotação obrigatória e nunca em repositório.
1. Quem é quem no IAM
- Usuário: identidade de longa duração (evite para pessoas; prefira IAM Identity Center)
- Grupo: conjunto de usuários que herdam políticas
- Role: identidade assumida temporariamente por pessoas, serviços (EC2, Lambda) ou sistemas externos (GitHub via OIDC)
- Política: documento JSON que diz o que é permitido ou negado
2. Como a AWS avalia uma requisição
Por padrão, tudo é negado. Um Allow explícito libera; um Deny explícito vence qualquer Allow. Além das políticas da identidade, entram políticas de recurso (bucket policy), SCPs da organização e permission boundaries.
3. Anatomia de uma política
Effect, Action (ex.: s3:GetObject), Resource (ARN específico) e Condition (ex.: exigir MFA, restringir região ou tag). Menor privilégio significa ações e recursos específicos, nunca "*" sem necessidade.
4. Roles para serviços
Uma EC2 ou um Pod no EKS (via IRSA/Pod Identity) recebe credenciais temporárias pela role. Nenhuma chave em arquivo, variável ou imagem.
5. Descobrindo o mínimo necessário
Comece restrito, veja o erro AccessDenied no CloudTrail e adicione apenas a ação faltante. O IAM Access Analyzer sugere políticas a partir do uso real.
6. Checagem final
Você deve escrever uma política que permite à API do CloudShop ler só o bucket de imagens e explicar por que um Deny vence um Allow.
Na prática
Política mínima e role para a API
json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "LerEscreverAssetsDoProjeto",
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::cloudshop-assets/uploads/*"
},
{
"Sid": "LerSegredoDoBanco",
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:cloudshop/db-*"
}
]
}Nota de segurança: Nunca use "Action": "*" com "Resource": "*". Se precisar de amplitude, delimite por tag e adicione condição de origem.
Auditoria rápida de IAM
bash
aws sts get-caller-identity
aws iam list-users --query 'Users[].UserName'
aws iam list-access-keys --user-name deploy-antigo
aws iam get-account-summary --query 'SummaryMap.AccountMFAEnabled'
aws iam generate-credential-report >/dev/null && aws iam get-credential-report --query Content --output text | base64 -d | head -5
aws accessanalyzer list-findings --analyzer-arn "$ANALYZER_ARN" 2>/dev/null | headPolítica de menor privilégio para a API
json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::cloudshop-dev-images/*"
},
{
"Effect": "Deny",
"Action": "s3:*",
"Resource": "*",
"Condition": { "Bool": { "aws:SecureTransport": "false" } }
}
]
}Testar permissões antes de aplicar
bash
aws sts get-caller-identity --profile cloudshop-dev
aws iam simulate-principal-policy \
--policy-source-arn arn:aws:iam::123456789012:role/cloudshop-api \
--action-names s3:DeleteObject --resource-arns arn:aws:s3:::cloudshop-dev-images/x.png
# EvalDecision: implicitDeny <- delete nao permitido, como esperadoPor que isso importa
Toda auditoria e todo incidente de nuvem passa por IAM. Explicar menor privilégio com exemplo é diferencial em entrevista.
Erro comum
Anexar AdministratorAccess à role da aplicação 'para destravar' e nunca mais revisar.
Dica de produção
Use tags nas roles e políticas baseadas em tag: escala melhor que política por recurso.
Alerta de segurança
Chave IAM em repositório público é explorada em minutos por bots. Revogue e audite CloudTrail imediatamente.
Pergunta de entrevista
Como você concederia acesso a um bucket específico para uma aplicação sem usar chaves?
Glossário
- role
- Identidade IAM assumível temporariamente por serviços, usuários ou federação.
- CloudTrail
- Serviço de auditoria que registra chamadas de API na conta.
- ARN
- Identificador único de um recurso na AWS.
- SCP
- Service Control Policy: limite máximo de permissões aplicado a contas da organização.
- IRSA
- IAM Roles for Service Accounts: roles AWS para Pods do Kubernetes.
- CloudTrail
- Registro de auditoria de todas as chamadas de API na conta.
Conexão com o CloudShop
Criar a role da API do CloudShop com acesso mínimo ao bucket de uploads e ao segredo do banco.
Quiz da aula
1. Qual a forma recomendada de uma aplicação em EC2 acessar o S3?
2. Uma política dá Allow e outra dá Deny para a mesma ação. Resultado?
3. Como uma EC2 deve acessar o S3?
Minhas anotações
Salvo automaticamente neste navegador.