Rechercher des stratégies d'autorisation IAM sur des ressources

Vous pouvez rechercher des stratégies d'autorisation IAM sur vos ressources dans un projet, un dossier ou une organisation, et filtrer les résultats renvoyés à l'aide d'une requête.

Avant de commencer

  1. Activez l'API Cloud Asset Inventory dans le projet à partir duquel vous exécutez les commandes Cloud Asset Inventory.

    Activer l'API Cloud Asset Inventory

  2. 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 la section Autorisations.

Créer une requête

Avant de créer une requête, il peut être utile de commencer par une requête de recherche qui ne spécifie pas de requête. Utilisez les champs et les valeurs de la réponse complète pour créer une requête à l'aide de la syntaxe de requête de recherche, puis affinez-la jusqu'à ce que les résultats souhaités soient renvoyés.

Les champs pouvant être utilisés dans une requête sont détaillés dans la documentation de référence IamPolicySearchResult.

Tenez compte des limites suivantes lorsque vous créez une requête:

  • Le champ policy étant un objet imbriqué, il ne peut être utilisé qu'avec l'opérateur :.

  • Tous les types d'éléments ne peuvent pas faire l'objet d'une recherche. Consultez la section Types de ressources pour vérifier si un service n'est pas disponible dans les API de recherche.

Vous pouvez également utiliser les champs supplémentaires suivants pour limiter vos résultats à certains types de comptes principaux, autorisations ou rôles:

Champ Description
memberTypes

Contient l'un des types de comptes principaux IAM suivants:

  • user
  • group
  • domain
  • serviceAccount
  • allUsers
  • allAuthenticatedUsers
Exemple
memberTypes=user
policy.role.permissions

Contient des autorisations IAM spécifiques.

Exemple
policy.role.permissions=storage.buckets.create
roles

Contient des rôles IAM spécifiques.

Exemple
roles=roles/storage.objectAdmin

Rechercher des stratégies d'autorisation IAM

Avant de créer une requête, il peut être utile de commencer par une requête de recherche qui ne spécifie pas de requête. Utilisez les champs et les valeurs de la réponse complète pour créer une requête à l'aide de la syntaxe de requête de recherche, puis affinez-la jusqu'à ce que les résultats souhaités soient renvoyés.

Console

Pour rechercher des métadonnées de stratégie d'autorisation IAM, procédez comme suit :

  1. Accédez à la page Inventaire des éléments dans la console Google Cloud.

    Accéder à l'inventaire des éléments

  2. Accédez au projet, au dossier ou à l'organisation dans lesquels vous souhaitez effectuer une recherche.
  3. Cliquez sur l'onglet Stratégie IAM.
  4. Pour rechercher des stratégies d'autorisation, saisissez une requête dans le champ Filtre. Pour savoir comment rédiger une requête de recherche, consultez la section Syntaxe des requêtes de recherche.

    Pour faciliter la création de requêtes, vous pouvez cliquer sur le champ Filtrer pour afficher et ajouter les champs disponibles à votre requête.

Après avoir effectué une recherche, les stratégies d'autorisation correspondant à la requête sont répertoriées dans le tableau Résultats. Double-cliquez sur votre requête pour la modifier ou utilisez le volet Filtrer les résultats pour appliquer des préréglages de requête rapides ou limiter les résultats de recherche en fonction de critères spécifiques.

Pour afficher la requête en tant que commande Google Cloud CLI, cliquez sur Afficher la requête.

Pour exporter les résultats, cliquez sur Télécharger au format CSV.

gcloud

gcloud asset search-all-iam-policies \
    --scope=SCOPE_PATH \
    --query="QUERY" \
    --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
    --order-by="ORDER_BY"

