리소스에 대한 IAM 허용 정책 검색

프로젝트, 폴더 또는 조직의 리소스에 대한 IAM 허용 정책을 검색하고 쿼리를 사용하여 반환된 결과를 필터링할 수 있습니다.

시작하기 전에

  1. Cloud 애셋 인벤토리 명령어를 실행할 프로젝트에서 Cloud 애셋 인벤토리 API를 사용 설정하세요.

    Cloud 애셋 인벤토리 API 사용 설정

  2. 계정에 Cloud 애셋 인벤토리 API를 호출할 수 있는 올바른 역할이 있는지 확인합니다. 각 호출 유형에 대한 개별 권한은 권한을 참고하세요.

쿼리 구성

쿼리를 구성하기 전에 쿼리를 지정하지 않은 검색 요청으로 시작하는 것이 좋습니다. 전체 응답의 필드와 값을 사용하여 검색어 문법을 사용하여 쿼리를 만들고 원하는 결과가 반환될 때까지 이를 미세 조정합니다.

쿼리에 사용할 수 있는 필드는 IamPolicySearchResult 참고 문서에 자세히 설명되어 있습니다.

쿼리를 구성할 때 다음 제한사항에 유의하세요.

  • policy 필드는 중첩된 객체이므로 : 연산자와만 사용할 수 있습니다.

  • 일부 애셋 유형은 검색할 수 없습니다. 검색 API에서 서비스를 사용할 수 없는지 확인하려면 리소스 유형을 참고하세요.

다음 추가 필드를 사용하여 결과를 특정 주 구성원 유형, 권한 또는 역할로 제한할 수도 있습니다.

필드 설명
memberTypes

다음 IAM 주 구성원 유형 중 하나를 포함합니다.

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

특정 IAM 권한이 포함됩니다.

예시
policy.role.permissions=storage.buckets.create
roles

특정 IAM 역할이 포함되어 있습니다.

예시
roles=roles/storage.objectAdmin

IAM 허용 정책 검색

쿼리를 구성하기 전에 쿼리를 지정하지 않은 검색 요청으로 시작하는 것이 좋습니다. 전체 응답의 필드와 값을 사용하여 검색어 문법을 사용하여 쿼리를 만들고 원하는 결과가 반환될 때까지 이를 미세 조정합니다.

콘솔

IAM 허용 정책 메타데이터를 검색하려면 다음 단계를 완료하세요.

  1. Google Cloud 콘솔에서 애셋 인벤토리 페이지로 이동합니다.

    애셋 인벤토리로 이동

  2. 검색하려는 프로젝트, 폴더 또는 조직으로 변경합니다.
  3. IAM 정책 탭을 클릭합니다.
  4. 허용 정책을 검색하려면 필터 필드에 쿼리를 입력합니다. 검색어를 작성하는 방법은 검색어 문법을 참고하세요.

    쿼리 구성을 더 쉽게 하려면 필터 필드를 클릭하여 검색 가능한 필드를 표시하고 쿼리에 추가할 수 있습니다.

검색을 실행하면 쿼리와 일치하는 허용 정책이 결과 표에 나열됩니다. 검색어를 두 번 클릭하여 수정하거나 검색 결과 필터링 창을 사용하여 빠른 검색어 사전 설정을 적용하거나 특정 기준에 따라 검색 결과를 제한합니다.

Google Cloud CLI 명령어로 쿼리를 보려면 쿼리 보기를 클릭합니다.

결과를 내보내려면 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"

