Busca políticas de permisos de IAM en los recursos

Puedes buscar políticas de permisos de IAM en tus recursos de un proyecto, una carpeta o una organización, y filtrar los resultados que se muestran con una consulta.

Antes de comenzar

  1. Habilita la API de Cloud Asset Inventory en el proyecto en el que ejecutas los comandos de Cloud Asset Inventory.

    Habilita la API de Cloud Asset Inventory

  2. Asegúrate de que tu cuenta tenga el rol correcto para llamar a la API de Cloud Asset Inventory. Para obtener información sobre los permisos individuales de cada tipo de llamada, consulta Permisos.

Cómo crear una consulta

Antes de crear una consulta, puede ser útil comenzar con una solicitud de búsqueda que no especifique una consulta. Usa los campos y valores de la respuesta completa para crear una consulta con la sintaxis de la búsqueda y definirla mejor hasta que se muestren los resultados que deseas.

Los campos que se pueden usar en una consulta se detallan en la documentación de referencia de IamPolicySearchResult.

Ten en cuenta las siguientes limitaciones cuando crees una consulta:

  • El campo policy es un objeto anidado, por lo que solo se puede usar con el operador :.

  • No todos los tipos de recursos se pueden buscar. Consulta Tipos de recursos para confirmar si un servicio no está disponible en las APIs de búsqueda.

Los siguientes campos adicionales también se pueden usar para restringir los resultados a ciertos tipos, permisos o roles principales:

Campo Descripción
memberTypes

Contiene uno de los siguientes tipos de principales de IAM:

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

Contiene permisos de IAM específicos.

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

Contiene roles de IAM específicos.

Ejemplo
roles=roles/storage.objectAdmin

Busca políticas de permisos de IAM

Antes de crear una consulta, puede ser útil comenzar con una solicitud de búsqueda que no especifique una. Usa los campos y valores de la respuesta completa para crear una consulta con la sintaxis de la búsqueda y definirla mejor hasta que se muestren los resultados que deseas.

Console

Para buscar metadatos de políticas de permisos de IAM, completa los siguientes pasos:

  1. Ve a la página Inventario de activos en la consola de Google Cloud .

    Ir a Asset Inventory

  2. Cambia al proyecto, la carpeta o la organización que deseas buscar.
  3. Haz clic en la pestaña Política de IAM.
  4. Para buscar políticas de permisos, ingresa una consulta en el campo Filtro. Consulta Sintaxis de las consultas de búsqueda para aprender a escribir una consulta de búsqueda.

    Para facilitar la construcción de consultas, puedes hacer clic en el campo Filtrar para mostrar y agregar los campos de búsqueda disponibles a tu consulta.

Después de realizar una búsqueda, las políticas de permiso que coinciden con la consulta se enumeran en la tabla Resultados. Haz doble clic en la búsqueda para editarla o usa el panel Filtrar resultados para aplicar ajustes predeterminados de búsqueda rápidos o restringir los resultados de la búsqueda según criterios específicos.

Para ver la consulta como un comando de Google Cloud CLI, haz clic en Ver consulta.

Para exportar los resultados, haz clic en Descargar 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"