Indiquez les valeurs suivantes :

  • SCOPE_PATH: utilisez l'une des valeurs suivantes:

    Les valeurs autorisées sont les suivantes :

    • projects/PROJECT_ID, où PROJECT_ID est l'ID du projet contenant des composants avec des règles d'autorisation IAM que vous souhaitez rechercher.
    • projects/PROJECT_NUMBER, où PROJECT_NUMBER est le numéro du projet contenant des composants avec des stratégies d'autorisation IAM que vous souhaitez rechercher.

      Trouver un Google Cloud numéro de projet

      Console Google Cloud

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

      1. Accédez à la page Bienvenue dans la console Google Cloud.

        Accéder à "Bienvenue"

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la 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 peuvent être affichées. Si le projet que vous recherchez ne s'affiche pas, accédez à la page Gérer les ressources et filtrez la liste en utilisant le nom de ce projet.

      CLI gcloud

      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, où FOLDER_ID est l'ID du dossier contenant des composants avec des stratégies d'autorisation IAM que vous souhaitez rechercher.

      Trouver l'ID d'un Google Cloud dossier

      Console Google Cloud

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

      1. Accédez à Google Cloud Console.

        Accéder à la console Google Cloud

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la liste.
      4. Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.

      CLI gcloud

      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)"

      TOP_LEVEL_FOLDER_NAME correspond à une correspondance partielle ou complète de la chaîne pour le nom du dossier. Supprimez l'indicateur --format pour 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 niveau supérieur:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, où ORGANIZATION_ID est l'ID de l'organisation qui possède des composants avec des stratégies d'autorisation IAM que vous souhaitez rechercher.

      Trouver l'ID d'une Google Cloud organisation

      Console Google Cloud

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

      1. Accédez à Google Cloud Console.

        Accéder à la console Google Cloud

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la liste.
      4. Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.

      CLI gcloud

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

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • QUERY : facultatif. Expression de requête. Si elle n'est pas spécifiée ou vide, toutes les ressources sont recherchées dans le champ d'application spécifié. Pour savoir comment rédiger une requête de recherche, consultez la section Syntaxe des requêtes de recherche.
  • ASSET_TYPE_# : facultatif. Liste des types d'éléments pouvant faire l'objet d'une recherche séparés par une virgule. Les expressions régulières compatibles avec RE2 sont acceptées. Si l'expression régulière ne correspond à aucun type d'élément compatible, une erreur INVALID_ARGUMENT est renvoyée. Lorsque --asset-types n'est pas spécifié, tous les types d'assets sont renvoyés.
  • ORDER_BY : facultatif. Liste de champs séparés par une virgule indiquant l'ordre de tri des résultats. L'ordre par défaut est croissant. Ajoutez DESC après le nom du champ pour indiquer l'ordre décroissant. Consultez la documentation de référence pour connaître les champs pouvant être triés.

Vous pouvez utiliser les options --format et --flatten pour formater la sortie de la CLI gcloud.

Consultez la documentation de référence de la gcloud CLI pour toutes les options.

Exemple

Exécutez la commande suivante pour obtenir la liste de toutes les instances Compute Engine (compute.googleapis.com/Instance) du projet my-project avec une stratégie d'autorisation IAM les associant à l'utilisateur alex@example.com. Les résultats sont triés par ordre décroissant en fonction de la ressource (resource DESC).

gcloud asset search-all-iam-policies \
    --scope=projects/my-project \
    --query="policy:\"user:alex@example.com\"" \
    --asset-types=compute.googleapis.com/Instance \
    --order-by="resource DESC"

Exemple de réponse

---
assetType: compute.googleapis.com/Instance
folders:
- folders/0000000000000
organization: organizations/0000000000000
policy:
  bindings:
  - members:
    - user:alex@example.com
    role: roles/compute.viewer
  - members:
    - user:alex@example.com
    role: roles/editor
  - members:
    - user:alex@example.com
    role: roles/owner
project: projects/0000000000000
resource: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/debian

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:searchAllIamPolicies

Corps JSON de la requête :

{
  "query": "QUERY",
  "assetTypes": [
    "ASSET_TYPE_1",
    "ASSET_TYPE_2",
    "..."
  ],
  "orderBy": "ORDER_BY",
  "pageSize": "PAGE_SIZE",
  "pageToken": "PAGE_TOKEN"
}

