Afficher les stratégies IAM en vigueur

Cette rubrique explique comment afficher les stratégies IAM (Identity and Access Management) effectives sur une ressource donnée.

Dans IAM, la règle effective décrit comment toutes les règles parentes et ascendantes de la hiérarchie des ressources sont héritées pour une ressource.

Champ d'application et autorisations

Lorsque vous demandez des stratégies IAM efficaces, vous devez spécifier un champ d'application. Il peut s'agir d'une organisation, d'un dossier ou d'un projet. Toutes les stratégies IAM définies pour ce champ d'application ou sous ce champ d'application sont renvoyées. Le champ d'application de la requête ne doit pas nécessairement être le même que celui du projet activé pour l'API Cloud Asset. De plus, le projet activé et le champ d'application de la requête nécessitent des autorisations différentes.

Types de stratégies acceptés

Les stratégies IAM effectives n'acceptent que les stratégies d'autorisation IAM. Il n'est pas compatible avec les formes de contrôle des accès suivantes:

Avant de commencer

Avant de commencer, suivez les étapes ci-dessous.

  1. Activez l'API Cloud Asset Inventory pour votre projet.

    Activer l'API Cloud Asset Inventory

    Ce projet ne doit pas nécessairement être identique au champ d'application de vos requêtes. Découvrez comment définir un projet lors de l'activation d'un service.

  2. Installez le SDK Google Cloud.

  3. Facultatif: Pour appeler directement l'API Cloud Asset Inventory, vérifiez que vous avez accès à la commande curl.

  4. Définissez des autorisations.

    1. Configurez les autorisations pour l'API Cloud Asset.

    2. Activez les autorisations suivantes pour le champ d'application de votre requête.

      • cloudasset.assets.analyzeIamPolicy

      • cloudasset.assets.searchAllResources

      • cloudasset.assets.searchAllIamPolicies

      Ces autorisations sont incluses dans les rôles suivants :

      • Propriétaire d'éléments Cloud (roles/cloudasset.owner)

      • Lecteur d'éléments Cloud (roles/cloudasset.viewer)

      Pour en savoir plus sur les autorisations et les rôles de l'API Cloud Asset, consultez la page Contrôle des accès.

Obtenir des stratégies IAM efficaces

gcloud

Pour obtenir les stratégies IAM applicables à une ressource, vous pouvez appeler BatchGetEffectiveIamPolicies à l'aide de la commande gcloud asset get-effective-iam-policy. Vous devez exécuter la Google Cloud CLI version 399.0.0 ou ultérieure.

gcloud asset get-effective-iam-policy \
    --scope=SCOPE \
    --names=ASSET_NAME_1,ASSET_NAME_2,...

Indiquez les valeurs suivantes :

  • SCOPE: un champ d'application peut être un projet, un dossier ou une organisation.

    Les valeurs autorisées sont les suivantes :

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Trouver un numéro de projet Google Cloud

      Console

      Pour trouver un numéro de projet Google Cloud, procédez comme suit:

      1. Accédez à la page Tableau de bord dans la console Google Cloud.

        Accéder à Google Dashboard

      2. Cliquez sur le sélecteur dans la barre de menu.
      3. Sélectionnez votre organisation dans la zone Sélectionner à partir de, puis recherchez le nom de votre projet.
      4. Cliquez sur le nom du projet pour passer à celui-ci. Le numéro du projet est indiqué sur la fiche Informations sur le projet.

      gcloud CLI

      Vous pouvez récupérer un numéro de projet Google Cloud à l'aide de la commande suivante:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Trouver un ID de dossier Google Cloud

      Console

      Pour trouver un ID de dossier Google Cloud, procédez comme suit:

      1. Accédez à Google Cloud Console.

        Accéder à la console Google Cloud

      2. Cliquez sur le sélecteur dans la barre de menu.
      3. Cliquez sur le champ Sélectionner à partir de, puis sélectionnez votre organisation.
      4. Recherchez le nom de votre dossier. L'ID du dossier figure à côté du nom du dossier.

      gcloud CLI

      Vous pouvez récupérer un ID de 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)"

      TOP_LEVEL_FOLDER_NAME peut être une correspondance de chaîne complète ou partielle. Supprimez l'option --format pour afficher plus d'informations sur les dossiers trouvés.

      Pour obtenir l'ID d'un dossier dans un autre dossier, répertoriez les sous-dossiers:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Trouver un ID d'organisation Google Cloud

      Console

      Pour trouver un ID d'organisation Google Cloud, procédez comme suit:

      1. Accédez à Google Cloud Console.

        Accéder à la console Google Cloud

      2. Cliquez sur le sélecteur dans la barre de menu.
      3. Cliquez sur le champ Sélectionner à partir de, puis sélectionnez votre organisation.
      4. Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.

      gcloud CLI

      Vous pouvez récupérer un ID d'organisation Google Cloud à l'aide de la commande suivante:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • ASSET_NAME: liste des noms complets d'éléments séparés par une virgule pour lesquels récupérer les stratégies IAM effectives.

    Vous pouvez récupérer les règles de 20 éléments au maximum dans un lot.