Ingresa los siguientes valores:

  • SCOPE_PATH: Usa uno de los siguientes valores:

    Los valores permitidos son los siguientes:

    • projects/PROJECT_ID, donde PROJECT_ID es el ID del proyecto que tiene recursos con políticas de IAM Allow que deseas buscar.
    • projects/PROJECT_NUMBER, en la que PROJECT_NUMBER es el número del proyecto que tiene recursos con políticas de IAM que deseas buscar.

      Cómo encontrar un número de proyecto de Google Cloud

      consola de

      Para encontrar el número de proyecto de Google Cloud , completa los siguientes pasos:

      1. Ve a la página Bienvenido en la consola de Google Cloud .

        Ve a Bienvenida

      2. Haz clic en el cuadro de lista del selector en la barra de menú.
      3. Selecciona tu organización en el cuadro de lista y, luego, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Te damos la bienvenida.

        Se muestran hasta 4,000 recursos. Si no ves el proyecto que buscas, ve a la página Administrar recursos y filtra la lista con el nombre de ese proyecto.

      gcloud CLI

      Puedes recuperar un número de proyecto de Google Cloud con el siguiente comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, en la que FOLDER_ID es el ID de la carpeta que tiene recursos con políticas de IAM que deseas buscar.

      Cómo encontrar el ID de una carpeta de Google Cloud

      consola de

      Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:

      1. Ve a la consola de Google Cloud .

        Ve a la consola de Google Cloud

      2. Haz clic en el cuadro de lista del selector en la barra de menú.
      3. Selecciona tu organización en el cuadro de lista.
      4. Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.

      gcloud CLI

      Puedes recuperar el ID de una carpeta de Google Cloud que se encuentra a nivel de la organización con el siguiente comando:

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

      En el que TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca --format para ver más información sobre las carpetas encontradas.

      El comando anterior no muestra los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, en la que ORGANIZATION_ID es el ID de la organización que tiene recursos con políticas de IAM de permiso que deseas buscar.

      Cómo encontrar el ID de una organización de Google Cloud

      consola de

      Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:

      1. Ve a la consola de Google Cloud .

        Ve a la consola de Google Cloud

      2. Haz clic en el cuadro de lista del selector en la barra de menú.
      3. Selecciona tu organización en el cuadro de lista.
      4. Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.

      gcloud CLI

      Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • QUERY: Opcional Es la expresión de consulta. Si no se especifica o está vacío, se buscarán todos los recursos en el alcance especificado. Para obtener información sobre cómo escribir una consulta de búsqueda, consulta Sintaxis de búsqueda.
  • ASSET_TYPE_#: Opcional Es una lista separada por comas de tipo de recursos que se pueden buscar. Se admiten expresiones regulares compatibles con RE2. Si la expresión regular no coincide con ningún tipo de activo compatible, se muestra un error INVALID_ARGUMENT. Cuando no se especifica --asset-types, se muestran todos los tipos de activos.
  • ORDER_BY: Opcional Es una lista de campos separados por comas que especifican el orden de clasificación de los resultados. El orden predeterminado es ascendente. Agrega DESC después del nombre del campo para indicar el orden descendente. Consulta la documentación de referencia para saber qué campos se pueden ordenar.

Puedes usar las marcas --format y --flatten para dar formato al resultado de gcloud CLI.

Consulta la referencia de la CLI de gcloud para ver todas las opciones.

Ejemplo