Indiquez les valeurs suivantes :

  • SCOPE_PATH: utilisez l'une des valeurs suivantes:

    Les valeurs autorisées sont les suivantes :

    • projects/PROJECT_ID, où PROJECT_ID est l'ID du projet contenant des composants avec des règles d'autorisation IAM que vous souhaitez rechercher.
    • projects/PROJECT_NUMBER, où PROJECT_NUMBER est le numéro du projet contenant des composants avec des stratégies d'autorisation IAM que vous souhaitez rechercher.

      Trouver un Google Cloud numéro de projet

      Console Google Cloud

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

      1. Accédez à la page Bienvenue dans la console Google Cloud.

        Accéder à "Bienvenue"

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la 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 peuvent être affichées. Si le projet que vous recherchez ne s'affiche pas, accédez à la page Gérer les ressources et filtrez la liste en utilisant le nom de ce projet.

      CLI gcloud

      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, où FOLDER_ID est l'ID du dossier contenant des composants avec des stratégies d'autorisation IAM que vous souhaitez rechercher.

      Trouver l'ID d'un Google Cloud dossier

      Console Google Cloud

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

      1. Accédez à Google Cloud Console.

        Accéder à la console Google Cloud

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la liste.
      4. Recherchez le nom de votre dossier. L'ID du dossier s'affiche à côté de son nom.

      CLI gcloud

      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)"

      TOP_LEVEL_FOLDER_NAME correspond à une correspondance partielle ou complète de la chaîne pour le nom du dossier. Supprimez l'indicateur --format pour 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 niveau supérieur:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, où ORGANIZATION_ID est l'ID de l'organisation qui possède des composants avec des stratégies d'autorisation IAM que vous souhaitez rechercher.

      Trouver l'ID d'une Google Cloud organisation

      Console Google Cloud

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

      1. Accédez à Google Cloud Console.

        Accéder à la console Google Cloud

      2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
      3. Sélectionnez votre organisation dans la liste.
      4. Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.

      CLI gcloud

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

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • QUERY : facultatif. Expression de requête. Si elle n'est pas spécifiée ou vide, toutes les ressources sont recherchées dans le champ d'application spécifié. Pour savoir comment rédiger une requête de recherche, consultez la section Syntaxe des requêtes de recherche.
  • ASSET_TYPE_# : facultatif. Tableau de types d'éléments pouvant faire l'objet d'une recherche. Les expressions régulières compatibles avec RE2 sont acceptées. Si l'expression régulière ne correspond à aucun type d'élément compatible, une erreur INVALID_ARGUMENT est renvoyée. Lorsque assetTypes n'est pas spécifié, tous les types d'assets sont renvoyés.
  • ORDER_BY : facultatif. Liste de champs séparés par une virgule indiquant l'ordre de tri des résultats. L'ordre par défaut est croissant. Ajoutez DESC après le nom du champ pour indiquer l'ordre décroissant. Consultez la documentation de référence pour connaître les champs pouvant être triés.
  • PAGE_SIZE : facultatif. Nombre de résultats à renvoyer par page. Le maximum est de 500. Si la valeur est définie sur 0 ou sur une valeur négative, une valeur par défaut appropriée est sélectionnée. Un nextPageToken est renvoyé pour récupérer les résultats suivants.

  • PAGE_TOKEN : facultatif. Les réponses aux requêtes longues sont réparties sur plusieurs pages. Lorsque pageToken n'est pas spécifié, la première page est renvoyée. Les pages suivantes peuvent être appelées en utilisant l'nextPageToken de la réponse précédente comme valeur pageToken.

Consultez la documentation de référence REST pour toutes les options.

Exemples de commandes

Exécutez l'une des commandes suivantes pour obtenir la liste de toutes les instances Compute Engine (compute.googleapis.com/Instance) du projet my-project avec une stratégie d'autorisation IAM les associant à l'utilisateur alex@example.com. Les résultats sont triés par ordre décroissant en fonction de la ressource (resource DESC).

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 '{
            "query": "policy:\"user:alex@example.com\"",
            "assetTypes": ["compute.googleapis.com/Instance"],
            "orderBy": "resource DESC"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "query": "policy:\"user:alex@example.com\"",
  "assetTypes": ["compute.googleapis.com/Instance"],
  "orderBy": "resource DESC"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies" | Select-Object -Expand Content

Exemple de réponse

