Pular para o conteúdo principal
Uma VM Basaltic pode obter um JWT de identidade pelo serviço de metadados sem armazenar uma credencial de longa duração. Use-o com AWS STS ou outro serviço que confie no emissor OIDC do Basaltic. A VM precisa de uma role IAM anexada. Suas políticas devem permitir iam:GetWebIdentityToken no CRN dessa role. Restrinja a audiência ao serviço de destino:
Aplique como política inline ou anexada à role. Os limites de permissão da role também se aplicam. basalt:IdentityTokenDurationSeconds contém a duração solicitada em segundos, incluindo o padrão 300 quando a duração não é informada.

Solicitar um token dentro da VM

Primeiro obtenha um token de sessão IMDSv2. Depois solicite um JWT de identidade com uma audiência externa:
A resposta JSON contém token e expires_at. A duração padrão é 300 segundos; você pode solicitar de 60 a 300 segundos. Requisições repetidas podem retornar um token em cache ainda válido, então use a expiração retornada. Toda requisição verifica as permissões atuais da role, inclusive quando usa o cache. Este endpoint sempre exige IMDSv2, mesmo quando os metadados comuns permitem IMDSv1. Ele aceita apenas audience e o campo opcional duration_seconds. A plataforma fornece a identidade da VM; a requisição não pode escolher outra VM, conta, organização ou sujeito. A audiência basaltic é reservada para acesso à API e é rejeitada aqui. Os três tokens envolvidos são diferentes:

Claims de identidade

O emissor é https://iam.basaltic.sh. Os JWTs usam ES256 e incluem iss, sub, aud, iat, exp e jti. O sujeito é:
Use o sujeito exato na política de confiança do destino. Esses UUIDs são imutáveis. Renomear um recurso não altera sua identidade; recriar uma VM com o mesmo nome produz outro sujeito. Duas VMs que compartilham uma role Basaltic ainda têm sujeitos diferentes. O destino deve verificar a assinatura com o JWKS descoberto do emissor antes de confiar nos claims. Decodificar um JWT sem verificá-lo é útil para inspecionar seu conteúdo, mas não comprova nada.

Manter um arquivo de token

A versão 1.15.11-1 ou posterior do agente guest inclui o comando identity-token. Atualize basaltic-guest-agent pelo repositório de pacotes Basaltic configurado na VM antes de usá-lo. Execute o helper com o mesmo usuário da aplicação, usando um diretório de saída privado. Ele renova a prova antes da expiração e substitui atomicamente um arquivo com modo 0600:
O comando permanece em execução. Use --once para uma tarefa curta e única; esse arquivo não será renovado. O modo contínuo remove o arquivo ao parar e remove uma prova expirada se a renovação falhar. Um segundo helper não pode controlar o mesmo arquivo de saída. Para um serviço executado com o usuário app já existente, use uma unidade systemd separada:
/etc/systemd/system/basaltic-aws-identity.service
Configure a aplicação para aguardar o arquivo de token antes da primeira requisição à AWS. O helper renova as provas de identidade; o SDK AWS as troca e renova as credenciais AWS. Consulte a configuração AWS.

Revogação e limites

Remover a role, alterar suas permissões ou revogar a sessão de role Basaltic subjacente bloqueia novas emissões por essa autorização. JWTs de identidade existentes continuam utilizáveis até expirarem, no máximo em cinco minutos. São provas bearer, não tokens de uso único. Credenciais já emitidas por um serviço externo seguem as regras de duração e revogação desse serviço. Uma prova de cinco minutos pode produzir uma sessão AWS mais longa. Para interromper acessos AWS existentes, use também os controles de revogação de sessão da AWS. Todos os processos que alcançam o endpoint de metadados da VM podem solicitar provas pela role anexada. As permissões do arquivo de token limitam seus leitores locais; não isolam processos capazes de acessar os metadados por conta própria. Use VMs separadas para workloads que exijam identidades de nuvem separadas. Desanexar uma role interrompe novas provas pelos metadados. Sessões Basaltic existentes ainda podem chamar a API de tokens até serem revogadas ou expirarem; revogue-as também ao remover o acesso.