L'usurpation d'identité est l'escalade GCP la plus directe : une permission sur un compte de service cible vous permet d'agir en tant que celui-ci sans rien déployer. Le rôle roles/iam.serviceAccountTokenCreator (et les permissions individuelles ci-dessous) est le pivot, et il est fréquemment accordé de manière trop large.
Les primitives#
- getAccessToken : générer directement un jeton OAuth à courte durée de vie pour la cible.
- signJwt et signBlob : forger un JWT ou un blob signé en tant que cible, puis l'échanger contre un jeton.
- Octroi de Token Creator : vous accorder Token Creator sur la cible avec
serviceAccounts.setIamPolicy, puis usurper son identité. - Délégation implicite : enchaîner via un compte intermédiaire pour atteindre un compte que vous ne pouvez pas appeler directement.
- Création de clé : créer une clé JSON à longue durée de vie pour un accès durable et de la persistance.
Utiliser une identité usurpée#
La plupart des commandes gcloud acceptent l'option d'usurpation d'identité une fois que vous détenez la permission :
gcloud <command> --impersonate-service-account=<target-sa>@<project>.iam.gserviceaccount.com
gcloud auth print-access-token --impersonate-service-account=<target-sa>@...