{
  "resource": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/debian",
  "project": "projects/0000000000000",
  "policy": {
    "bindings": [
      {
        "role": "roles/compute.viewer",
        "members": [
          "user:alex@example.com"
        ]
      },
      {
        "role": "roles/editor",
        "members": [
          "user:alex@example.com"
        ]
      },
      {
        "role": "roles/owner",
        "members": [
          "user:alex@example.com"
        ]
      }
    ]
  },
  "assetType": "compute.googleapis.com/Instance",
  "folders": [
    "folders/0000000000000"
  ],
  "organization": "organizations/0000000000000"
}

C#

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Asset Inventory, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de Cloud Asset Inventory, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


using Google.Api.Gax;
using Google.Cloud.Asset.V1;
using System.Collections.Generic;
using System.Linq;

public class SearchAllIamPoliciesSample
{
    public SearchAllIamPoliciesResponse SearchAllIamPolicies(string scope, string query)
    {
        // Create the client.
        AssetServiceClient client = AssetServiceClient.Create();

        // Build the request.
        SearchAllIamPoliciesRequest request = new SearchAllIamPoliciesRequest
        {
            Scope = scope,
            Query = query,
        };

        // Call the API.
        PagedEnumerable<SearchAllIamPoliciesResponse, IamPolicySearchResult> response = client.SearchAllIamPolicies(request);

        // Return the first page.
        IEnumerable<SearchAllIamPoliciesResponse> byPages = response.AsRawResponses();
        return byPages.First();
    }
}

Go

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Asset Inventory, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de Cloud Asset Inventory, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


// Sample search-all-iam-policies searches all IAM policies within the given scope.
package main

import (
	"context"
	"flag"
	"fmt"
	"log"

	asset "cloud.google.com/go/asset/apiv1"
	"cloud.google.com/go/asset/apiv1/assetpb"
	"google.golang.org/api/iterator"
)

func main() {
	scope := flag.String("scope", "", "Scope of the search.")
	query := flag.String("query", "", "Query statement.")
	flag.Parse()
	ctx := context.Background()
	client, err := asset.NewClient(ctx)
	if err != nil {
		log.Fatalf("asset.NewClient: %v", err)
	}
	defer client.Close()

	req := &assetpb.SearchAllIamPoliciesRequest{
		Scope: *scope,
		Query: *query,
	}
	it := client.SearchAllIamPolicies(ctx, req)
	for {
		policy, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			log.Fatal(err)
		}
		fmt.Println(policy)
	}
}

Java

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Asset Inventory, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de Cloud Asset Inventory, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

import com.google.api.gax.rpc.ApiException;
import com.google.api.gax.rpc.InvalidArgumentException;
import com.google.cloud.asset.v1.AssetServiceClient;
import com.google.cloud.asset.v1.AssetServiceClient.SearchAllIamPoliciesPagedResponse;
import com.google.cloud.asset.v1.SearchAllIamPoliciesRequest;
import java.io.IOException;

public class SearchAllIamPoliciesExample {

  // Searches for all the iam policies within the given scope.
  public static void searchAllIamPolicies(String scope, String query) {
    // TODO(developer): Replace these variables before running the sample.
    int pageSize = 0;
    String pageToken = "";

    SearchAllIamPoliciesRequest request =
        SearchAllIamPoliciesRequest.newBuilder()
            .setScope(scope)
            .setQuery(query)
            .setPageSize(pageSize)
            .setPageToken(pageToken)
            .build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AssetServiceClient client = AssetServiceClient.create()) {
      SearchAllIamPoliciesPagedResponse response = client.searchAllIamPolicies(request);
      System.out.println("Search completed successfully:\n" + response.getPage().getValues());
    } catch (IOException e) {
      System.out.println(String.format("Failed to create client:%n%s", e.toString()));
    } catch (InvalidArgumentException e) {
      System.out.println(String.format("Invalid request:%n%s", e.toString()));
    } catch (ApiException e) {
      System.out.println(String.format("Error during SearchAllIamPolicies:%n%s", e.toString()));
    }
  }
}

Node.js

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Asset Inventory, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de Cloud Asset Inventory, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const scope = '';
// const query = '';
// const pageSize = 0;
// const pageToken = '';

const util = require('util');
const {AssetServiceClient} = require('@google-cloud/asset');

const client = new AssetServiceClient();
const projectId = await client.getProjectId();

