プロジェクト、フォルダ、組織のリソースで IAM 許可ポリシーを検索し、クエリを使用して返された結果をフィルタできます。
始める前に
Cloud Asset Inventory コマンドを実行するプロジェクトで Cloud Asset Inventory API を有効にします。
アカウントに Cloud Asset Inventory API を呼び出すための適切なロールがあることを確認します。呼び出しタイプごとの個々の権限については、権限をご覧ください。
クエリを作成する
クエリを作成する前に、クエリを指定しない検索リクエストから始めると便利です。完全なレスポンスのフィールドと値を使用し、検索クエリ構文を使用してクエリを作成し、目的の結果が返されるまでクエリを絞り込みます。
クエリで使用できるフィールドの詳細については、IamPolicySearchResult
リファレンス ドキュメントをご覧ください。
クエリを作成する際は、次の制限事項に注意してください。
policy
フィールドはネストされたオブジェクトであるため、:
演算子でのみ使用できます。すべてのアセットタイプが検索可能というわけではありません。検索 API でサービスが使用できないかどうかを確認するには、リソースタイプをご覧ください。
次の追加フィールドを使用して、結果を特定のプリンシパル タイプ、権限、ロールに制限することもできます。
フィールド | 説明 |
---|---|
memberTypes |
次のいずれかの IAM プリンシパル タイプが含まれます。
例memberTypes=user |
policy.role.permissions |
特定の IAM 権限が含まれます。 例policy.role.permissions=storage.buckets.create |
roles |
特定の IAM ロールが含まれます。 例roles=roles/storage.objectAdmin |
IAM 許可ポリシーを検索する
クエリを作成する前に、クエリを指定しない検索リクエストから始めると便利です。完全なレスポンスのフィールドと値を使用し、検索クエリ構文を使用してクエリを作成し、目的の結果が返されるまでクエリを絞り込みます。
Console
IAM 許可ポリシーのメタデータを検索するには、次の操作を行います。
-
Google Cloud コンソールの [アセット インベントリ] ページに移動します。
- 検索するプロジェクト、フォルダ、または組織に変更します。
- [IAM ポリシー] タブをクリックします。
-
許可ポリシーを検索するには、[フィルタ] フィールドにクエリを入力します。検索クエリの作成方法については、検索クエリの構文をご覧ください。
クエリの作成を容易にするには、[フィルタ] フィールドをクリックして、検索可能なフィールドを表示し、クエリに追加します。
検索を実行すると、クエリに一致する許可ポリシーが [結果] テーブルに一覧表示されます。クエリをダブルクリックして編集するか、[結果をフィルタする] ペインを使用してクイック クエリのプリセットを適用するか、特定の条件で検索結果を制限します。
クエリを 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 プロジェクト番号を確認するには、次の手順を行います。
-
Google Cloud コンソールの [ようこそ] ページに移動します。
- メニューバーの切り替えボックスをクリックします。
-
リストボックスから組織を選択し、プロジェクト名を検索します。プロジェクト名、プロジェクト番号、プロジェクト 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 を確認するには、次の手順を行います。
-
Google Cloud Console に移動します。
- メニューバーの切り替えボックスをクリックします。
- リストボックスから組織を選択します。
- フォルダ名を検索します。フォルダ 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 を確認する手順は次のとおりです。
-
Google Cloud Console に移動します。
- メニューバーの切り替えボックスをクリックします。
- リストボックスから組織を選択します。
- [すべて] タブをクリックします。組織 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 リファレンスをご覧ください。
例
次のコマンドを実行して、ユーザー alex@example.com
にバインドされている IAM 許可ポリシーがある my-project
プロジェクト内のすべての Compute Engine インスタンス(compute.googleapis.com/Instance
)のリストを取得します。結果はリソース(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 プロジェクト番号を確認するには、次の手順を行います。
-
Google Cloud コンソールの [ようこそ] ページに移動します。
- メニューバーの切り替えボックスをクリックします。
-
リストボックスから組織を選択し、プロジェクト名を検索します。プロジェクト名、プロジェクト番号、プロジェクト 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 を確認するには、次の手順を行います。
-
Google Cloud Console に移動します。
- メニューバーの切り替えボックスをクリックします。
- リストボックスから組織を選択します。
- フォルダ名を検索します。フォルダ 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 を確認する手順は次のとおりです。
-
Google Cloud Console に移動します。
- メニューバーの切り替えボックスをクリックします。
- リストボックスから組織を選択します。
- [すべて] タブをクリックします。組織 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
が指定されていない場合、最初のページが返されます。後続のページを呼び出すには、前のレスポンスのnextPageToken
をpageToken
値として使用します。
すべてのオプションについては、REST リファレンスをご覧ください。
コマンドの例
次のいずれかのコマンドを実行して、ユーザー alex@example.com
にバインドされた IAM 許可ポリシーがある my-project
プロジェクト内のすべての Compute Engine インスタンス(compute.googleapis.com/Instance
)のリストを取得します。結果はリソース(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 Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Ruby
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
その他の検索例
次のコードサンプルは、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 を確認する手順は次のとおりです。
-
Google Cloud Console に移動します。
- メニューバーの切り替えボックスをクリックします。
- リストボックスから組織を選択します。
- [すべて] タブをクリックします。組織 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 を確認する手順は次のとおりです。
-
Google Cloud Console に移動します。
- メニューバーの切り替えボックスをクリックします。
- リストボックスから組織を選択します。
- [すべて] タブをクリックします。組織 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.com
が my-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
プリンシパルがプロジェクトに対して持つ権限
次のサンプルは、alex@example.com
が my-project
プロジェクトに対して持っている権限を検索する方法を示しています。
このリクエストは、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 を確認する手順は次のとおりです。
-
Google Cloud Console に移動します。
- メニューバーの切り替えボックスをクリックします。
- リストボックスから組織を選択します。
- [すべて] タブをクリックします。組織 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 を確認する手順は次のとおりです。
-
Google Cloud Console に移動します。
- メニューバーの切り替えボックスをクリックします。
- リストボックスから組織を選択します。
- [すべて] タブをクリックします。組織 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 を確認する手順は次のとおりです。
-
Google Cloud Console に移動します。
- メニューバーの切り替えボックスをクリックします。
- リストボックスから組織を選択します。
- [すべて] タブをクリックします。組織 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 を確認する手順は次のとおりです。
-
Google Cloud Console に移動します。
- メニューバーの切り替えボックスをクリックします。
- リストボックスから組織を選択します。
- [すべて] タブをクリックします。組織 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