0 XP
Módulo 6 · AWS, Cloud e Segurança

IAM: identidades, roles e menor privilégio

Intermediário 45 min+25 XPAWS IAMAWS CLI

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 | head

Polí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 esperado

Por 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. 1. Qual a forma recomendada de uma aplicação em EC2 acessar o S3?

  2. 2. Uma política dá Allow e outra dá Deny para a mesma ação. Resultado?

  3. 3. Como uma EC2 deve acessar o S3?

Minhas anotações

Salvo automaticamente neste navegador.

AnteriorPróxima