Dans IAM, les stratégies applicables décrivent la manière dont toutes les stratégies parentes et ancêtres de la hiérarchie des ressources sont héritées pour une ressource.
Seules les stratégies d'autorisation peuvent être récupérées via inventaire des éléments cloud. Les formes de contrôle d'accès suivantes ne sont pas acceptées :
Avant de commencer
Activez l'API Cloud Asset Inventory dans le projet à partir duquel vous exécutez les commandes inventaire des éléments cloud.
Assurez-vous que votre compte dispose du rôle approprié pour appeler l'API Cloud Asset Inventory. Pour connaître les autorisations individuelles pour chaque type d'appel, consultez Autorisations.
Afficher les règles en vigueur sur les ressources
gcloud
gcloud asset get-effective-iam-policy \ --scope=SCOPE_PATH \ --names=ASSET_NAME_1,ASSET_NAME_2,...
Indiquez les valeurs suivantes :
-
SCOPE_PATH: utilisez l'une des valeurs suivantes :Les valeurs autorisées sont les suivantes :
-
projects/PROJECT_ID, oùPROJECT_IDest l'ID du projet de niveau supérieur à partir duquel vérifier les stratégies IAM effectives. -
projects/PROJECT_NUMBER, oùPROJECT_NUMBERcorrespond au numéro du projet de premier niveau à partir duquel vérifier les stratégies IAM effectives.Trouver le numéro d'un projet Google Cloud
ConsoleGoogle Cloud
Pour trouver le numéro d'un projet Google Cloud , procédez comme suit :
-
Accédez à la page d'accueil de la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
-
Sélectionnez votre organisation dans la zone de liste, puis recherchez le nom de votre projet. Le nom, le numéro et l'ID du projet sont affichés près de l'en-tête Bienvenue.
Jusqu'à 4 000 ressources sont affichées. Si vous ne voyez pas le projet que vous recherchez, accédez à la page Gérer les ressources et filtrez la liste à l'aide du nom de ce projet.
gcloud CLI
Vous pouvez récupérer un numéro de projet Google Cloud avec la commande suivante :
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID, oùFOLDER_IDest l'ID du dossier de premier niveau à partir duquel vérifier les stratégies IAM effectives.Trouver l'ID d'un dossier Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.
gcloud CLI
Vous pouvez récupérer l'ID d'un dossier Google Cloud situé au niveau de l'organisation à l'aide de la commande suivante :
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
Où TOP_LEVEL_FOLDER_NAME est une chaîne partielle ou complète correspondant au nom du dossier. Supprimez l'option
--formatpour afficher plus d'informations sur les dossiers trouvés.La commande précédente ne renvoie pas les ID des sous-dossiers dans les dossiers. Pour ce faire, exécutez la commande suivante à l'aide de l'ID d'un dossier de premier niveau :
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID, oùORGANIZATION_IDest l'ID de l'organisation de premier niveau à partir de laquelle vérifier les stratégies IAM effectives.Trouver l'ID d'une organisation Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Cliquez sur l'onglet Tous. L'ID de l'organisation est indiqué à côté de son nom.
gcloud CLI
Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante :
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
ASSET_NAME_#: liste de noms complets des composants, séparés par une virgule.
Vous pouvez récupérer les règles pour un maximum de 20 composants dans un même lot.
Consultez la documentation de référence de gcloud CLI pour toutes les options.
Exemple
Exécutez la commande suivante pour afficher les stratégies IAM applicables sur l'instance Compute Engine my-instance héritées de l'organisation dont l'ID est my-organization-id.
Trouver l'ID d'une organisation Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Cliquez sur l'onglet Tous. L'ID de l'organisation est indiqué à côté de son nom.
gcloud CLI
Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante :
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
gcloud asset get-effective-iam-policy \ --scope=organizations/my-organization-id \ --names=//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance
Exemple de réponse
policyResults:
- fullResourceName: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance
policies:
- attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
policy:
bindings:
- members:
- user:alex@example.com
- user:bola@example.com
role: roles/cloudkms.admin
- members:
- serviceAccount:000000000000-compute@developer.gserviceaccount.com
role: roles/editor
- attachedResource: //cloudresourcemanager.googleapis.com/folders/000000000000
policy:
bindings:
- members:
- user:cruz@example.com
role: roles/resourcemanager.folderAdmin
- members:
- user:dani@example.com
role: roles/resourcemanager.folderEditor
- attachedResource: //cloudresourcemanager.googleapis.com/organizations/0000000000000
policy:
bindings:
- members:
- user:hao@example.com
role: organizations/0000000000000/roles/CustomProjectAdmin
- members:
- serviceAccount:000000000000@cloudservices.gserviceaccount.com
- user:ira@example.com
- user:jie@example.com
role: roles/accesscontextmanager.policyAdmin
REST
Méthode HTTP et URL :
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH/effectiveIamPolicies:batchGet
Corps JSON de la requête :
{ "names": [ "ASSET_NAME_1", "ASSET_NAME_2", "..." ] }
Indiquez les valeurs suivantes :
-
SCOPE_PATH: utilisez l'une des valeurs suivantes :Les valeurs autorisées sont les suivantes :
-
projects/PROJECT_ID, oùPROJECT_IDest l'ID du projet de niveau supérieur à partir duquel vérifier les stratégies IAM effectives. -
projects/PROJECT_NUMBER, oùPROJECT_NUMBERcorrespond au numéro du projet de premier niveau à partir duquel vérifier les stratégies IAM effectives.Trouver le numéro d'un projet Google Cloud
ConsoleGoogle Cloud
Pour trouver le numéro d'un projet Google Cloud , procédez comme suit :
-
Accédez à la page d'accueil de la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
-
Sélectionnez votre organisation dans la zone de liste, puis recherchez le nom de votre projet. Le nom, le numéro et l'ID du projet sont affichés près de l'en-tête Bienvenue.
Jusqu'à 4 000 ressources sont affichées. Si vous ne voyez pas le projet que vous recherchez, accédez à la page Gérer les ressources et filtrez la liste à l'aide du nom de ce projet.
gcloud CLI
Vous pouvez récupérer un numéro de projet Google Cloud avec la commande suivante :
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID, oùFOLDER_IDest l'ID du dossier de premier niveau à partir duquel vérifier les stratégies IAM effectives.Trouver l'ID d'un dossier Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'un dossier Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.
gcloud CLI
Vous pouvez récupérer l'ID d'un dossier Google Cloud situé au niveau de l'organisation à l'aide de la commande suivante :
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
Où TOP_LEVEL_FOLDER_NAME est une chaîne partielle ou complète correspondant au nom du dossier. Supprimez l'option
--formatpour afficher plus d'informations sur les dossiers trouvés.La commande précédente ne renvoie pas les ID des sous-dossiers dans les dossiers. Pour ce faire, exécutez la commande suivante à l'aide de l'ID d'un dossier de premier niveau :
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID, oùORGANIZATION_IDest l'ID de l'organisation de premier niveau à partir de laquelle vérifier les stratégies IAM effectives.Trouver l'ID d'une organisation Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Cliquez sur l'onglet Tous. L'ID de l'organisation est indiqué à côté de son nom.
gcloud CLI
Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante :
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
ASSET_NAME_#: tableau de noms complets des composants.
Vous pouvez récupérer les règles pour un maximum de 20 composants dans un même lot.
Consultez la documentation de référence REST pour toutes les options.
Exemples de commandes
Exécutez l'une des commandes suivantes pour afficher les stratégies IAM applicables sur l'instance Compute Engine my-instance héritées de l'organisation dont l'ID est my-organization-id.
Trouver l'ID d'une organisation Google Cloud
ConsoleGoogle Cloud
Pour trouver l'ID d'une organisation Google Cloud , procédez comme suit :
-
Accédez à la console Google Cloud .
- Cliquez sur la zone de liste du sélecteur dans la barre de menu.
- Sélectionnez votre organisation dans la zone de liste.
- Cliquez sur l'onglet Tous. L'ID de l'organisation est indiqué à côté de son nom.
gcloud CLI
Vous pouvez récupérer l'ID d'une organisation Google Cloud à l'aide de la commande suivante :
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
curl (Linux, macOS ou Cloud Shell)
curl -X POST \ -H "X-HTTP-Method-Override: GET" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "names": [ "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance" ] }' \ https://cloudasset.googleapis.com/v1/organizations/my-organization-id/effectiveIamPolicies:batchGet
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-HTTP-Method-Override" = "GET"; "Authorization" = "Bearer $cred" } $body = @" { "names": [ "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance" ] } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id/effectiveIamPolicies:batchGet" | Select-Object -Expand Content
Exemple de réponse
{ "policyResults": [ { "fullResourceName": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1", "policies": [ { "attachedResource": "//cloudresourcemanager.googleapis.com/projects/my-project", "policy": { "bindings": [ { "role": "roles/cloudkms.admin", "members": [ "user:alex@example.com", "user:bola@example.com" ] }, { "role": "roles/editor", "members": [ "serviceAccount:000000000000-compute@developer.gserviceaccount.com" ] } ] } }, { "attachedResource": "//cloudresourcemanager.googleapis.com/folders/000000000000", "policy": { "bindings": [ { "role": "roles/resourcemanager.folderAdmin", "members": [ "user:cruz@example.com" ] }, { "role": "roles/resourcemanager.folderEditor", "members": [ "user:dani@example.com" ] } ] } }, { "attachedResource": "//cloudresourcemanager.googleapis.com/organizations/000000000000", "policy": { "bindings": [ { "role": "organizations/1060291660910/roles/CustomProjectAdmin", "members": [ "user:hao@example.com" ] }, { "role": "roles/accesscontextmanager.policyAdmin", "members": [ "serviceAccount:000000000000@cloudservices.gserviceaccount.com", "user:ira@example.com", "user:jie@example.com" ] } ] } } ] } ] }