iam.serviceAccounts.actAs est la permission qui permet de lier un compte de service à une ressource que vous créez. Seule, elle ne fait rien ; combinée à une permission de création de ressource, elle vous permet de déployer un élément qui s'exécute sous l'identité d'un compte de service plus privilégié que vous, puis de récupérer son jeton ou d'exécuter du code en son nom. Le compte de service cible a seulement besoin d'exister et d'être utilisable dans le projet.
Le schéma est toujours le même : trouver un compte de service privilégié (gcloud iam service-accounts list, et le graphe d'énumération pour ses liaisons de rôles), confirmer que vous détenez actAs sur lui, puis le piloter via l'un des déploiements ci-dessous.
Cibles de déploiement#
- Instance Compute :
compute.instances.createavec un compte de service privilégié et un scope complet. - Cloud Function : déployer une fonction s'exécutant sous le compte attaché.
- Cloud Run : un service ou un job exécutant des conteneurs de l'attaquant sous l'identité du compte.
- Deployment Manager : déployer sous l'agent de service des API Google (Éditeur par défaut).
- Cloud Build : exfiltrer le jeton du compte de service Cloud Build en cours de build.
- App Engine : une version s'exécutant sous le compte par défaut App Engine.
- Cloud Composer : une tâche de DAG Airflow s'exécutant sous le compte de l'environnement.
- Cloud Scheduler : un job planifié appelant une API sous l'identité d'un compte choisi.
- Notebook Vertex AI : une VM de notebook avec le compte attaché.
- Dataproc : un cluster ou un job s'exécutant sous le compte du cluster.