Pesquisar políticas de permissão do IAM nos recursos

É possível pesquisar políticas de permissão do IAM nos seus recursos em um projeto, uma pasta ou uma organização e filtrar os resultados retornados usando uma consulta.

Antes de começar

  1. Ative a API Cloud Asset Inventory no projeto em que você está executando comandos do Inventário de recursos do Cloud.

    Ativar a API Cloud Asset Inventory

  2. Verifique se a conta tem o papel correto para chamar a API Cloud Asset Inventory. Para permissões individuais de cada tipo de chamada, consulte Permissões.

Criar uma consulta

Antes de criar uma consulta, pode ser útil começar com uma solicitação de pesquisa que não especifique uma consulta. Use os campos e valores da resposta completa para criar uma consulta usando a sintaxe de consulta de pesquisa e refine-a até que os resultados desejados sejam retornados.

Os campos que podem ser usados em uma consulta estão detalhados na documentação de referência do IamPolicySearchResult.

Considere as seguintes limitações ao criar uma consulta:

  • O campo policy é um objeto aninhado e, portanto, só pode ser usado com o operador :.

  • Nem todos os tipos de recurso são pesquisáveis. Consulte Tipos de recursos para confirmar se um serviço não está disponível nas APIs de pesquisa.

Os campos a seguir também podem ser usados para restringir os resultados a determinados tipos, permissões ou papéis principais:

Campo Descrição
memberTypes

Contém um dos seguintes tipos principais do IAM:

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

Contém permissões do IAM específicas.

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

Contém papéis do IAM específicos.

Exemplo
roles=roles/storage.objectAdmin

Pesquisar políticas de permissão do IAM

Antes de criar uma consulta, pode ser útil começar com uma solicitação de pesquisa que não especifique uma consulta. Use os campos e valores da resposta completa para criar uma consulta usando a sintaxe de consulta de pesquisa e refine-a até que os resultados desejados sejam retornados.

Console

Para pesquisar metadados de políticas de permissão do IAM, siga estas etapas.

  1. Acesse a página Inventário de recursos no console Google Cloud .

    Acessar o inventário de recursos

  2. Mude para o projeto, a pasta ou a organização que você quer pesquisar.
  3. Clique na guia Política do IAM.
  4. Para pesquisar políticas de permissão, insira uma consulta no campo Filtro. Consulte Sintaxe da consulta de pesquisa para saber como escrever uma consulta de pesquisa.

    Para facilitar a criação de consultas, clique no campo Filtrar para mostrar e adicionar os campos pesquisáveis disponíveis à consulta.

Depois de realizar uma pesquisa, as políticas de permissão correspondentes à consulta são listadas na tabela Resultados. Clique duas vezes na consulta para editá-la ou use o painel Filtrar resultados para aplicar predefinições de consulta rápidas ou restringir os resultados da pesquisa por critérios específicos.

Para conferir a consulta como um comando da Google Cloud CLI, clique em Visualizar consulta.

Para exportar os resultados, clique em Fazer o download do 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"