async function searchAllIamPolicies() {
  const request = {
    scope: `projects/${projectId}`,
    query: query,
    pageSize: pageSize,
    pageToken: pageToken,
  };
  const options = {
    autoPaginate: false,
  };

  // Handle the operation using the promise pattern.
  const result = await client.searchAllIamPolicies(request, options);
  // Do things with with the response.
  console.log(util.inspect(result, {depth: null}));
}

PHP

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Asset Inventory, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de Cloud Asset Inventory, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

use Google\Cloud\Asset\V1\Client\AssetServiceClient;
use Google\Cloud\Asset\V1\SearchAllIamPoliciesRequest;

/**
 * @param string $scope      Scope of the search
 * @param string $query      (Optional) Query statement
 * @param int    $pageSize   (Optional) Size of each result page
 * @param string $pageToken  (Optional) Token produced by the preceding call
 */
function search_all_iam_policies(
    string $scope,
    string $query = '',
    int $pageSize = 0,
    string $pageToken = ''
) {
    // Instantiate a client.
    $asset = new AssetServiceClient();

    // Run request
    $request = (new SearchAllIamPoliciesRequest())
        ->setScope($scope)
        ->setQuery($query)
        ->setPageSize($pageSize)
        ->setPageToken($pageToken);
    $response = $asset->searchAllIamPolicies($request);

    // Print the resources that the policies are set on
    foreach ($response->getPage() as $policy) {
        print($policy->getResource() . PHP_EOL);
    }
}

Python

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Asset Inventory, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de Cloud Asset Inventory, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

from google.cloud import asset_v1

# TODO scope = 'Scope of the search'
# TODO query = 'Query statement'
# TODO page_size = Size of each result page

client = asset_v1.AssetServiceClient()
response = client.search_all_iam_policies(
    request={"scope": scope, "query": query, "page_size": page_size}
)
for policy in response:
    print(policy)
    break

Ruby

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Asset Inventory, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de Cloud Asset Inventory, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

require "google/cloud/asset"

# scope = 'SCOPE_OF_THE_QUERY'
# query = 'QUERY_STATEMENT'
# page_size = 'SIZE_OF_EACH_RESULT_PAGE'
# page_token = 'TOKEN_PRODUCED_BY_THE_PRECEDING_CALL'
asset_service = Google::Cloud::Asset.asset_service

response = asset_service.search_all_iam_policies(
  scope:      scope,
  query:      query,
  page_size:  page_size,
  page_token: page_token
)
# Do things with the response
response.page.each do |policy|
  puts policy
end

Exemples de recherches supplémentaires

Les exemples de code suivants présentent des requêtes de recherche spécifiques pour gcloud et REST afin de vous aider à créer vos propres recherches.

Ressources avec des stratégies d'autorisation IAM

L'exemple suivant montre comment rechercher toutes les ressources avec des stratégies d'autorisation IAM dans le projet my-project.

gcloud

gcloud asset search-all-iam-policies \
    --scope=projects/my-project \
    --flatten="policy.bindings[].members[]" \
    --format="table(resource, policy.bindings.role, policy.bindings.members)"

REST

Méthode HTTP et URL :

GET https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies

Exemples de commandes

curl (Linux, macOS ou Cloud Shell)

curl -X GET \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "Authorization" = "Bearer $cred"
}


