Módulo de papel IAM
O módulo que cria papel com limite de permissão aplicado, e por que ele recusa política inline.
Cria um papel com o limite de permissão da casa já aplicado. O limite é o que impede um papel de conceder mais do que quem o criou possui, e ele é aplicado pelo módulo justamente para não depender de alguém lembrar.
Antes de começar
O papel precisa de um serviço ou de uma identidade federada que possa assumi-lo. Papel sem quem o assuma é recurso morto que aparece em toda auditoria.
Os passos
Declarar quem assume
assumido_poraceita serviço da AWS ou repositório do GitHub. As duas formas produzem políticas de confiança diferentes, e o módulo escolhe.module "papel_publicacao" {source = "panlabs/papel-iam/aws"version = "2.1.0"nome = "publicacao"assumido_por = { repositorio = "panlabs-tech/catalogo", branch = "main" }}Anexar políticas gerenciadas
Só ARN de política existente. Política inline é recusada: ver abaixo.
politicas = [aws_iam_policy.publicar_pacote.arn,aws_iam_policy.empurrar_imagem.arn,]Aplicar e conferir a confiança
terraform applyaws iam get-role --role-name papel-catalogo-publicacao \--query 'Role.AssumeRolePolicyDocument'
Verificação
O papel existe, tem o limite anexado, e a política de confiança nomeia o
repositório e a branch, nunca *:
panlabs infra conferir papel publicacao
# limite panlabs-limite-equipe ✓
# confiança repo:panlabs-tech/catalogo:ref:refs/heads/main
# políticas 2 gerenciadas · 0 inline
Por que política inline é recusada
Política inline vive dentro do papel e não tem nome próprio, então ela não aparece em busca por política, não pode ser reusada e não pode ser revisada isoladamente. Numa auditoria, ela é o que ninguém encontra.
| Forma | Aparece em busca | Reusável | Revisável isolada |
|---|---|---|---|
| gerenciada | sim | sim | sim |
| inline | não | não | não |
branch no assumido_por não é opcional para repositório. Sem ele, a política
de confiança aceita qualquer referência do repositório, inclusive um pull request de fora, que é o caminho conhecido para roubar o papel de publicação.
Para um papel que precisa ser assumido por várias branches, passe uma lista. O módulo emite uma condição por entrada em vez de um curinga, e a diferença aparece na auditoria.