Forneça os valores a seguir:

  • SCOPE_PATH: use um dos seguintes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, em que PROJECT_ID é o ID do projeto que tem recursos com políticas de permissão do IAM que você quer pesquisar.
    • projects/PROJECT_NUMBER, em que PROJECT_NUMBER é o número do projeto que tem recursos com políticas de permissão do IAM que você quer pesquisar.

      Como encontrar um número de projeto da nuvem soberana da T-Systems .

      Google Cloud console

      Para encontrar um número de projeto do Google Cloud , siga estas etapas:

      1. Acesse a página Welcome no console Google Cloud .

        Acessar a página de boas-vindas

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização na caixa de lista e pesquise o nome do projeto. O nome, o número e o ID do projeto são mostrados perto do título Welcome.

        Até 4.000 recursos são exibidos. Se você não encontrar o projeto que está procurando, acesse a página Gerenciar recursos e filtre a lista usando o nome dele.

      CLI da gcloud

      É possível extrair um número de projeto do Google Cloud com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, em que FOLDER_ID é o ID da pasta que tem os recursos com as políticas de permissão do IAM que você quer pesquisar.

      Como encontrar o ID de uma pasta do Google Cloud

      Google Cloud console

      Para encontrar o ID de uma pasta do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma pasta do Google Cloud que está no nível da organização com o seguinte 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)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para fazer isso, execute o comando abaixo usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização que tem recursos com políticas de permissão do IAM que você quer pesquisar.

      Como encontrar o ID de uma organização do Google Cloud

      Google Cloud console

      Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • QUERY: opcional. A expressão de consulta. Se não for especificado ou estiver vazio, todos os recursos serão pesquisados no escopo especificado. Para saber como escrever uma consulta de pesquisa, consulte Sintaxe da consulta de pesquisa.
  • ASSET_TYPE_#: opcional. Uma lista separada por vírgulas de tipos de recursos pesquisáveis. As expressões regulares compatíveis com RE2 são aceitas. Se a expressão regular não corresponder a nenhum tipo de recurso aceito, um erro INVALID_ARGUMENT será retornado. Quando --asset-types não é especificado, todos os tipos de recurso são retornados.
  • ORDER_BY: opcional. Uma lista de campos separada por vírgulas que especifica a ordem de classificação dos resultados. A ordem padrão é crescente. Adicione DESC depois do nome do campo para indicar a ordem decrescente. Consulte a documentação de referência para saber quais campos podem ser classificados.

É possível usar as flags --format e --flatten para formatar a saída da CLI gcloud.

Consulte a referência da CLI do gcloud para conferir todas as opções.

Exemplo

Execute o comando a seguir para receber uma lista de todas as instâncias do Compute Engine (compute.googleapis.com/Instance) no projeto my-project com uma política de permissão do IAM vinculada ao usuário alex@example.com. Os resultados são classificados em ordem decrescente 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"

Exemplo de resposta

---
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 e URL:

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

Solicitar corpo JSON:

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

Forneça os valores a seguir:

  • SCOPE_PATH: use um dos seguintes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, em que PROJECT_ID é o ID do projeto que tem recursos com políticas de permissão do IAM que você quer pesquisar.
    • projects/PROJECT_NUMBER, em que PROJECT_NUMBER é o número do projeto que tem recursos com políticas de permissão do IAM que você quer pesquisar.

      Como encontrar um número de projeto da nuvem soberana da T-Systems .

      Google Cloud console

      Para encontrar um número de projeto do Google Cloud , siga estas etapas:

      1. Acesse a página Welcome no console Google Cloud .

        Acessar a página de boas-vindas

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização na caixa de lista e pesquise o nome do projeto. O nome, o número e o ID do projeto são mostrados perto do título Welcome.

        Até 4.000 recursos são exibidos. Se você não encontrar o projeto que está procurando, acesse a página Gerenciar recursos e filtre a lista usando o nome dele.

      CLI da gcloud

      É possível extrair um número de projeto do Google Cloud com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, em que FOLDER_ID é o ID da pasta que tem os recursos com as políticas de permissão do IAM que você quer pesquisar.

      Como encontrar o ID de uma pasta

      Google Cloud console

      Para encontrar o ID de uma pasta do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma pasta do Google Cloud que está no nível da organização com o seguinte 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)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para fazer isso, execute o comando abaixo usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização que tem recursos com políticas de permissão do IAM que você quer pesquisar.

      Como encontrar o ID de uma organização do Google Cloud

      Google Cloud console

      Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

      1. Acesse o console Google Cloud .

        Acesse o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização no campo de lista.
      4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

      CLI da gcloud

      É possível extrair o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • QUERY: opcional. A expressão de consulta. Se não for especificado ou estiver vazio, todos os recursos serão pesquisados no escopo especificado. Para saber como escrever uma consulta de pesquisa, consulte Sintaxe da consulta de pesquisa.
  • ASSET_TYPE_#: opcional. Uma matriz de tipos de recursos pesquisáveis. As expressões regulares compatíveis com RE2 são aceitas. Se a expressão regular não corresponder a nenhum tipo de recurso aceito, um erro INVALID_ARGUMENT será retornado. Quando assetTypes não é especificado, todos os tipos de recursos são retornados.
  • ORDER_BY: opcional. Uma lista de campos separada por vírgulas que especifica a ordem de classificação dos resultados. A ordem padrão é crescente. Adicione DESC depois do nome do campo para indicar a ordem decrescente. Consulte a documentação de referência para saber quais campos podem ser classificados.
  • PAGE_SIZE: opcional. O número de resultados retornados por página. O valor máximo é 500. Se o valor for definido como 0 ou um valor negativo, um padrão apropriado será selecionado. Um nextPageToken é retornado para recuperar resultados subsequentes.

  • PAGE_TOKEN: opcional. Respostas longas são separadas em várias páginas. Quando pageToken não é especificado, a primeira página é retornada. As páginas seguintes podem ser chamadas usando o nextPageToken da resposta anterior como o valor de pageToken.

