Pular para o conteúdo principal

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

  1. Declarar quem assume

    assumido_por aceita 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" }
    }
  2. 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,
    ]
  3. Aplicar e conferir a confiança

    terraform apply
    aws 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.

FormaAparece em buscaReusávelRevisável isolada
gerenciadasimsimsim
inlinenãonãonã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.