Ejecuta el siguiente comando para obtener una lista de todas las instancias de Compute Engine (compute.googleapis.com/Instance) en el proyecto my-project con una política de permisos de IAM que las vincula al usuario alex@example.com. Los resultados se ordenan de forma descendente por recurso (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"

Respuesta de ejemplo

---
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étodo HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Ingresa los siguientes valores:

  • SCOPE_PATH: Usa uno de los siguientes valores:

    Los valores permitidos son los siguientes:

    • projects/PROJECT_ID, donde PROJECT_ID es el ID del proyecto que tiene recursos con políticas de IAM Allow que deseas buscar.
    • projects/PROJECT_NUMBER, en la que PROJECT_NUMBER es el número del proyecto que tiene recursos con políticas de IAM Allow que deseas buscar.

      Cómo encontrar el número de proyecto de Google Cloud

      consola de

      Para encontrar el número de proyecto de Google Cloud , completa los siguientes pasos:

      1. Ve a la página Bienvenido en la consola de Google Cloud .

        Ve a Bienvenida

      2. Haz clic en el cuadro de lista del selector en la barra de menú.
      3. Selecciona tu organización en el cuadro de lista y, luego, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Te damos la bienvenida.

        Se muestran hasta 4,000 recursos. Si no ves el proyecto que buscas, ve a la página Administrar recursos y filtra la lista con el nombre de ese proyecto.

      gcloud CLI

      Puedes recuperar un número de proyecto de Google Cloud con el siguiente comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, en la que FOLDER_ID es el ID de la carpeta que tiene recursos con políticas de IAM que deseas buscar.

      Cómo encontrar el ID de una carpeta de Google Cloud

      consola de

      Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:

      1. Ve a la consola de Google Cloud .

        Ve a la consola de Google Cloud

      2. Haz clic en el cuadro de lista del selector en la barra de menú.
      3. Selecciona tu organización en el cuadro de lista.
      4. Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.

      gcloud CLI

      Puedes recuperar el ID de una carpeta de Google Cloud que se encuentra a nivel de la organización con el siguiente comando:

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

      En el que TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca --format para ver más información sobre las carpetas encontradas.

      El comando anterior no muestra los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, en la que ORGANIZATION_ID es el ID de la organización que tiene recursos con políticas de IAM de permiso que deseas buscar.

      Cómo encontrar el ID de una organización de Google Cloud

      consola de

      Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:

      1. Ve a la consola de Google Cloud .

        Ve a la consola de Google Cloud

      2. Haz clic en el cuadro de lista del selector en la barra de menú.
      3. Selecciona tu organización en el cuadro de lista.
      4. Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.

      gcloud CLI

      Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • QUERY: Opcional Es la expresión de consulta. Si no se especifica o está vacío, se buscarán todos los recursos en el alcance especificado. Para obtener información sobre cómo escribir una consulta de búsqueda, consulta Sintaxis de búsqueda.
  • ASSET_TYPE_#: Opcional Es un array de tipo de recursos que se pueden buscar. Se admiten expresiones regulares compatibles con RE2. Si la expresión regular no coincide con ningún tipo de activo compatible, se muestra un error INVALID_ARGUMENT. Cuando no se especifica assetTypes, se muestran todos los tipos de activos.
  • ORDER_BY: Opcional Es una lista de campos separados por comas que especifican el orden de clasificación de los resultados. El orden predeterminado es ascendente. Agrega DESC después del nombre del campo para indicar el orden descendente. Consulta la documentación de referencia para saber qué campos se pueden ordenar.
  • PAGE_SIZE: Opcional Es la cantidad de resultados que se mostrarán por página. La cantidad máxima es 500. Si el valor se establece en 0 o en un valor negativo, se selecciona un valor predeterminado adecuado. Se muestra un nextPageToken para recuperar los resultados posteriores.

  • PAGE_TOKEN: Opcional Las respuestas de solicitudes largas se separan en varias páginas. Cuando no se especifica pageToken, se muestra la primera página. Para llamar a las páginas posteriores, usa el nextPageToken de la respuesta anterior como el valor de pageToken.

Consulta la referencia de REST para ver todas las opciones.

Ejemplos de comandos

Ejecuta uno de los siguientes comandos para obtener una lista de todas las instancias de Compute Engine (compute.googleapis.com/Instance) en el proyecto my-project con una política de permisos de IAM que las vincule al usuario alex@example.com. Los resultados se ordenan de forma descendente por recurso (resource DESC).

curl (Linux, macOS o 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

Respuesta de ejemplo

{
  "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#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.

Para autenticarte en Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.

Para autenticarte en el Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.

Para autenticarte en Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.

Para autenticarte en Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.

Para autenticarte en el Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.

Para autenticarte en el Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Asset Inventory, consulta Bibliotecas cliente de Cloud Asset Inventory.

Para autenticarte en el Cloud Asset Inventory, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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

Ejemplos de búsqueda adicionales

En las siguientes muestras de código, se muestran búsquedas específicas para gcloud y REST para ayudarte a crear tus propias búsquedas.

Recursos con políticas de permisos de IAM

En el siguiente ejemplo, se muestra cómo buscar todos los recursos con políticas de permisos de IAM en el proyecto 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étodo HTTP y URL:

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

Ejemplos de comandos

curl (Linux, macOS o 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

Recursos nombrados con políticas de permisos de IAM

En el siguiente ejemplo, se muestra cómo buscar todos los recursos con example en su nombre que tengan políticas de permisos de IAM.

gcloud

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

REST

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Ejemplos de comandos

curl (Linux, macOS o 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

Políticas de permisos de IAM en proyectos, carpetas y organizaciones

En el siguiente ejemplo, se muestra cómo buscar todas las políticas de IAM permitidas en todos los proyectos y carpetas de la organización con el ID my-organization-id.

Cómo encontrar el ID de una organización de Google Cloud

consola de

Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:

  1. Ve a la consola de Google Cloud .

    Ve a la consola de Google Cloud

  2. Haz clic en el cuadro de lista del selector en la barra de menú.
  3. Selecciona tu organización en el cuadro de lista.
  4. Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.

gcloud CLI

Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:

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étodo HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Ejemplos de comandos

curl (Linux, macOS o 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

Propietarios de un proyecto

En el siguiente ejemplo, se muestra cómo buscar principales con el rol de propietario (roles/owner) en el proyecto my-project.

Esta solicitud solo muestra los principales a los que se les otorgó el rol de propietario en el proyecto. No incluye a las principales que heredan el rol de propietario a través de la herencia de políticas.

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étodo HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Ejemplos de comandos

curl (Linux, macOS o 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

Proyectos en los que un principal tiene el rol de propietario

En el siguiente ejemplo, se muestra cómo buscar proyectos en los que alex@example.com tiene el rol de propietario (roles/owner) en la organización con el ID my-organization-id.

Esta solicitud solo muestra los proyectos en los que se le otorgó el rol de propietario a alex@example.com. No incluye los proyectos en los que alex@example.com heredó el rol de propietario.

Cómo encontrar el ID de una organización de Google Cloud

consola de

Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:

  1. Ve a la consola de Google Cloud .

    Ve a la consola de Google Cloud

  2. Haz clic en el cuadro de lista del selector en la barra de menú.
  3. Selecciona tu organización en el cuadro de lista.
  4. Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.

gcloud CLI

Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:

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étodo HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Ejemplos de comandos

curl (Linux, macOS o 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

Roles que tiene un principal en un proyecto

En el siguiente ejemplo, se muestra cómo buscar los roles que tiene alex@example.com en el proyecto my-project.

Esta solicitud solo muestra los roles que se le otorgan a alex@example.com en el proyecto. No incluye los roles que alex@example.com heredó a través de la herencia de políticas.

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étodo HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Ejemplos de comandos

curl (Linux, macOS o 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

Permisos que tiene un principal en un proyecto

En el siguiente ejemplo, se muestra cómo buscar los permisos que tiene alex@example.com en el proyecto my-project.

Esta solicitud solo muestra los permisos que tiene alex@example.com en el proyecto. No incluye los permisos que alex@example.com heredó a través de la herencia de políticas.

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étodo HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Ejemplos de comandos

curl (Linux, macOS o 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

Principales que pueden acceder a los buckets de Cloud Storage

En el siguiente ejemplo, se muestra cómo buscar principales que puedan acceder a los buckets de Cloud Storage en el proyecto 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étodo HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Ejemplos de comandos

curl (Linux, macOS o 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

Cuentas de servicio que tienen un rol de propietario

En el siguiente ejemplo, se muestra cómo buscar cuentas de servicio con el rol de propietario (roles/owner) en la organización con my-organization-id. Puedes usar esta consulta para reducir tu perfil de riesgo.

Cómo encontrar el ID de una organización de Google Cloud

consola de

Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:

  1. Ve a la consola de Google Cloud .

    Ve a la consola de Google Cloud

  2. Haz clic en el cuadro de lista del selector en la barra de menú.
  3. Selecciona tu organización en el cuadro de lista.
  4. Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.

gcloud CLI

Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:

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

gcloud

En este ejemplo, se usa el comando "grep", que está disponible en Cloud Shell y en sistemas operativos similares a 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étodo HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Ejemplos de comandos

curl (Linux, macOS o 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

Recursos con roles otorgados a un dominio

En el siguiente ejemplo, se muestra cómo buscar recursos con roles otorgados al dominio example.com en la organización con el ID my-organization-id.

Cómo encontrar el ID de una organización de Google Cloud

consola de

Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:

  1. Ve a la consola de Google Cloud .

    Ve a la consola de Google Cloud

  2. Haz clic en el cuadro de lista del selector en la barra de menú.
  3. Selecciona tu organización en el cuadro de lista.
  4. Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.

gcloud CLI

Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:

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étodo HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Ejemplos de comandos

curl (Linux, macOS o 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

Recursos con roles otorgados al público

En el siguiente ejemplo, se muestra cómo buscar recursos con roles otorgados al público en la organización con el ID my-organization-id.

Cómo encontrar el ID de una organización de Google Cloud

consola de

Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:

  1. Ve a la consola de Google Cloud .

    Ve a la consola de Google Cloud

  2. Haz clic en el cuadro de lista del selector en la barra de menú.
  3. Selecciona tu organización en el cuadro de lista.
  4. Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.

gcloud CLI

Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:

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étodo HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Ejemplos de comandos

curl (Linux, macOS o 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

Principales que pueden cambiar las políticas de permisos de IAM en una organización

En el siguiente ejemplo, se muestra cómo buscar principales que puedan cambiar las políticas de permisos de IAM en la organización con el ID my-organization-id.

Cómo encontrar el ID de una organización de Google Cloud

consola de

Para encontrar el ID de una organización de Google Cloud , completa los siguientes pasos:

  1. Ve a la consola de Google Cloud .

    Ve a la consola de Google Cloud

  2. Haz clic en el cuadro de lista del selector en la barra de menú.
  3. Selecciona tu organización en el cuadro de lista.
  4. Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.

gcloud CLI

Puedes recuperar el ID de una organización de Google Cloud con el siguiente comando:

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étodo HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Ejemplos de comandos

curl (Linux, macOS o 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