Consulte a referência REST para conferir todas as opções.

Exemplos de comando

Execute um dos comandos a seguir para conferir uma lista de todas as instâncias do Compute Engine (compute.googleapis.com/Instance) no projeto my-project com uma política de permissão do IAM vinculada ao usuário alex@example.com. Os resultados são classificados em ordem decrescente por recurso (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

Exemplo de resposta

{
  "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 saber como instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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 saber como instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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 saber como instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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 saber como instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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 saber como instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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 saber como instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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 saber como instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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

Outros exemplos de pesquisa

Os exemplos de código a seguir mostram consultas de pesquisa específicas para gcloud e REST para ajudar você a criar suas próprias pesquisas.

Recursos com políticas de permissão do IAM

O exemplo a seguir mostra como pesquisar todos os recursos com políticas de permissão do IAM no projeto 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 e URL:

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

Exemplos de comando

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

Recursos nomeados com políticas de permissão do IAM

O exemplo a seguir mostra como pesquisar todos os recursos com example no nome que tenham políticas de permissão do IAM.

gcloud

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

REST

Método HTTP e URL:

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

Solicitar corpo JSON:

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

Exemplos de comando

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

Políticas de permissão do IAM em projetos, pastas e organizações

O exemplo a seguir mostra como pesquisar todas as políticas de permissão do IAM em todos os projetos e pastas da organização com o ID my-organization-id.

Como encontrar o ID de uma organização do Google Cloud

Google Cloud console

Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

  1. Acesse o console Google Cloud .

    Acesse o console do Google Cloud

  2. Clique na caixa de lista switcher na barra de menu.
  3. Selecione sua organização no campo de lista.
  4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

CLI da gcloud

É possível extrair o ID de uma organização do Google Cloud com o seguinte 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 e URL:

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

Solicitar corpo JSON:

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

Exemplos de comando

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

Proprietários de um projeto

O exemplo a seguir mostra como pesquisar participantes com a função de proprietário (roles/owner) no projeto my-project.

Essa solicitação só retorna os principais que receberam a função de proprietário no projeto. Ele não inclui os principais que herdam a função de proprietário pela herança 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 e URL:

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

Solicitar corpo JSON:

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

Exemplos de comando

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

Projetos em que um participante tem o papel de proprietário

O exemplo a seguir mostra como pesquisar projetos em que alex@example.com tem a função de proprietário (roles/owner) na organização com o ID my-organization-id.

Essa solicitação só retorna os projetos em que alex@example.com recebeu a função de proprietário. Ele não inclui projetos em que alex@example.com herdou o papel de proprietário.

Como encontrar o ID de uma organização do Google Cloud

Google Cloud console

Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

  1. Acesse o console Google Cloud .

    Acesse o console do Google Cloud

  2. Clique na caixa de lista switcher na barra de menu.
  3. Selecione sua organização no campo de lista.
  4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

CLI da gcloud

É possível extrair o ID de uma organização do Google Cloud com o seguinte 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 e URL:

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

Solicitar corpo JSON:

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

Exemplos de comando

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

Papéis de um principal em um projeto

O exemplo a seguir mostra como pesquisar os papéis que alex@example.com tem no projeto my-project.

Essa solicitação retorna apenas as funções que alex@example.com recebe no projeto. Ela não inclui papéis que alex@example.com herdou pela herança 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 e URL:

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

Solicitar corpo JSON:

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

Exemplos de comando

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

Permissões que um participante tem em um projeto

O exemplo a seguir mostra como pesquisar as permissões que alex@example.com tem no projeto my-project.

Essa solicitação só retorna as permissões que alex@example.com tem no projeto. Ele não inclui permissões que alex@example.com herdou por herança 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 e URL:

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

Solicitar corpo JSON:

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

Exemplos de comando

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

Princípios que podem acessar buckets do Cloud Storage

O exemplo a seguir mostra como procurar principais que podem acessar buckets do Cloud Storage no projeto 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 e URL:

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

Solicitar corpo JSON:

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

Exemplos de comando

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

Contas de serviço com função de proprietário

O exemplo a seguir mostra como pesquisar contas de serviço com o papel de proprietário (roles/owner) na organização com o my-organization-id. Use essa consulta para reduzir seu perfil de risco.

Como encontrar o ID de uma organização do Google Cloud

Google Cloud console

Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

  1. Acesse o console Google Cloud .

    Acesse o console do Google Cloud

  2. Clique na caixa de lista switcher na barra de menu.
  3. Selecione sua organização no campo de lista.
  4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

CLI da gcloud

É possível extrair o ID de uma organização do Google Cloud com o seguinte comando:

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

gcloud

Este exemplo usa o comando grep, que está disponível no Cloud Shell e em sistemas operacionais semelhantes ao 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 e URL:

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

Solicitar corpo JSON:

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

Exemplos de comando

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

Recursos com papéis concedidos a um domínio

O exemplo a seguir mostra como pesquisar recursos com papéis concedidos ao domínio example.com, na organização com o ID my-organization-id.

Como encontrar o ID de uma organização do Google Cloud

Google Cloud console

Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

  1. Acesse o console Google Cloud .

    Acesse o console do Google Cloud

  2. Clique na caixa de lista switcher na barra de menu.
  3. Selecione sua organização no campo de lista.
  4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

CLI da gcloud

É possível extrair o ID de uma organização do Google Cloud com o seguinte 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 e URL:

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

Solicitar corpo JSON:

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

Exemplos de comando

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

Recursos com papéis concedidos ao público

O exemplo a seguir mostra como pesquisar recursos com papéis concedidos ao público na organização com o ID my-organization-id.

Como encontrar o ID de uma organização do Google Cloud

Google Cloud console

Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

  1. Acesse o console Google Cloud .

    Acesse o console do Google Cloud

  2. Clique na caixa de lista switcher na barra de menu.
  3. Selecione sua organização no campo de lista.
  4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

CLI da gcloud

É possível extrair o ID de uma organização do Google Cloud com o seguinte 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 e URL:

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

Solicitar corpo JSON:

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

Exemplos de comando

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

Princípios que podem mudar as políticas de permissão do IAM em uma organização

O exemplo a seguir mostra como pesquisar principais que podem mudar políticas de permissão do IAM na organização com o ID my-organization-id.

Como encontrar o ID de uma organização do Google Cloud

Google Cloud console

Para encontrar o ID de uma organização do Google Cloud , siga estas etapas:

  1. Acesse o console Google Cloud .

    Acesse o console do Google Cloud

  2. Clique na caixa de lista switcher na barra de menu.
  3. Selecione sua organização no campo de lista.
  4. Selecione a guia Todos. O ID da organização aparece ao lado do nome dela.

CLI da gcloud

É possível extrair o ID de uma organização do Google Cloud com o seguinte 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 e URL:

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

Solicitar corpo JSON:

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

Exemplos de comando

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