Gerenciamento de identidade e acesso
Quem pode fazer o quê, em qual recurso, para pessoas, workloads e usuários de aplicações. Parte do Domínio 1: Design Secure Architectures, 30% do conteúdo pontuado.
Blocos do IAM
AWS Identity and Access Management
O IAM autentica os principals e autoriza cada requisição com políticas em JSON. Prefira roles com credenciais temporárias a usuários com chaves de longo prazo.
Pontos-chave
- Usuários: credenciais de longo prazo (uma senha e até 2 chaves de acesso). Use só quando uma role não resolve, como em algumas ferramentas de terceiros.
- Grupos: anexam políticas a vários usuários de uma vez. Um usuário pode estar em até 10 grupos, e grupos não podem conter outros grupos.
- Roles: sem credenciais de longo prazo. São assumidas por usuários, serviços da AWS (instance profile do EC2, execution role do Lambda) ou identidades federadas para obter credenciais temporárias.
- Políticas: as baseadas em identidade (gerenciadas ou inline) se anexam a principals. As baseadas em recurso (bucket policy, política de fila, key policy do KMS) indicam um
Principale permitem acesso entre contas. - Menor privilégio: comece pelas políticas gerenciadas pela AWS e depois restrinja com políticas gerenciadas pelo cliente, condições e a geração de políticas do IAM Access Analyzer a partir da atividade no CloudTrail.
Na prova
Aplicação no EC2 precisa acessar o S3 -> anexe uma role do IAM via instance profile. Guardar chaves de acesso na instância ou no código é sempre a resposta errada.
Toda requisição começa com uma negação implícita. Uma negação explícita em qualquer política vence, e todo guardrail no caminho também precisa permitir a ação.
Pontos-chave
- Negação explícita: um
Denyem qualquer política aplicável anula todos osAllow. - Mesma conta: as permissões são a união das políticas baseadas em identidade e em recurso, então um allow em qualquer uma basta.
- Entre contas: o principal precisa de um
Allowna sua política de identidade e de umAllowna política baseada em recurso da outra conta. - Permissions boundary: uma política gerenciada que define o máximo de permissões de um usuário ou role. O efetivo é a interseção com as políticas de identidade, e o boundary sozinho não concede nada.
- Guardrails: SCPs, RCPs e session policies apenas limitam. A ação precisa ser permitida por todas as que se aplicam.
Na prova
"Deixar desenvolvedores criarem roles sem escalar os próprios privilégios" -> permissions boundary obrigatório nas roles que eles criam. Limitar uma conta inteira ou uma OU é SCP, não boundary.
Tipos de política em resumo
| Tipo de política | O que faz |
|---|---|
| Baseada em identidade | Concede permissões a um usuário, grupo ou role |
| Baseada em recurso | Concede acesso ao recurso, inclusive a principals de outras contas |
| Permissions boundary | Limita o que as políticas de identidade podem conceder a um usuário ou role |
| SCP | Limita as permissões dos principals nas contas membro |
| RCP | Limita as permissões sobre os recursos nas contas membro |
| Session policy | Limita uma sessão temporária criada pelo STS |
Roles e STS
AWS Security Token Service
O STS emite credenciais temporárias quando um principal assume uma role. É o mecanismo por trás de instance profiles, acesso entre contas e federação.
Pontos-chave
- AssumeRole: a sessão dura de 15 minutos até a duração máxima da role, que você configura entre 1 e 12 horas. O padrão é 1 hora.
- Role chaining: usar uma role para assumir outra limita a sessão a 1 hora.
- Trust policy: a política baseada em recurso da role que diz quem pode assumi-la com
sts:AssumeRole. A política de permissões diz o que a sessão pode fazer. - Role vs política de recurso: quem assume uma role abre mão das próprias permissões. O acesso via política baseada em recurso as mantém, o que ajuda a copiar dados entre contas.
- External ID: condição na trust policy quando um terceiro assume uma role na sua conta. Serve para evitar o problema do confused deputy.
- APIs de federação:
AssumeRoleWithSAMLpara IdPs SAML 2.0 eAssumeRoleWithWebIdentitypara tokens OIDC.
Na prova
"Dar a um parceiro ou a outra conta acesso a recursos" -> role do IAM entre contas, com external ID para terceiros. Criar usuários do IAM para eles ou compartilhar chaves de acesso é o distrator.
A identidade criada junto com a conta tem acesso irrestrito. Proteja com MFA e use só nas poucas tarefas que exigem root.
Pontos-chave
- MFA: a AWS exige MFA para o root por padrão. Recomenda-se MFA resistente a phishing, como passkeys e chaves de segurança.
- Dia a dia: use um usuário administrativo no IAM Identity Center, nunca o root. Apague as chaves de acesso do root que não forem necessárias.
- Tarefas exclusivas do root: encerrar uma conta avulsa, restaurar permissões do IAM quando o único administrador se trancou para fora, registrar-se como vendedor no Reserved Instance Marketplace, ativar MFA delete em um bucket S3.
- Acesso root centralizado: no AWS Organizations dá para remover as credenciais root das contas membro e executar tarefas privilegiadas a partir da conta de gerenciamento, como destravar uma bucket policy que nega todo mundo.
- SCPs se aplicam: uma SCP restringe o root de uma conta membro, mas nunca a conta de gerenciamento.
Na prova
"Proteger o usuário root" -> MFA, sem chaves de acesso, uso só em tarefas exclusivas. Quando perguntarem qual tarefa exige root, procure encerrar uma conta avulsa ou restaurar um administrador trancado para fora.
IAM Identity Center
AWS IAM Identity Center
Single sign-on da força de trabalho para muitas contas e aplicações da AWS a partir de um só lugar. É a forma recomendada de dar acesso a pessoas numa organização com várias contas.
Pontos-chave
- Fonte de identidade: o diretório do Identity Center, o Active Directory (AWS Managed Microsoft AD ou AD Connector) ou um IdP externo via SAML 2.0.
- Permission sets: defina uma vez as permissões de uma função de trabalho, provisione em várias contas e atribua a usuários e grupos.
- Instância de organização: implantada na conta de gerenciamento, é o único tipo de instância que gerencia acesso a contas da AWS. Instâncias de conta servem a implantações isoladas de aplicações.
- AWS access portal: uma página de login que lista todas as contas e aplicações atribuídas ao usuário, com credenciais de curto prazo para console e CLI.
- Trusted identity propagation: aplicações gerenciadas pela AWS, como o Amazon Quick, repassam a identidade do usuário a serviços como o Amazon Redshift para autorização e auditoria.
Na prova
"Funcionários precisam de single sign-on em várias contas com as credenciais corporativas" -> IAM Identity Center ligado ao IdP corporativo. O Cognito atende os clientes da sua aplicação, não a força de trabalho.
Os usuários mantêm a identidade em um IdP externo e recebem credenciais temporárias da AWS, sem distribuir usuários do IAM nem chaves de longo prazo.
Pontos-chave
- SAML 2.0: um IdP corporativo, como o Active Directory Federation Services, autentica o usuário, e o STS
AssumeRoleWithSAMLdevolve credenciais de uma role do IAM. - Grupos do diretório em roles: a asserção do IdP mapeia usuários ou grupos do diretório para roles do IAM, então o acesso segue a participação nos grupos.
- OIDC: tokens de provedores como o GitHub Actions são trocados via
AssumeRoleWithWebIdentity, e os pipelines rodam sem chaves guardadas. - IAM ou Identity Center: a federação direta no IAM serve para uma conta avulsa ou para usuários de máquina. Para muitas contas, federe uma vez no IAM Identity Center.
- IAM Roles Anywhere: workloads fora da AWS obtêm credenciais temporárias com um certificado X.509 da sua PKI.
Na prova
"Usuários do Active Directory on-premises precisam acessar o console sem novas credenciais" -> federação SAML 2.0 ou IAM Identity Center com AD. "Servidor ou pipeline fora da AWS precisa de credenciais" -> federação OIDC ou IAM Roles Anywhere, não chaves de acesso.
Identidade de clientes para aplicações web e mobile. User pools respondem quem é o usuário, identity pools respondem quais recursos da AWS ele pode acessar.
Pontos-chave
- User pools: diretório de usuários e provedor OIDC que emite JWTs (tokens de ID e de acesso). Suporta cadastro, MFA, login social e IdPs corporativos SAML ou OIDC.
- Identity pools: trocam um token confiável por credenciais temporárias da AWS, com privilégio limitado, emitidas pelo STS. Também podem dar acesso não autenticado a visitantes.
- Juntos: o login acontece no user pool, e o token do user pool é trocado no identity pool por credenciais para chamar o S3 ou o DynamoDB diretamente.
- Proteção de APIs: o API Gateway valida tokens do user pool antes de chamar o backend, e o AWS WAF pode proteger o user pool.
- Controle de acesso: identity pools escolhem uma role do IAM por usuário (baseado em role) ou mapeiam claims para session tags (baseado em atributos).
Na prova
"Usuários do app mobile enviam arquivos direto para o próprio prefixo no S3" -> identity pool do Cognito emitindo credenciais temporárias. "Cadastro e login com Google no app" -> user pool.
User pools vs identity pools
| Necessidade | Use |
|---|---|
| Autenticar | User pool: diretório, login e JWTs para sua aplicação ou API |
| Chamar serviços da AWS | Identity pool: credenciais temporárias da AWS emitidas pelo STS |
| Acesso de visitante | Identity pool: identidades não autenticadas com uma role limitada |
| Login social ou SAML |
|
Directory Service
AWS Directory Service
Formas gerenciadas de usar o Microsoft Active Directory com a AWS, desde um AD completo gerenciado até um proxy que mantém o diretório on-premises.
Pontos-chave
- AWS Managed Microsoft AD: um AD real do Windows Server operado pela AWS. Suporta trusts com o AD on-premises, MFA, extensões de schema e Amazon RDS for SQL Server.
- Edições: a Standard mira até cerca de 30.000 objetos no diretório, a Enterprise até cerca de 500.000.
- AD Connector: proxy que encaminha os logins para os controladores de domínio on-premises, sem sincronizar o diretório. Pode usar o seu MFA via RADIUS.
- Simple AD: diretório compatível com AD, de baixo custo, baseado em Samba 4. Sem trusts, sem MFA e sem RDS for SQL Server.
Na prova
"Manter os usuários no AD on-premises e deixá-los entrar no WorkSpaces" -> AD Connector. "Trust com o AD on-premises" ou "RDS for SQL Server com autenticação Windows" -> AWS Managed Microsoft AD.