O Que É o AWS IAM? Identity and Access Management
O AWS IAM (Identity and Access Management) é o serviço que decide quem ou o que pode chamar qual API da AWS. Toda ação na AWS é permitida ou negada pelo IAM.
O IAM é a porta de entrada da sua conta AWS. Ele define principals (users, roles e services), as policies que concedem ou negam permissões, e as regras de como eles se autenticam. Entender o IAM é essencial porque um pipeline não consegue implantar nada na AWS até que o IAM o permita.
Os blocos de construção centrais do IAM
- Users - identidades de longa duração para pessoas, com keys ou senhas.
- Roles - identidades assumíveis com credenciais temporárias, ideais para workloads.
- Policies - documentos JSON listando ações permitidas e negadas.
- Groups - coleções de users que compartilham policies.
Policies e permissões
Uma policy se anexa a um principal e lista ações (como s3:PutObject) em recursos (como um bucket específico), com condições opcionais. O IAM é deny-by-default: nada é permitido a menos que uma policy conceda, e um deny explícito sempre vence.
Least privilege
O princípio norteador é o least privilege: conceda apenas as permissões que um principal realmente precisa. Policies amplas demais são um risco de segurança comum, então as deploy roles devem ter escopo restrito aos recursos e ações exatos que o pipeline toca.
Credenciais temporárias
Roles emitem credenciais de curta duração via STS em vez de keys permanentes. Isso é mais seguro porque as credenciais expiram automaticamente e nunca precisam ser armazenadas, o que é exatamente o que você quer para pipelines automatizados.
Papel no CI/CD
Um pipeline assume uma IAM role para obter credenciais temporárias, então implanta. O padrão moderno é o OIDC: o GitHub Actions apresenta um token assinado, o IAM confia nele, e devolve credenciais temporárias com escopo para uma deploy role. Isso remove completamente as chaves AWS de longa duração dos seus secrets.
Principais conclusões
- O IAM controla toda ação da AWS via users, roles e policies.
- O IAM é deny-by-default; least privilege mantém as deploy roles com escopo restrito.
- Pipelines devem assumir roles para obter credenciais temporárias, idealmente através do OIDC.