AssumeRoleWithWebIdentity do Basaltic. O token bearer resultante autoriza chamadas de implantação à API conforme as políticas da role Basaltic.
Registrar o GitHub na conta de implantação
Siga o registro de provedor na mesma conta da role de implantação. Use estes valores:- API
sts.amazonaws.com como audiência de exemplo.
Restringir a role ao seu workflow
Crie uma role IAM chamadagithub-deployer na conta production. A política de confiança deve indicar seu provedor e o sujeito GitHub exato. Este exemplo usa um ambiente protegido chamado production:
sub exato do seu token. O GitHub aceita formatos de sujeito baseados em nomes e em IDs imutáveis. Renomeações, transferências ou personalizações podem alterar o valor. Consulte a referência de sujeitos do GitHub.
Um sujeito de ambiente não restringe também a branch. Configure a proteção de ambientes do GitHub para limitar branches e aprovações de implantação. O workflow de exemplo usa um ambiente, portanto a confiança deve usar o sujeito de ambiente.
O Basaltic avalia emissor, sujeito e audiência verificados. Claims como
repository_id, ref e job_workflow_ref não são chaves de política separadas no Basaltic. Coloque as restrições necessárias no sujeito aceito e na configuração do ambiente GitHub.
Conceder permissões de implantação
Anexe políticas de permissão para os recursos específicos alterados pela implantação. A confiança permite autenticação; ela não concede acesso de implantação. Para executar a verificação abaixo, adicione esta pequena política e depois as permissões de implantação da aplicação separadamente:Obter uma sessão no GitHub Actions
Adicione o workflow abaixo após substituir os valores de conta, role, audiência e ambiente. A permissãoid-token: write do GitHub permite ao job solicitar seu token de identidade; as permissões Basaltic continuam vindo da role. A troca não usa credenciais Basaltic preexistentes.
Defina BASALTIC_ROLE_ID como o UUID retornado ao criar a role; o endpoint de verificação recebe um UUID.
.github/workflows/deploy.yml
BASALTIC_TOKEN nas etapas seguintes de implantação como token bearer HTTP. Substitua ou complemente a verificação com seus comandos de implantação, concedendo apenas as ações IAM necessárias. Essa variável é definida pelo exemplo; as ferramentas precisam de sua própria configuração documentada de token. Não imprima o token nem envie a resposta da troca como artefato.
O exemplo solicita uma sessão de 15 minutos. Para jobs mais longos, obtenha uma nova prova GitHub e troque-a novamente antes de a sessão Basaltic expirar. Não há refresh token nesse fluxo. Consulte as orientações de workflow OIDC do GitHub.
Solução de problemas
Um401 na troca costuma indicar registro do emissor, audiência, assinatura ou expiração. Um 403 indica confiança da role: compare o sujeito exato, incluindo IDs imutáveis, branch versus ambiente e o operador de conjunto da audiência. Um 403 após autenticar indica permissões ausentes ou um limite de permissões. Consulte a visão geral de federação.