Invoke-WebRequest `
  -Method GET `
  -Headers $headers `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies" | Select-Object -Expand Content

Ressources nommées avec des stratégies d'autorisation IAM

L'exemple suivant montre comment rechercher toutes les ressources contenant example dans leur nom qui disposent de stratégies d'autorisation IAM.

gcloud

gcloud asset search-all-iam-policies \
    --scope=projects/my-project \
    --query="resource:example"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies

Corps JSON de la requête :

{
  "pageSize": 1,
  "query": "resource:example"
}

Exemples de commandes

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 '{
            "pageSize": 1,
            "query": "resource:example"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "pageSize": 1,
  "query": "resource:example"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies" | Select-Object -Expand Content

Stratégies d'autorisation IAM sur les projets, les dossiers et les organisations

L'exemple suivant montre comment rechercher toutes les stratégies d'autorisation IAM sur tous les projets et dossiers de l'organisation avec l'ID my-organization-id.

Trouver l'ID d'une Google Cloud organisation

Console Google Cloud

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

  1. Accédez à Google Cloud Console.

    Accéder à la console Google Cloud

  2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
  3. Sélectionnez votre organisation dans la liste.
  4. Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.

CLI gcloud

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

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

gcloud

gcloud asset search-all-iam-policies \
    --scope=organizations/my-organization-id \
    --asset-types=cloudresourcemanager.*

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies

Corps JSON de la requête :

{
  "assetTypes": "cloudresourcemanager.*",
  "pageSize": 1,
}

Exemples de commandes

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 '{
            "assetTypes": "cloudresourcemanager.*",
            "pageSize": 1,
          }' \
     https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "assetTypes": "cloudresourcemanager.*",
  "pageSize": 1,
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies" | Select-Object -Expand Content

Propriétaires d'un projet

L'exemple suivant montre comment rechercher des comptes principaux disposant du rôle propriétaire (roles/owner) sur le projet my-project.

Cette requête ne renvoie que les principaux auxquels le rôle de propriétaire a été attribué dans le projet. Il n'inclut pas les comptes principaux qui héritent du rôle de propriétaire via l'héritage de stratégie.

gcloud

gcloud asset search-all-iam-policies \
    --scope=projects/my-project \
    --query="roles:roles/owner" \
    --asset-types=cloudresourcemanager.* \
    --flatten="policy.bindings[].members[]" \
    --format="table(policy.bindings.members)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies

Corps JSON de la requête :

{
  "assetTypes": "cloudresourcemanager.*",
  "pageSize": 1,
  "query": "roles:roles/owner"
}

Exemples de commandes

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 '{
            "assetTypes": "cloudresourcemanager.*",
            "pageSize": 1,
            "query": "roles:roles/owner"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "assetTypes": "cloudresourcemanager.*",
  "pageSize": 1,
  "query": "roles:roles/owner"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies" | Select-Object -Expand Content

Projets pour lesquels un compte principal dispose du rôle de propriétaire

L'exemple suivant montre comment rechercher des projets pour lesquels alex@example.com dispose du rôle de propriétaire (roles/owner) dans l'organisation dont l'ID est my-organization-id.

Cette requête ne renvoie que les projets pour lesquels alex@example.com a reçu le rôle de propriétaire. Il n'inclut pas les projets pour lesquels alex@example.com a hérité du rôle de propriétaire.

Trouver l'ID d'une Google Cloud organisation

Console Google Cloud

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

  1. Accédez à Google Cloud Console.

    Accéder à la console Google Cloud

  2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
  3. Sélectionnez votre organisation dans la liste.
  4. Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.

CLI gcloud

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

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

gcloud

gcloud asset search-all-iam-policies \
    --scope=organizations/my-organization-id \
    --query="policy:(roles/owner alex@example.com)" \
    --asset-types=cloudresourcemanager.googleapis.com/Project \
    --format="table(resource)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies

Corps JSON de la requête :

{
  "assetTypes": "cloudresourcemanager.googleapis.com/Project",
  "pageSize": 1,
  "query": "policy:(roles/owner alex@example.com)"
}

Exemples de commandes

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 '{
            "assetTypes": "cloudresourcemanager.googleapis.com/Project",
            "pageSize": 1,
            "query": "policy:(roles/owner alex@example.com)"
          }' \
     https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "assetTypes": "cloudresourcemanager.googleapis.com/Project",
  "pageSize": 1,
  "query": "policy:(roles/owner alex@example.com)"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies" | Select-Object -Expand Content

Rôles d'un compte principal dans un projet

L'exemple suivant montre comment rechercher les rôles de alex@example.com sur le projet my-project.

Cette requête ne renvoie que les rôles accordés à alex@example.com sur le projet. Elle n'inclut pas les rôles hérités par alex@example.com via l'héritage de stratégie.

gcloud

gcloud asset search-all-iam-policies \
    --scope=projects/my-project \
    --query="policy:alex@example.com" \
    --asset-types=cloudresourcemanager.googleapis.com/Project \
    --flatten="policy.bindings[]" \
    --format="table(policy.bindings.role)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies

Corps JSON de la requête :

{
  "assetTypes": "cloudresourcemanager.googleapis.com/Project",
  "pageSize": 1,
  "query": "policy:alex@example.com"
}

Exemples de commandes

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 '{
            "assetTypes": "cloudresourcemanager.googleapis.com/Project",
            "pageSize": 1,
            "query": "policy:alex@example.com"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "assetTypes": "cloudresourcemanager.googleapis.com/Project",
  "pageSize": 1,
  "query": "policy:alex@example.com"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies" | Select-Object -Expand Content

Autorisations d'un compte principal sur un projet

L'exemple suivant montre comment rechercher les autorisations dont alex@example.com dispose sur le projet my-project.

Cette requête ne renvoie que les autorisations dont alex@example.com dispose sur le projet. Il n'inclut pas les autorisations héritées par alex@example.com via l'héritage de stratégie.

gcloud

gcloud asset search-all-iam-policies \
    --scope=projects/my-project \
    --query="policy:alex@example.com policy.role.permissions:\"\"" \
    --asset-types=cloudresourcemanager.* \
    --format="default(explanation.matchedPermissions)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies

Corps JSON de la requête :

{
  "assetTypes": "cloudresourcemanager.*",
  "pageSize": 1,
  "query": "policy:alex@example.com  policy.role.permissions:\"\""
}

Exemples de commandes

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 '{
            "assetTypes": "cloudresourcemanager.*",
            "pageSize": 1,
            "query": "policy:alex@example.com  policy.role.permissions:\"\""
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "assetTypes": "cloudresourcemanager.*",
  "pageSize": 1,
  "query": "policy:alex@example.com  policy.role.permissions:\"\""
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies" | Select-Object -Expand Content

Entités autorisées à accéder aux buckets Cloud Storage

L'exemple suivant montre comment rechercher des principaux pouvant accéder aux buckets Cloud Storage dans le projet my-project.

gcloud

gcloud asset search-all-iam-policies \
    --scope=projects/my-project \
    --query="policy.role.permissions:storage.buckets" \
    --asset-types=cloudresourcemanager.* \
    --flatten="policy.bindings[].members[]" \
    --format="table(policy.bindings.members)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies

Corps JSON de la requête :

{
  "assetTypes": "cloudresourcemanager.*",
  "pageSize": 1,
  "query": "policy.role.permissions:storage.buckets"
}

Exemples de commandes

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 '{
            "assetTypes": "cloudresourcemanager.*",
            "pageSize": 1,
            "query": "policy.role.permissions:storage.buckets"
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "assetTypes": "cloudresourcemanager.*",
  "pageSize": 1,
  "query": "policy.role.permissions:storage.buckets"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:searchAllIamPolicies" | Select-Object -Expand Content

Comptes de service disposant d'un rôle propriétaire

L'exemple suivant montre comment rechercher des comptes de service avec le rôle propriétaire (roles/owner) dans l'organisation avec my-organization-id. Vous pouvez utiliser cette requête pour réduire votre profil de risque.

Trouver l'ID d'une Google Cloud organisation

Console Google Cloud

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

  1. Accédez à Google Cloud Console.

    Accéder à la console Google Cloud

  2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
  3. Sélectionnez votre organisation dans la liste.
  4. Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.

CLI gcloud

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

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

gcloud

Cet exemple utilise la commande "grep", qui est disponible dans Cloud Shell et les systèmes d'exploitation de type Unix.

gcloud asset search-all-iam-policies \
    --scope=organizations/my-organization-id \
    --query="policy:(roles/owner serviceAccount)" \
    --flatten="policy.bindings[].members[]" \
    --format="table(resource.segment(3):label=RESOURCE_TYPE, resource.basename():label=RESOURCE, policy.bindings.members)" |
    grep serviceAccount

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies

Corps JSON de la requête :

{
  "pageSize": 1,
  "query": "policy:(roles/owner serviceAccount)"
}

Exemples de commandes

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 '{
            "pageSize": 1,
            "query": "policy:(roles/owner serviceAccount)"
          }' \
     https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "pageSize": 1,
  "query": "policy:(roles/owner serviceAccount)"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies" | Select-Object -Expand Content

Ressources avec des rôles attribués à un domaine

L'exemple suivant montre comment rechercher des ressources avec des rôles accordés au domaine example.com, dans l'organisation avec l'ID my-organization-id.

Trouver l'ID d'une Google Cloud organisation

Console Google Cloud

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

  1. Accédez à Google Cloud Console.

    Accéder à la console Google Cloud

  2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
  3. Sélectionnez votre organisation dans la liste.
  4. Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.

CLI gcloud

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

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

gcloud

gcloud asset search-all-iam-policies \
    --scope=organizations/my-organization-id \
    --query="policy:\"domain:example.com\"" \
    --flatten="policy.bindings[]" \
    --format="table(resource, policy.bindings.role)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies

Corps JSON de la requête :

{
  "pageSize": 1,
  "query": "policy:\"domain:DOMAIN_NAME\""
}

Exemples de commandes

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 '{
            "pageSize": 1,
            "query": "policy:\"domain:DOMAIN_NAME\""
          }' \
     https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "pageSize": 1,
  "query": "policy:\"domain:DOMAIN_NAME\""
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies" | Select-Object -Expand Content

Ressources avec des rôles accordés au public

L'exemple suivant montre comment rechercher des ressources avec des rôles accordés au public, dans l'organisation avec l'ID my-organization-id.

Trouver l'ID d'une Google Cloud organisation

Console Google Cloud

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

  1. Accédez à Google Cloud Console.

    Accéder à la console Google Cloud

  2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
  3. Sélectionnez votre organisation dans la liste.
  4. Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.

CLI gcloud

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

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

gcloud

gcloud asset search-all-iam-policies \
    --scope=organizations/my-organization-id \
    --query="memberTypes:(allUsers OR allAuthenticatedUsers)" \
    --format="table(resource)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies

Corps JSON de la requête :

{
  "pageSize": 1,
  "query": "memberTypes:(allUsers OR allAuthenticatedUsers)"
}

Exemples de commandes

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 '{
            "pageSize": 1,
            "query": "memberTypes:(allUsers OR allAuthenticatedUsers)"
          }' \
     https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "pageSize": 1,
  "query": "memberTypes:(allUsers OR allAuthenticatedUsers)"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies" | Select-Object -Expand Content

Entités principales autorisées à modifier les stratégies d'autorisation IAM dans une organisation

L'exemple suivant montre comment rechercher des principaux pouvant modifier les stratégies d'autorisation IAM dans l'organisation avec l'ID my-organization-id.

Trouver l'ID d'une Google Cloud organisation

Console Google Cloud

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

  1. Accédez à Google Cloud Console.

    Accéder à la console Google Cloud

  2. Cliquez sur la liste déroulante Basculateur dans la barre de menu.
  3. Sélectionnez votre organisation dans la liste.
  4. Cliquez sur l'onglet Tous. L'ID de l'organisation s'affiche à côté de son nom.

CLI gcloud

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

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

gcloud

gcloud asset search-all-iam-policies \
    --scope=organizations/my-organization-id \
    --query="policy.role.permissions:(resourcemanager.organizations.setIamPolicy OR resourcemanager.folders.setIamPolicy OR resourcemanager.projects.setIamPolicy)" \
    --format="json(resource, policy.bindings, explanation.matchedPermissions)"

REST

Méthode HTTP et URL :

POST https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies

Corps JSON de la requête :

{
  "pageSize": 1,
  "query": "policy.role.permissions:(resourcemanager.organizations.setIamPolicy OR resourcemanager.folders.setIamPolicy OR resourcemanager.projects.setIamPolicy)"
}

Exemples de commandes

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 '{
            "pageSize": 1,
            "query": "policy.role.permissions:(resourcemanager.organizations.setIamPolicy OR resourcemanager.folders.setIamPolicy OR resourcemanager.projects.setIamPolicy)"
          }' \
     https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "pageSize": 1,
  "query": "policy.role.permissions:(resourcemanager.organizations.setIamPolicy OR resourcemanager.folders.setIamPolicy OR resourcemanager.projects.setIamPolicy)"
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id:searchAllIamPolicies" | Select-Object -Expand Content