O Que É uma OIDC Role para o GitHub Actions?
Uma OIDC role é uma IAM role cuja trust policy aceita um token de curta duração que o GitHub emite para seu workflow, permitindo que o pipeline implante na AWS sem credenciais armazenadas.
Armazenar chaves de nuvem de longa duração em secrets de CI é um risco de segurança. O OIDC (OpenID Connect) as substitui por confiança federada: o GitHub atua como identity provider, seu workflow obtém um token assinado descrevendo o run, e a AWS troca esse token por credenciais temporárias. O resultado são deploys sem keys e auditáveis.
Como funciona a troca de token
Durante um workflow, o GitHub cunha um token OIDC assinado contendo claims como o repository, a branch e o environment. O workflow o apresenta ao AWS STS, que verifica o token contra a trust policy da role e, se corresponder, retorna credenciais temporárias.
Configurando a confiança
- Registre o GitHub como um OIDC identity provider no IAM.
- Crie uma role cuja trust policy referencie aquele provider.
- Restrinja a confiança a repos, branches ou environments específicos via a claim sub.
- Anexe uma permission policy de least-privilege para o que o deploy precisa.
O que as claims permitem restringir
Como o token carrega o repo, ref e environment, a trust policy pode exigir, digamos, apenas a branch main de um repository. Um workflow vazado de outro repo não consegue assumir a role, o que reduz drasticamente o blast radius.
Por que as equipes adotam
O OIDC remove o secret de maior valor do CI: as chaves de nuvem. Não há nada para rotacionar, nada para vazar, e toda assunção é registrada. O mesmo padrão funciona para Google Cloud (Workload Identity Federation) e Azure (federated credentials).
Papel no CI/CD
No GitHub Actions você concede ao workflow a permissão id-token: write, então usa a action configure-aws-credentials com um role ARN. A action lida com a troca de token e exporta credenciais temporárias para os passos seguintes. Nenhuma access key da AWS jamais toca os secrets do seu repositório.
Principais conclusões
- O OIDC permite que o GitHub Actions assuma uma AWS role via um token assinado, sem keys armazenadas.
- A trust policy pode restringir o acesso a repos, branches ou environments específicos.
- O mesmo padrão de federação existe para Google Cloud e Azure.