Les exemples de code suivants sont des exemples de commandes CLI gcloud:

  • Pour l'ID d'organisation 123456:

    gcloud asset get-effective-iam-policy \
        --scope=organizations/123456 \
        --names=//cloudresourcemanager.googleapis.com/organizations/123456
    
  • Pour l'ID de dossier 1234567:

    gcloud asset get-effective-iam-policy \
        --scope=folders/1234567 \
        --names=//cloudresourcemanager.googleapis.com/folders/1234567
    
  • Pour deux ressources d'instance Cloud SQL dans un projet nommé my-project:

    gcloud asset get-effective-iam-policy \
        --scope=projects/my-project \
        --names=//cloudsql.googleapis.com/projects/my-project/instances/instance1,//cloudsql.googleapis.com/projects/my-project/instances/instance2
    

REST

Pour obtenir les stratégies IAM applicables sur une ressource à l'aide de l'API Cloud Asset Inventory, utilisez la commande curl suivante:

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
          "names": [
            "ASSET_NAME_1",
            "ASSET_NAME_2",
            "..."
          ]
         }' \
     https://cloudasset.googleapis.com/v1/SCOPE/effectiveIamPolicies:batchGet

Indiquez les valeurs suivantes :

  • ASSET_NAME: liste des noms complets d'éléments séparés par une virgule pour lesquels récupérer les stratégies IAM effectives.

    Vous pouvez récupérer les règles de 20 éléments au maximum dans un lot.

  • SCOPE: un champ d'application peut être un projet, un dossier ou une organisation.

    Les valeurs autorisées sont les suivantes :

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Trouver un numéro de projet Google Cloud

      Console

      Pour trouver un numéro de projet Google Cloud, procédez comme suit:

      1. Accédez à la page Tableau de bord dans la console Google Cloud.

        Accéder à Google Dashboard

      2. Cliquez sur le sélecteur dans la barre de menu.
      3. Sélectionnez votre organisation dans la zone Sélectionner à partir de, puis recherchez le nom de votre projet.
      4. Cliquez sur le nom du projet pour passer à celui-ci. Le numéro du projet est indiqué sur la fiche Informations sur le projet.

      gcloud CLI

      Vous pouvez récupérer un numéro de projet Google Cloud à l'aide de la commande suivante:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Trouver un ID de dossier Google Cloud

      Console

      Pour trouver un ID de dossier Google Cloud, procédez comme suit:

      1. Accédez à Google Cloud Console.

        Accéder à la console Google Cloud

      2. Cliquez sur le sélecteur dans la barre de menu.
      3. Cliquez sur le champ Sélectionner à partir de, puis sélectionnez votre organisation.
      4. Recherchez le nom de votre dossier. L'ID du dossier figure à côté du nom du dossier.

      gcloud CLI

      Vous pouvez récupérer un ID de 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)"

      TOP_LEVEL_FOLDER_NAME peut être une correspondance de chaîne complète ou partielle. Supprimez l'option --format pour afficher plus d'informations sur les dossiers trouvés.

      Pour obtenir l'ID d'un dossier dans un autre dossier, répertoriez les sous-dossiers:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Trouver un ID d'organisation Google Cloud

      Console

      Pour trouver un ID d'organisation Google Cloud, procédez comme suit:

      1. Accédez à Google Cloud Console.

        Accéder à la console Google Cloud

      2. Cliquez sur le sélecteur dans la barre de menu.
      3. Cliquez sur le champ Sélectionner à partir de, puis sélectionnez votre organisation.
      4. Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.

      gcloud CLI

      Vous pouvez récupérer un ID d'organisation Google Cloud à l'aide de la commande suivante:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"