iam:GetWebIdentityToken no CRN dessa role. Restrinja a audiência ao serviço de destino:
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: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 é:
Manter um arquivo de token
A versão1.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:
--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

