Toute escalade dans GCP commence par le graphe IAM : quels membres détiennent quels rôles à quelle portée, et quels comptes de service vous pouvez atteindre par impersonation ou actAs. Les réponses viennent des appels getIamPolicy à chaque niveau et de la résolution des permissions que détient votre propre identité.
Qui suis-je et que détiens-je#
gcloud auth list # active identities
gcloud config get-value project
gcloud projects get-iam-policy <project> --format=json # all bindings at the project
# test a specific permission set against the project
gcloud iam list-testable-permissions //cloudresourcemanager.googleapis.com/projects/<project>
Lire les liaisons à travers les portées#
gcloud organizations get-iam-policy <org-id>
gcloud resource-manager folders get-iam-policy <folder-id>
gcloud projects get-iam-policy <project>
# service accounts you might impersonate or actAs
gcloud iam service-accounts list
gcloud iam service-accounts get-iam-policy <sa-email> # who can mint its token
Résoudre les chemins accessibles#
# asset inventory for the whole resource graph
gcloud asset search-all-resources --scope=projects/<project>
gcloud asset search-all-iam-policies --scope=projects/<project>
ScoutSuite et les scripts de graphe IAM du dépôt Rhino GCP-IAM-Privilege-Escalation transforment ce vidage en une liste d'arêtes d'escalade : qui peut faire setIamPolicy, qui détient actAs plus un verbe de déploiement, et quels comptes de service ont Token Creator lié à un principal que vous contrôlez.
Notes d'exploitation#
get-iam-policyà une portée ne renvoie que les liaisons définies à cette portée ; les rôles hérités d'un dossier parent ou de l'organisation se résolvent avec la recherche de politiques de l'asset-inventory, et non avec la seule politique du projet.- Un
getIamPolicyrefusé ne signifie pas que vous êtes bloqué :list-testable-permissionset le simple fait de tenter les appels d'escalade révèlent la surface exploitable. - Les comptes de service par défaut de Compute Engine et App Engine détiennent fréquemment le rôle Editor, donc notez chaque ressource qui s'exécute sous l'un d'eux.
Outils#
- gcloud (
get-iam-policy,asset search-all-iam-policies,list-testable-permissions) : le vidage natif du graphe. - ScoutSuite : posture multi-services et inventaire IAM.
- GCP-IAM-Privilege-Escalation (Rhino) : scripts qui énumèrent les permissions et signalent les chemins d'escalade.