다음 값을 제공합니다.

  • SCOPE_PATH: 다음 중 한 가지 값을 사용합니다.

    허용되는 값은 다음과 같습니다.

    • projects/PROJECT_ID: 여기서 PROJECT_ID는 검색하려는 IAM 허용 정책이 있는 애셋이 있는 프로젝트의 ID입니다.
    • projects/PROJECT_NUMBER. 여기서 PROJECT_NUMBER는 검색하려는 IAM 허용 정책이 있는 애셋이 있는 프로젝트의 수입니다.

      Google Cloud 프로젝트 번호를 찾는 방법

      Google Cloud 콘솔

      Google Cloud 프로젝트 번호를 찾으려면 다음 단계를 완료합니다.

      1. Google Cloud 콘솔에서 시작 페이지로 이동합니다.

        시작으로 이동

      2. 메뉴 바에서 전환 목록 상자를 클릭합니다.
      3. 목록 상자에서 조직을 선택한 후 프로젝트 이름을 검색합니다. 프로젝트 이름, 프로젝트 번호, 프로젝트 ID가 시작하기 제목 근처에 표시됩니다.

        최대 4,000개의 리소스가 표시됩니다. 원하는 프로젝트가 표시되지 않으면 리소스 관리 페이지로 이동하여 해당 프로젝트 이름을 사용하여 목록을 필터링합니다.

      gcloud CLI

      다음 명령어를 사용하여 Google Cloud 프로젝트 번호를 검색할 수 있습니다.

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID. 여기서 FOLDER_ID는 검색하려는 IAM 허용 정책이 있는 애셋이 있는 폴더의 ID입니다.

      Google Cloud 폴더의 ID를 찾는 방법

      Google Cloud 콘솔

      Google Cloud 폴더의 ID를 찾으려면 다음 단계를 완료하세요.

      1. Google Cloud 콘솔로 이동합니다.

        Google Cloud 콘솔로 이동

      2. 메뉴 바에서 전환 목록 상자를 클릭합니다.
      3. 목록 상자에서 조직을 선택합니다.
      4. 폴더 이름을 검색합니다. 폴더 이름 옆에 폴더 ID가 표시됩니다.

      gcloud CLI

      다음 명령어를 사용하여 조직 수준에 있는 Google Cloud 폴더의 ID를 검색할 수 있습니다.

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      여기서 TOP_LEVEL_FOLDER_NAME은 폴더 이름과 부분 또는 전체 문자열이 일치하는 값입니다. 발견된 폴더에 대한 자세한 정보를 보려면 --format 플래그를 삭제합니다.

      이전 명령어는 폴더 내 하위 폴더의 ID를 반환하지 않습니다. 이렇게 하려면 최상위 폴더의 ID를 사용하여 다음 명령어를 실행합니다.

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID. 여기서 ORGANIZATION_ID는 검색하려는 IAM 허용 정책이 있는 애셋이 있는 조직의 ID입니다.

      Google Cloud 조직의 ID를 찾는 방법

      Google Cloud 콘솔

      Google Cloud 조직의 ID를 찾으려면 다음 단계를 완료합니다.

      1. Google Cloud 콘솔로 이동합니다.

        Google Cloud 콘솔로 이동

      2. 메뉴 바에서 전환 목록 상자를 클릭합니다.
      3. 목록 상자에서 조직을 선택합니다.
      4. 모두 탭을 클릭합니다. 조직 ID가 조직 이름 옆에 표시됩니다.

      gcloud CLI

      다음 명령어를 사용하여 Google Cloud 조직의 ID를 검색할 수 있습니다.

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • QUERY: (선택사항) 쿼리 표현식입니다. 지정하지 않거나 비어 있으면 지정된 범위에서 모든 리소스를 검색합니다. 검색어를 작성하는 방법은 검색어 문법을 참고하세요.
  • ASSET_TYPE_#: (선택사항) 검색 가능한 애셋 유형의 쉼표로 구분된 목록입니다. RE2 호환 정규 표현식이 지원됩니다. 정규 표현식이 지원되는 애셋 유형과 일치하지 않으면 INVALID_ARGUMENT 오류가 반환됩니다. --asset-types를 지정하지 않으면 모든 애셋 유형이 반환됩니다.
  • ORDER_BY: (선택사항) 결과의 정렬 순서를 지정하는 쉼표로 구분된 필드 목록입니다. 기본 순서는 오름차순입니다. 필드 이름 다음에 DESC를 추가하여 내림차순으로 표시합니다. 정렬할 수 있는 필드는 참고 문서를 참고하세요.

