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 inventaire des éléments cloud.

    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 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 des requêtes 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.

Gardez à l'esprit les limites suivantes lorsque vous créez une requête :

  • Le champ policy est un objet imbriqué. Il ne peut donc être utilisé qu'avec l'opérateur :.

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

Les champs supplémentaires suivants peuvent également être utilisés 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 des requêtes de recherche, puis affinez-la jusqu'à obtenir les résultats souhaité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 la recherche.
  3. Cliquez sur l'onglet Stratégie IAM.
  4. Pour rechercher des règles d'autorisation, saisissez une requête dans le champ Filtre. Pour savoir comment rédiger une requête de recherche, consultez Syntaxe des requêtes de recherche.

    Pour faciliter la création de requêtes, vous pouvez cliquer sur le champ Filtre afin d'afficher et d'ajouter les champs de recherche disponibles à votre requête.

Après avoir effectué une recherche, les règles d'autorisation correspondant à la requête sont listé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 selon des 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 les éléments avec des règles d'autorisation IAM que vous souhaitez rechercher.
    • projects/PROJECT_NUMBER, où PROJECT_NUMBER correspond au numéro du projet contenant les éléments avec des règles d'autorisation IAM que vous souhaitez rechercher.

      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 :

      1. Accédez à la page d'accueil de la console Google Cloud .

        Accéder à la page d'accueil

      2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
      3. 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.

      CLI gcloud

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

      Trouver l'ID d'un dossier Google Cloud

      ConsoleGoogle Cloud

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

      1. Accédez à la console Google Cloud .

        Accéder à la console Google Cloud

      2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
      3. Sélectionnez votre organisation dans la zone de 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 est une correspondance de chaîne partielle ou complète pour le nom du dossier. Supprimez l'option --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 premier niveau :

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

      Trouver l'ID d'une organisation Google Cloud

      ConsoleGoogle Cloud

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

      1. Accédez à la console Google Cloud .

        Accéder à la console Google Cloud

      2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
      3. Sélectionnez votre organisation dans la zone de 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 organisation Google Cloud à 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 Syntaxe des requêtes de recherche.
  • ASSET_TYPE_# : facultatif. Liste de 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. Pour savoir quels champs peuvent être triés, consultez la documentation de référence.

Vous pouvez utiliser les options --format et --flatten pour mettre en forme le résultat de gcloud CLI.

Consultez la documentation de référence de gcloud CLI pour connaître 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 liaison de stratégie d'autorisation IAM les liant à l'utilisateur alex@example.com. Les résultats sont classé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 les éléments avec des règles d'autorisation IAM que vous souhaitez rechercher.
    • projects/PROJECT_NUMBER, où PROJECT_NUMBER correspond au numéro du projet contenant les éléments avec des règles d'autorisation IAM que vous souhaitez rechercher.

      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 :

      1. Accédez à la page d'accueil de la console Google Cloud .

        Accéder à la page d'accueil

      2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
      3. 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.

      CLI gcloud

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

      Trouver l'ID d'un dossier Google Cloud

      ConsoleGoogle Cloud

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

      1. Accédez à la console Google Cloud .

        Accéder à la console Google Cloud

      2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
      3. Sélectionnez votre organisation dans la zone de 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 est une correspondance de chaîne partielle ou complète pour le nom du dossier. Supprimez l'option --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 premier niveau :

      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 règles d'autorisation IAM que vous souhaitez rechercher.

      Trouver l'ID d'une organisation Google Cloud

      ConsoleGoogle Cloud

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

      1. Accédez à la console Google Cloud .

        Accéder à la console Google Cloud

      2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
      3. Sélectionnez votre organisation dans la zone de 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 organisation Google Cloud à l'aide de la commande suivante :

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • QUERY : facultatif. Expression de la 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 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. Pour savoir quels champs peuvent être triés, consultez la documentation de référence.
  • 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. Si pageToken n'est pas spécifié, la première page est renvoyée. Les pages suivantes peuvent être appelées en utilisant le 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 liaison de stratégie d'autorisation IAM les liant à l'utilisateur alex@example.com. Les résultats sont classé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 inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de inventaire des éléments cloud, configurez les 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 inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de inventaire des éléments cloud, configurez les 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 inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de inventaire des éléments cloud, configurez les 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 inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de inventaire des éléments cloud, configurez les 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 inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de inventaire des éléments cloud, configurez les 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 inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de inventaire des éléments cloud, configurez les 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 inventaire des éléments cloud, consultez la page Bibliothèques clientes Cloud Asset Inventory.

Pour vous authentifier auprès de inventaire des éléments cloud, configurez les 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

Autres exemples de recherches

Les exemples de code suivants montrent 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 règles 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 dont le nom contient example et 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 IAM "Autoriser" sur tous les projets et dossiers 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 :

  1. Accédez à la console Google Cloud .

    Accéder à la console Google Cloud

  2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
  3. Sélectionnez votre organisation dans la zone de 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 organisation Google Cloud à 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 les comptes principaux disposant du rôle Propriétaire (roles/owner) dans le projet my-project.

Cette requête ne renvoie que les comptes principaux auxquels le rôle "Propriétaire" a été attribué dans le projet. Elle 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 les projets dans 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 le rôle Propriétaire a été attribué à alex@example.com. 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 organisation Google Cloud

ConsoleGoogle Cloud

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

  1. Accédez à la console Google Cloud .

    Accéder à la console Google Cloud

  2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
  3. Sélectionnez votre organisation dans la zone de 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 organisation Google Cloud à 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 dont dispose alex@example.com sur le projet my-project.

Cette requête ne renvoie que les rôles accordés à alex@example.com dans le projet. Elle n'inclut pas les rôles que alex@example.com a hérités 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 dont dispose un compte principal sur un projet

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

Cette requête ne renvoie que les autorisations dont dispose alex@example.com sur le projet. Il n'inclut pas les autorisations que alex@example.com a héritées 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 pouvant accéder aux buckets Cloud Storage

L'exemple suivant montre comment rechercher les 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 de propriétaire

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

Trouver l'ID d'une organisation Google Cloud

ConsoleGoogle Cloud

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

  1. Accédez à la console Google Cloud .

    Accéder à la console Google Cloud

  2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
  3. Sélectionnez votre organisation dans la zone de 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 organisation Google Cloud à 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 organisation Google Cloud

ConsoleGoogle Cloud

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

  1. Accédez à la console Google Cloud .

    Accéder à la console Google Cloud

  2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
  3. Sélectionnez votre organisation dans la zone de 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 organisation Google Cloud à 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 disposant de 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 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 :

  1. Accédez à la console Google Cloud .

    Accéder à la console Google Cloud

  2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
  3. Sélectionnez votre organisation dans la zone de 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 organisation Google Cloud à 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 pouvant modifier les stratégies d'autorisation IAM dans une organisation

L'exemple suivant montre comment rechercher les comptes principaux qui peuvent modifier les stratégies d'autorisation IAM dans 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 :

  1. Accédez à la console Google Cloud .

    Accéder à la console Google Cloud

  2. Cliquez sur la zone de liste du sélecteur dans la barre de menu.
  3. Sélectionnez votre organisation dans la zone de 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 organisation Google Cloud à 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