Pular para o conteúdo principal
Use a identidade de um job do GitHub Actions para obter uma sessão temporária de implantação no Basaltic. Não é necessário armazenar uma chave de acesso Basaltic de longa duração no GitHub. O job solicita um JWT OIDC do GitHub e o troca no endpoint 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:
A audiência é o identificador escolhido para essa troca. Use exatamente o mesmo valor no provedor, na política de confiança e no workflow. O guia AWS usa sts.amazonaws.com como audiência de exemplo.

Restringir a role ao seu workflow

Crie uma role IAM chamada github-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:
Substitua o proprietário, repositório e IDs do exemplo pelo 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ão id-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
Use 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

Um 401 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.