--format--flatten 플래그를 사용하여 gcloud CLI 출력 형식을 지정할 수 있습니다.

모든 옵션은 gcloud CLI 참조를 확인하세요.

예시

다음 명령어를 실행하여 my-project 프로젝트의 모든 Compute Engine 인스턴스(compute.googleapis.com/Instance) 목록을 가져오고 IAM 허용 정책을 사용하여 사용자 alex@example.com에 바인딩합니다. 결과는 리소스(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"

응답 예시

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

HTTP 메서드 및 URL:

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

JSON 요청 본문:

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

다음 값을 제공합니다.

  • SCOPE_PATH: 다음 중 한 가지 값을 사용합니다.

    허용되는 값은 다음과 같습니다.

    • projects/PROJECT_ID: 여기서 PROJECT_ID는 검색하려는 IAM 허용 정책이 있는 애셋이 있는 프로젝트의 ID입니다.
    • projects/PROJECT_NUMBER. 여기서 PROJECT_NUMBER는 검색하려는 IAM 허용 정책이 있는 애셋이 있는 프로젝트의 수입니다.

      Google Cloud 프로젝트 번호를 찾는 방법

      Google Cloud 콘솔

      Google Cloud 프로젝트 번호를 찾으려면 다음 단계를 완료합니다.

      1. Google Cloud 콘솔에서 시작 페이지로 이동합니다.

        시작으로 이동

      2. 메뉴 바에서 전환 목록 상자를 클릭합니다.
      3. 목록 상자에서 조직을 선택한 후 프로젝트 이름을 검색합니다. 프로젝트 이름, 프로젝트 번호, 프로젝트 ID가 시작하기 제목 근처에 표시됩니다.

        최대 4,000개의 리소스가 표시됩니다. 원하는 프로젝트가 표시되지 않으면 리소스 관리 페이지로 이동하여 해당 프로젝트 이름을 사용하여 목록을 필터링합니다.

      gcloud CLI

      다음 명령어를 사용하여 Google Cloud 프로젝트 번호를 검색할 수 있습니다.

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID. 여기서 FOLDER_ID는 검색하려는 IAM 허용 정책이 있는 애셋이 있는 폴더의 ID입니다.

      Google Cloud 폴더의 ID를 찾는 방법

      Google Cloud 콘솔

      Google Cloud 폴더의 ID를 찾으려면 다음 단계를 완료하세요.

      1. Google Cloud 콘솔로 이동합니다.

        Google Cloud 콘솔로 이동

      2. 메뉴 바에서 전환 목록 상자를 클릭합니다.
      3. 목록 상자에서 조직을 선택합니다.
      4. 폴더 이름을 검색합니다. 폴더 이름 옆에 폴더 ID가 표시됩니다.

      gcloud CLI

      다음 명령어를 사용하여 조직 수준에 있는 Google Cloud 폴더의 ID를 검색할 수 있습니다.

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      여기서 TOP_LEVEL_FOLDER_NAME은 폴더 이름과 부분 또는 전체 문자열이 일치하는 값입니다. 발견된 폴더에 대한 자세한 정보를 보려면 --format 플래그를 삭제합니다.

      이전 명령어는 폴더 내 하위 폴더의 ID를 반환하지 않습니다. 이렇게 하려면 최상위 폴더의 ID를 사용하여 다음 명령어를 실행합니다.

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID. 여기서 ORGANIZATION_ID는 검색하려는 IAM 허용 정책이 있는 애셋이 있는 조직의 ID입니다.

      Google Cloud 조직의 ID를 찾는 방법

      Google Cloud 콘솔

      Google Cloud 조직의 ID를 찾으려면 다음 단계를 완료합니다.

      1. Google Cloud 콘솔로 이동합니다.

        Google Cloud 콘솔로 이동

      2. 메뉴 바에서 전환 목록 상자를 클릭합니다.
      3. 목록 상자에서 조직을 선택합니다.
      4. 모두 탭을 클릭합니다. 조직 ID가 조직 이름 옆에 표시됩니다.

      gcloud CLI

      다음 명령어를 사용하여 Google Cloud 조직의 ID를 검색할 수 있습니다.

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • QUERY: (선택사항) 쿼리 표현식입니다. 지정하지 않거나 비어 있으면 지정된 범위에서 모든 리소스를 검색합니다. 검색어를 작성하는 방법은 검색어 문법을 참고하세요.
  • ASSET_TYPE_#: (선택사항) 검색 가능한 애셋 유형의 배열입니다. RE2 호환 정규 표현식이 지원됩니다. 정규 표현식이 지원되는 애셋 유형과 일치하지 않으면 INVALID_ARGUMENT 오류가 반환됩니다. assetTypes를 지정하지 않으면 모든 애셋 유형이 반환됩니다.
  • ORDER_BY: (선택사항) 결과의 정렬 순서를 지정하는 쉼표로 구분된 필드 목록입니다. 기본 순서는 오름차순입니다. 필드 이름 다음에 DESC를 추가하여 내림차순으로 표시합니다. 정렬할 수 있는 필드는 참고 문서를 참고하세요.
  • PAGE_SIZE: (선택사항) 페이지당 반환할 결과 수입니다. 최댓값은 500입니다. 값을 0 또는 음수 값으로 설정하면 적합한 기본값이 선택됩니다. nextPageToken이 반환되어 후속 결과를 검색합니다.

  • PAGE_TOKEN: (선택사항) 긴 요청 응답은 여러 페이지로 구분됩니다. pageToken이 지정되지 않으면 첫 번째 페이지가 반환됩니다. 후속 페이지는 이전 응답의 nextPageTokenpageToken 값으로 사용하여 호출할 수 있습니다.

모든 옵션은 REST 참조를 참고하세요.

명령어 예시

다음 명령어 중 하나를 실행하여 my-project 프로젝트의 모든 Compute Engine 인스턴스(compute.googleapis.com/Instance) 목록을 가져오고 IAM 허용 정책을 사용하여 사용자 alex@example.com에 바인딩합니다. 결과는 리소스(resource DESC)별로 내림차순으로 표시됩니다.

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

응답 예시

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

Cloud 애셋 인벤토리용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud 애셋 인벤토리 클라이언트 라이브러리를 참조하세요.

Cloud 애셋 인벤토리에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.


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

Cloud 애셋 인벤토리용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud 애셋 인벤토리 클라이언트 라이브러리를 참조하세요.

Cloud 애셋 인벤토리에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.


// 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

Cloud 애셋 인벤토리용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud 애셋 인벤토리 클라이언트 라이브러리를 참조하세요.

Cloud 애셋 인벤토리에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

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

Cloud 애셋 인벤토리용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud 애셋 인벤토리 클라이언트 라이브러리를 참조하세요.

Cloud 애셋 인벤토리에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

/**
 * 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

Cloud 애셋 인벤토리용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud 애셋 인벤토리 클라이언트 라이브러리를 참조하세요.

Cloud 애셋 인벤토리에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

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

Cloud 애셋 인벤토리용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud 애셋 인벤토리 클라이언트 라이브러리를 참조하세요.

Cloud 애셋 인벤토리에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

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

Cloud 애셋 인벤토리용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Cloud 애셋 인벤토리 클라이언트 라이브러리를 참조하세요.

Cloud 애셋 인벤토리에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

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

추가 검색 예시

다음 코드 샘플은 자체 검색을 구성하는 데 도움이 되는 gcloud 및 REST의 특정 검색어를 보여줍니다.

IAM 허용 정책이 있는 리소스

다음 샘플은 my-project 프로젝트에서 IAM 허용 정책이 있는 모든 리소스를 검색하는 방법을 보여줍니다.

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

HTTP 메서드 및 URL:

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

명령어 예시

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

IAM 허용 정책이 있는 이름이 지정된 리소스

다음 샘플은 이름에 example이 있고 IAM 허용 정책이 있는 모든 리소스를 검색하는 방법을 보여줍니다.

gcloud

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

REST

HTTP 메서드 및 URL:

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

JSON 요청 본문:

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

명령어 예시

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

프로젝트, 폴더, 조직의 IAM 허용 정책

다음 샘플은 ID가 my-organization-id인 조직의 모든 프로젝트 및 폴더에서 모든 IAM 허용 정책을 검색하는 방법을 보여줍니다.

Google Cloud 조직의 ID를 찾는 방법

Google Cloud 콘솔

Google Cloud 조직의 ID를 찾으려면 다음 단계를 완료합니다.

  1. Google Cloud 콘솔로 이동합니다.

    Google Cloud 콘솔로 이동

  2. 메뉴 바에서 전환 목록 상자를 클릭합니다.
  3. 목록 상자에서 조직을 선택합니다.
  4. 모두 탭을 클릭합니다. 조직 ID가 조직 이름 옆에 표시됩니다.

gcloud CLI

다음 명령어를 사용하여 Google Cloud 조직의 ID를 검색할 수 있습니다.

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

HTTP 메서드 및 URL:

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

JSON 요청 본문:

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

명령어 예시

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

프로젝트 소유자

다음 샘플은 my-project 프로젝트에서 소유자 역할(roles/owner)이 있는 주 구성원을 검색하는 방법을 보여줍니다.

이 요청은 프로젝트에 소유자 역할이 부여된 주 구성원만 반환합니다. 정책 상속을 통해 소유자 역할을 상속받은 주 구성원은 포함되지 않습니다.

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

HTTP 메서드 및 URL:

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

JSON 요청 본문:

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

명령어 예시

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

주 구성원에게 소유자 역할이 있는 프로젝트

다음 샘플은 ID가 my-organization-id인 조직에서 alex@example.com소유자 역할(roles/owner)이 있는 프로젝트를 검색하는 방법을 보여줍니다.

이 요청은 alex@example.com에 소유자 역할이 부여된 프로젝트만 반환합니다. alex@example.com가 소유자 역할을 상속한 프로젝트는 포함되지 않습니다.

Google Cloud 조직의 ID를 찾는 방법

Google Cloud 콘솔

Google Cloud 조직의 ID를 찾으려면 다음 단계를 완료합니다.

  1. Google Cloud 콘솔로 이동합니다.

    Google Cloud 콘솔로 이동

  2. 메뉴 바에서 전환 목록 상자를 클릭합니다.
  3. 목록 상자에서 조직을 선택합니다.
  4. 모두 탭을 클릭합니다. 조직 ID가 조직 이름 옆에 표시됩니다.

gcloud CLI

다음 명령어를 사용하여 Google Cloud 조직의 ID를 검색할 수 있습니다.

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

HTTP 메서드 및 URL:

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

JSON 요청 본문:

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

명령어 예시

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

프로젝트에서 주 구성원이 가진 역할

다음 샘플은 alex@example.commy-project 프로젝트에서 가지는 역할을 검색하는 방법을 보여줍니다.

이 요청은 프로젝트에서 alex@example.com에 부여된 역할만 반환합니다. alex@example.com정책 상속을 통해 상속받은 역할은 포함되지 않습니다.

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

HTTP 메서드 및 URL:

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

JSON 요청 본문:

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

명령어 예시

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

주 구성원이 프로젝트에 대해 갖는 권한

다음 샘플은 my-project 프로젝트에서 alex@example.com이 가진 권한을 검색하는 방법을 보여줍니다.

이 요청은 alex@example.com이 프로젝트에 대해 보유한 권한만 반환합니다. alex@example.com정책 상속을 통해 상속받은 권한은 포함되지 않습니다.

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

HTTP 메서드 및 URL:

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

JSON 요청 본문:

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

명령어 예시

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

Cloud Storage 버킷에 액세스할 수 있는 사용자

다음 샘플은 my-project 프로젝트에서 Cloud Storage 버킷에 액세스할 수 있는 사용자를 검색하는 방법을 보여줍니다.

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

HTTP 메서드 및 URL:

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

JSON 요청 본문:

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

명령어 예시

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

소유자 역할이 있는 서비스 계정

다음 샘플은 my-organization-id를 사용하여 조직에서 소유자 역할(roles/owner)이 있는 서비스 계정을 검색하는 방법을 보여줍니다. 이 쿼리를 사용하여 위험 프로필을 줄일 수 있습니다.

Google Cloud 조직의 ID를 찾는 방법

Google Cloud 콘솔

Google Cloud 조직의 ID를 찾으려면 다음 단계를 완료합니다.

  1. Google Cloud 콘솔로 이동합니다.

    Google Cloud 콘솔로 이동

  2. 메뉴 바에서 전환 목록 상자를 클릭합니다.
  3. 목록 상자에서 조직을 선택합니다.
  4. 모두 탭을 클릭합니다. 조직 ID가 조직 이름 옆에 표시됩니다.

gcloud CLI

다음 명령어를 사용하여 Google Cloud 조직의 ID를 검색할 수 있습니다.

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

gcloud

이 예에서는 Cloud Shell 및 Unix와 유사한 운영체제에서 사용할 수 있는 `grep` 명령어를 사용합니다.

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

HTTP 메서드 및 URL:

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

JSON 요청 본문:

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

명령어 예시

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

도메인에 역할이 부여된 리소스

다음 샘플은 ID가 my-organization-id인 조직에서 example.com 도메인에 부여된 역할이 있는 리소스를 검색하는 방법을 보여줍니다.

Google Cloud 조직의 ID를 찾는 방법

Google Cloud 콘솔

Google Cloud 조직의 ID를 찾으려면 다음 단계를 완료합니다.

  1. Google Cloud 콘솔로 이동합니다.

    Google Cloud 콘솔로 이동

  2. 메뉴 바에서 전환 목록 상자를 클릭합니다.
  3. 목록 상자에서 조직을 선택합니다.
  4. 모두 탭을 클릭합니다. 조직 ID가 조직 이름 옆에 표시됩니다.

gcloud CLI

다음 명령어를 사용하여 Google Cloud 조직의 ID를 검색할 수 있습니다.

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

HTTP 메서드 및 URL:

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

JSON 요청 본문:

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

명령어 예시

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

공개적으로 부여된 역할이 있는 리소스

다음 샘플은 ID가 my-organization-id인 조직에서 모든 사용자에게 부여된 역할이 있는 리소스를 검색하는 방법을 보여줍니다.

Google Cloud 조직의 ID를 찾는 방법

Google Cloud 콘솔

Google Cloud 조직의 ID를 찾으려면 다음 단계를 완료합니다.

  1. Google Cloud 콘솔로 이동합니다.

    Google Cloud 콘솔로 이동

  2. 메뉴 바에서 전환 목록 상자를 클릭합니다.
  3. 목록 상자에서 조직을 선택합니다.
  4. 모두 탭을 클릭합니다. 조직 ID가 조직 이름 옆에 표시됩니다.

gcloud CLI

다음 명령어를 사용하여 Google Cloud 조직의 ID를 검색할 수 있습니다.

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

HTTP 메서드 및 URL:

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

JSON 요청 본문:

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

명령어 예시

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

조직의 IAM 허용 정책을 변경할 수 있는 주 구성원

다음 샘플은 ID my-organization-id를 사용하여 조직의 IAM 허용 정책을 변경할 수 있는 사용자를 검색하는 방법을 보여줍니다.

Google Cloud 조직의 ID를 찾는 방법

Google Cloud 콘솔

Google Cloud 조직의 ID를 찾으려면 다음 단계를 완료합니다.

  1. Google Cloud 콘솔로 이동합니다.

    Google Cloud 콘솔로 이동

  2. 메뉴 바에서 전환 목록 상자를 클릭합니다.
  3. 목록 상자에서 조직을 선택합니다.
  4. 모두 탭을 클릭합니다. 조직 ID가 조직 이름 옆에 표시됩니다.

gcloud CLI

다음 명령어를 사용하여 Google Cloud 조직의 ID를 검색할 수 있습니다.

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

HTTP 메서드 및 URL:

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

JSON 요청 본문:

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

명령어 예시

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