このページでは、Policy Analyzer を使用して、どの ID またはプリンシパル(ユーザー、サービス アカウント、グループ、ドメイン)が、どの Google Cloud リソースに対してどのアクセス権を持つかを調べる方法について説明します。
このページの例は、Policy Analysis クエリを実行して、結果をすぐに表示する方法を示しています。結果をさらに分析するためにエクスポートする場合は、AnalyzeIamPolicyLongrunning
を使用して、BigQuery または Cloud Storage にクエリ結果を書き込むことができます。
始める前に
Cloud Asset API を有効にします。
クエリの送信に使用するプロジェクトまたは組織で API を有効にする必要があります。クエリのスコープを同じリソースにする必要はありません。
省略可: Policy Analyzer の仕組みを理解します。
必要なロールと権限
許可ポリシーを分析するには、次のロールと権限が必要です。
必要な IAM のロール
許可ポリシーの分析に必要な権限を取得するには、クエリの対象となるプロジェクト、フォルダ、または組織に対する次の IAM ロールを付与するよう管理者に依頼してください。
-
Cloud Asset 閲覧者(
roles/cloudasset.viewer
) - カスタム IAM ロールでポリシーを分析するには: ロール閲覧者(
roles/iam.roleViewer
) -
Google Cloud CLI を使用してポリシーを分析するには: Service Usage ユーザー(
roles/serviceusage.serviceUsageConsumer
)
ロールの付与の詳細については、アクセスの管理をご覧ください。
これらの事前定義ロールには、許可ポリシーの分析に必要な権限が含まれています。必要な権限を正確に確認するには、[必要な権限] セクションを開いてください。
必要な権限
許可ポリシーを分析するには、次の権限が必要です。
-
cloudasset.assets.analyzeIamPolicy
-
cloudasset.assets.searchAllResources
-
cloudasset.assets.searchAllIamPolicies
-
IAM のカスタムロールでポリシーを分析するには:
iam.roles.get
-
Google Cloud CLI を使用してポリシーを分析するには:
serviceusage.services.use
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
必要な Google Workspace の権限
プリンシパルが Google Workspace グループのメンバーになった結果、特定のロールまたは権限を持つかどうかを確認するために、クエリ結果でグループを展開する場合は、groups.read
Google Workspace の権限が必要です。
この権限は、グループ読み取り管理者のロールと、グループ管理者や特権管理者のロールなどのより強力なロールに含まれています。これらのロールを付与する方法については、特定の管理者ロールを割り当てるをご覧ください。
リソースにアクセスできるプリンシパルを決定する
Policy Analyzer を使用して、どのプリンシパルが、プロジェクト、フォルダ、組織内の固有のリソースに対する特定のロールまたは権限を有しているか確認できます。この情報を取得するには、アクセスを分析したいリソースおよび確認する 1 つ以上のロールまたは権限を含むクエリを作成します。
Console
Google Cloud コンソールで、[Policy Analyzer] ページに移動します。
[ポリシーの分析] セクションで、[カスタムクエリ] というラベルが付いたペインを見つけて、[カスタムクエリを作成] をクリックします。
[クエリスコープを選択] フィールドで、クエリを調査するプロジェクト、フォルダ、組織を選択します。ポリシー アナライザは、プロジェクト、フォルダ、組織へのアクセスと、そのプロジェクト、フォルダ、組織内のリソースを分析します。
確認するリソースと、確認するロールまたは権限を選択します。
- [パラメータ 1] フィールドで、プルダウン メニューから [リソース] を選択します。
- [リソース] フィールドに、アクセスを分析するリソースの完全なリソース名を入力します。完全なリソース名がわからない場合は、リソースの表示名の入力を開始し、表示されるリソースのリストから該当するリソースを選択します。
- [セレクタを追加] をクリックします。
- [パラメータ 2] フィールドで、[ロール] か [権限] を選択します。
- [ロールを選択] フィールドか [権限を選択] フィールドで、確認するロールまたは権限を選択します。
- 省略可: 追加のロールと権限を確認するには、確認するすべてのロールと権限が表示されるまで、[ロール] と [権限] セレクタの追加を継続します。
省略可: [続行] をクリックして、このクエリで有効にする詳細オプションを選択します。
[カスタムクエリ] ペインで、[分析] > [クエリを実行] をクリックします。レポートページには、入力したクエリ パラメータと、指定されたリソースに対する指定されたロールまたは権限を有するすべてのプリンシパルの結果テーブルが表示されます。
Google Cloud コンソールのポリシー分析クエリは、最大 1 分間実行されます。1 分後、Google Cloud コンソールでクエリが停止し、使用可能なすべての結果が表示されます。その時間内にクエリが完了しなかった場合は、結果が不完全であることを示すバナーが Google Cloud コンソールに表示されます。これらのクエリの全ての結果を取得するには、結果を BigQuery にエクスポートします。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
RESOURCE_TYPE
: 検索の対象範囲に設定するリソースのタイプ。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。値project
、folder
、またはorganization
を使用します。RESOURCE_ID
: 検索の対象範囲の Google Cloud プロジェクト、フォルダ、または組織の ID。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。FULL_RESOURCE_NAME
: アクセスを分析するリソースの完全なリソース名。リソース名の形式の一覧については、リソース名の形式をご覧ください。PERMISSIONS
: 確認する権限のカンマ区切りのリスト(compute.instances.get,compute.instances.start
など)。複数の権限を一覧表示すると、Policy Analyzer はリストされた権限を確認します。
gcloud asset analyze-iam-policy コマンドを実行します。
Linux、macOS、Cloud Shell
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \ --full-resource-name=FULL_RESOURCE_NAME \ --permissions='PERMISSIONS'
Windows(PowerShell)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ` --full-resource-name=FULL_RESOURCE_NAME ` --permissions='PERMISSIONS'
Windows(cmd.exe)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^ --full-resource-name=FULL_RESOURCE_NAME ^ --permissions='PERMISSIONS'
分析結果を含む YAML レスポンスが返されます。各分析結果には、クエリに関連するアクセス、ID、リソースのセットと、関連する IAM ロール バインディングが一覧表示されます。ロール バインディングが条件付きの場合、分析結果には条件の評価結果も含まれます。条件を評価できなかった場合、結果は CONDITIONAL
になります。
指定されたリソースに対する指定された権限を持つプリンシパルが、レスポンスの identities
フィールドにリストされます。次の例は、identities
フィールドがハイライト表示された単一の分析結果を示しています。
... --- ACLs: - accesses: - permission: compute.instances.get - permission: compute.instances.start identities: - name: user:my-user@example.com resources: - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project policy: attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project binding: members: - user: my-user@example.com role: roles/compute.admin --- ...
クエリが完了する前にリクエストがタイムアウトした場合、DEADLINE_EXCEEDED
エラーが発生します。これらのクエリの全ての結果を取得するには、長時間実行バージョンの analyze-iam-policy
を使用して結果を BigQuery または Cloud Storage に書き込みます。手順については、BigQuery にポリシー分析を書き込むまたは Cloud Storage にポリシー分析を書き込むをご覧ください。
REST
リソースに対して特定の権限を持つプリンシパルを特定するには、Cloud Asset Inventory API の analyzeIamPolicy
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
RESOURCE_TYPE
: 検索の対象範囲に設定するリソースのタイプ。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。値projects
、folders
、またはorganizations
を使用します。RESOURCE_ID
: 検索の対象範囲の Google Cloud プロジェクト、フォルダ、または組織の ID。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。FULL_RESOURCE_NAME
: アクセスを分析するリソースの完全なリソース名。リソース名の形式の一覧については、リソース名の形式をご覧ください。PERMISSION_1
、PERMISSION_2
、PERMISSION_N
: 確認する権限(compute.instances.get
など)。複数の権限を一覧表示すると、Policy Analyzer はリストされた権限を確認します。
HTTP メソッドと URL:
POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy
JSON 本文のリクエスト:
{ "analysisQuery": { "resourceSelector": { "fullResourceName": "FULL_RESOURCE_NAME" }, "accessSelector": { "permissions": [ "PERMISSION_1", "PERMISSION_2", "PERMISSION_N" ] } } }
リクエストを送信するには、次のいずれかのオプションを展開します。
分析結果を含む JSON レスポンスが返されます。各分析結果では、関連する IAM ロール バインディングが記述され、そのバインディングのリソース、アクセス、プリンシパルが一覧表示されます。ロール バインディングが条件付きの場合、分析結果には条件の評価結果も含まれます。条件を評価できなかった場合、結果は CONDITIONAL
としてリストされます。
指定されたリソースに対する指定された権限を持つプリンシパルが、レスポンスの identities
フィールドにリストされます。次の例は、identities
フィールドがハイライト表示された単一の分析結果を示しています。
... { "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project", "iamBinding": { "role": "roles/compute.admin", "members": [ "user:my-user@example.com" ] }, "accessControlLists": [ { "resources": [ { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project" } ], "accesses": [ { "permission": "compute.instances.get" }, { "permission": "compute.instances.start" } ] } ], "identityList": { "identities": [ { "name": "user:my-user@example.com" } ] }, "fullyExplored": true }, ...
クエリが完了する前にリクエストがタイムアウトした場合、DEADLINE_EXCEEDED
エラーが発生します。これらのクエリの全ての結果を取得するには、長時間実行バージョンの analyzeIamPolicy
を使用して結果を BigQuery または Cloud Storage に書き込みます。手順については、BigQuery にポリシー分析を書き込むまたは Cloud Storage にポリシー分析を書き込むをご覧ください。
特定のロールまたは権限を持つプリンシパルを決定する
Policy Analyzer を使用して、組織内のどの Google Cloud リソースに対する特定のロールまたは権限を持つプリンシパルを確認できます。この情報を取得するには、確認する 1 つ以上のロールまたは権限を含むものの、リソースを指定していないクエリを作成します。
Console
Google Cloud コンソールで、[Policy Analyzer] ページに移動します。
[ポリシーの分析] セクションで、[カスタムクエリ] というラベルが付いたペインを見つけて、[カスタムクエリを作成] をクリックします。
[クエリスコープを選択] フィールドで、クエリを調査するプロジェクト、フォルダ、組織を選択します。ポリシー アナライザは、プロジェクト、フォルダ、組織へのアクセスと、そのプロジェクト、フォルダ、組織内のリソースを分析します。
[パラメータ 1] フィールドで、[ロール] か [権限] を選択します。
[ロールを選択] フィールドか [権限を選択] フィールドで、確認するロールか権限を選択します。
省略可: 追加のロールと権限を確認するには、次の操作を行います。
- [セレクタを追加] をクリックします。
- [パラメータ 2] フィールドで、[ロール] か [権限] を選択します。
- [ロールを選択] フィールドか [権限を選択] フィールドで、確認するロールまたは権限を選択します。
- 確認するロールと権限がすべて表示されるまで、[ロール] と [権限] セレクタの追加を継続します。
省略可: [続行] をクリックして、このクエリで有効にする詳細オプションを選択します。
[カスタムクエリ] ペインで、[分析] > [クエリを実行] をクリックします。レポートページには、入力したクエリ パラメータと、対象範囲内のリソースに対して指定されたロールまたは権限を有するすべてのプリンシパルの結果テーブルが表示されます。
Google Cloud コンソールのポリシー分析クエリは、最大 1 分間実行されます。1 分後、Google Cloud コンソールでクエリが停止し、使用可能なすべての結果が表示されます。その時間内にクエリが完了しなかった場合は、結果が不完全であることを示すバナーが Google Cloud コンソールに表示されます。これらのクエリの全ての結果を取得するには、結果を BigQuery にエクスポートします。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
RESOURCE_TYPE
: 検索の対象範囲に設定するリソースのタイプ。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。値project
、folder
、またはorganization
を使用します。RESOURCE_ID
: 検索の対象範囲の Google Cloud プロジェクト、フォルダ、または組織の ID。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。ROLES
: 確認するロールのカンマ区切りのリスト(例:roles/compute.admin,roles/compute.imageUser
)。複数のロールを一覧表示すると、Policy Analyzer は一覧表示された中から任意のロールを確認します。PERMISSIONS
: 確認する権限のカンマ区切りのリスト(例:compute.instances.get,compute.instances.start
)。複数の権限を一覧表示すると、Policy Analyzer はリストされた権限を確認します。
gcloud asset analyze-iam-policy コマンドを実行します。
Linux、macOS、Cloud Shell
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \ --roles='ROLES' \ --permissions='PERMISSIONS'
Windows(PowerShell)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ` --roles='ROLES' ` --permissions='PERMISSIONS'
Windows(cmd.exe)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^ --roles='ROLES' ^ --permissions='PERMISSIONS'
分析結果を含む JSON レスポンスが返されます。各分析結果では、関連する IAM ロール バインディングが記述され、そのバインディングのリソース、アクセス、プリンシパルが一覧表示されます。ロール バインディングが条件付きの場合、分析結果には条件の評価結果も含まれます。条件を評価できなかった場合、結果は CONDITIONAL
としてリストされます。
指定されたロールまたは権限を持つプリンシパルは、レスポンスの identities
フィールドにリストされます。次の例は、identities
フィールドがハイライト表示された単一の分析結果を示しています。
... --- ACLs: - accesses: - permission: compute.instances.get - permission: compute.instances.start - role: roles/compute.admin identities: - name: user:my-user@example.com resources: - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project policy: attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project binding: members: - user: my-user@example.com role: roles/compute.admin --- ...
クエリが完了する前にリクエストがタイムアウトした場合、DEADLINE_EXCEEDED
エラーが発生します。これらのクエリの全ての結果を取得するには、長時間実行バージョンの analyze-iam-policy
を使用して結果を BigQuery または Cloud Storage に書き込みます。手順については、BigQuery にポリシー分析を書き込むまたは Cloud Storage にポリシー分析を書き込むをご覧ください。
REST
特定のロールまたは権限を持つプリンシパルを確認するには、Cloud Asset Inventory API の analyzeIamPolicy
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
RESOURCE_TYPE
: 検索の対象範囲に設定するリソースのタイプ。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。値projects
、folders
、またはorganizations
を使用します。RESOURCE_ID
: 検索の対象範囲の Google Cloud プロジェクト、フォルダ、または組織の ID。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。ROLE_1
、ROLE_2
、ROLE_N
: 確認するロール(roles/compute.admin
など)。複数のロールを指定すると、Policy Analyzer はリストされたロールのいずれかをチェックします。PERMISSION_1
、PERMISSION_2
、PERMISSION_N
: 確認する権限(compute.instances.get
など)。複数の権限を一覧表示すると、Policy Analyzer はリストされた権限を確認します。
HTTP メソッドと URL:
POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy
JSON 本文のリクエスト:
{ "analysisQuery": { "accessSelector": { "roles": [ "ROLE_1", "ROLE_2", "ROLE_N" ], "permissions": [ "PERMISSION_1", "PERMISSION_2", "PERMISSION_N" ] } } }
リクエストを送信するには、次のいずれかのオプションを展開します。
分析結果を含む JSON レスポンスが返されます。各分析結果では、関連する IAM ロール バインディングが記述され、そのバインディングのリソース、アクセス、プリンシパルが一覧表示されます。ロール バインディングが条件付きの場合、分析結果には条件の評価結果も含まれます。条件を評価できなかった場合、結果は CONDITIONAL
としてリストされます。
指定されたロールまたは権限を持つプリンシパルは、レスポンスの identities
フィールドにリストされます。次の例は、identities
フィールドがハイライト表示された単一の分析結果を示しています。
... { "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project", "iamBinding": { "role": "roles/compute.admin", "members": [ "user:my-user@example.com" ] }, "accessControlLists": [ { "resources": [ { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project" } ], "accesses": [ { "permission": "compute.instances.get" }, { "role": "roles/compute.admin" } ] } ], "identityList": { "identities": [ { "name": "user:my-user@example.com" } ] }, "fullyExplored": true }, ...
クエリが完了する前にリクエストがタイムアウトした場合、DEADLINE_EXCEEDED
エラーが発生します。これらのクエリの全ての結果を取得するには、長時間実行バージョンの analyzeIamPolicy
を使用して結果を BigQuery または Cloud Storage に書き込みます。手順については、BigQuery にポリシー分析を書き込むまたは Cloud Storage にポリシー分析を書き込むをご覧ください。
プリンシパルがリソースに対して持つアクセス権を決定する
Policy Analyzer を使用して、プリンシパルが組織内のリソースに対して持つロールまたは権限を確認できます。この情報を取得するには、分析するアクセスがあるプリンシパルとアクセスを分析するリソースを含むクエリを作成します。
Console
Google Cloud コンソールで、[Policy Analyzer] ページに移動します。
[ポリシーの分析] セクションで、[カスタムクエリ] というラベルが付いたペインを見つけて、[カスタムクエリを作成] をクリックします。
[クエリスコープを選択] フィールドで、クエリを調査するプロジェクト、フォルダ、組織を選択します。ポリシー アナライザは、プロジェクト、フォルダ、組織へのアクセスと、そのプロジェクト、フォルダ、組織内のリソースを分析します。
確認するリソースとプリンシパルを選択します。
- [パラメータ 1] フィールドで、プルダウン メニューから [リソース] を選択します。
- [リソース] フィールドに、アクセスを分析するリソースの完全なリソース名を入力します。完全なリソース名がわからない場合は、リソースの表示名の入力を開始し、表示されるリソースのリストから該当するリソースを選択します。
- [セレクタを追加] をクリックします。
- [パラメータ 2] フィールドで、プルダウン メニューから [プリンシパル] を選択します。
- [プリンシパル] フィールドに、ユーザー名か、サービス アカウント名か、グループ名の入力を開始します。次に、表示されたプリンシパルのリストから、分析するアクセスがあるユーザー、サービス アカウント、またはグループを選択します。
省略可: [続行] をクリックして、このクエリで有効にする詳細オプションを選択します。
[カスタムクエリ] ペインで、[分析] > [クエリを実行] をクリックします。レポートページには、入力したクエリ パラメータと、指定したプリンシパルが指定したリソースに対して有するすべてのロールの結果テーブルが表示されます。
Google Cloud コンソールのポリシー分析クエリは、最大 1 分間実行されます。1 分後、Google Cloud コンソールでクエリが停止し、使用可能なすべての結果が表示されます。その時間内にクエリが完了しなかった場合は、結果が不完全であることを示すバナーが Google Cloud コンソールに表示されます。これらのクエリの全ての結果を取得するには、結果を BigQuery にエクスポートします。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
RESOURCE_TYPE
: 検索の対象範囲に設定するリソースのタイプ。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。値project
、folder
、またはorganization
を使用します。RESOURCE_ID
: 検索の対象範囲の Google Cloud プロジェクト、フォルダ、または組織の ID。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。FULL_RESOURCE_NAME
: アクセスを分析するリソースの完全なリソース名。リソース名の形式の一覧については、リソース名の形式をご覧ください。PRINCIPAL
: アクセスを分析するプリンシパル(PRINCIPAL_TYPE:ID
の形式)。例:user:my-user@example.com
プリンシパル タイプの完全なリストについては、プリンシパル識別子をご覧ください。
gcloud asset analyze-iam-policy コマンドを実行します。
Linux、macOS、Cloud Shell
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \ --full-resource-name=FULL_RESOURCE_NAME \ --identity=PRINCIPAL
Windows(PowerShell)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ` --full-resource-name=FULL_RESOURCE_NAME ` --identity=PRINCIPAL
Windows(cmd.exe)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^ --full-resource-name=FULL_RESOURCE_NAME ^ --identity=PRINCIPAL
分析結果を含む YAML レスポンスが返されます。各分析結果には、クエリに関連するアクセス、ID、リソースのセットと、関連する IAM ロール バインディングが一覧表示されます。ロール バインディングが条件付きの場合、分析結果には条件の評価結果も含まれます。条件を評価できなかった場合、結果は CONDITIONAL
になります。
レスポンスの accesses
フィールドに、指定したリソースに対するプリンシパルのロールがリストされます。次の例は、accesses
フィールドがハイライト表示された単一の分析結果を示しています。
... --- ACLs: - accesses: - roles/iam.serviceAccountUser identities: - name: user:my-user@example.com resources: - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project policy: attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project binding: members: - user: my-user@example.com role: roles/iam.serviceAccountUser --- ...
クエリが完了する前にリクエストがタイムアウトした場合、DEADLINE_EXCEEDED
エラーが発生します。これらのクエリの全ての結果を取得するには、長時間実行バージョンの analyze-iam-policy
を使用して結果を BigQuery または Cloud Storage に書き込みます。手順については、BigQuery にポリシー分析を書き込むまたは Cloud Storage にポリシー分析を書き込むをご覧ください。
REST
プリンシパルがリソースに対して持つアクセス権を決定するには、Cloud Asset Inventory API の analyzeIamPolicy
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
RESOURCE_TYPE
: 検索の対象範囲に設定するリソースのタイプ。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。値projects
、folders
、またはorganizations
を使用します。RESOURCE_ID
: 検索の対象範囲の Google Cloud プロジェクト、フォルダ、または組織の ID。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。FULL_RESOURCE_NAME
: アクセスを分析するリソースの完全なリソース名。リソース名の形式の一覧については、リソース名の形式をご覧ください。PRINCIPAL
: アクセスを分析するプリンシパル(PRINCIPAL_TYPE:ID
の形式)。例:user:my-user@example.com
プリンシパル タイプの完全なリストについては、プリンシパル識別子をご覧ください。
HTTP メソッドと URL:
POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy
JSON 本文のリクエスト:
{ "analysisQuery": { "resourceSelector": { "fullResourceName": "FULL_RESOURCE_NAME" }, "identitySelector": { "identity": "PRINCIPAL" } } }
リクエストを送信するには、次のいずれかのオプションを展開します。
分析結果を含む JSON レスポンスが返されます。各分析結果では、関連する IAM ロール バインディングが記述され、そのバインディングのリソース、アクセス、プリンシパルが一覧表示されます。ロール バインディングが条件付きの場合、分析結果には条件の評価結果も含まれます。条件を評価できなかった場合、結果は CONDITIONAL
としてリストされます。
レスポンスの accesses
フィールドに、指定したリソースに対するプリンシパルのロールがリストされます。次の例は、accesses
フィールドがハイライト表示された単一の分析結果を示しています。
... { "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project", "iamBinding": { "role": "roles/iam.serviceAccountUser", "members": [ "user:my-user@example.com" ] }, "accessControlLists": [ { "resources": [ { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project" } ], "accesses": [ { "roles": "iam.serviceAccountUser" } ] } ], "identityList": { "identities": [ { "name": "user:my-user@example.com" } ] }, "fullyExplored": true }, ...
クエリが完了する前にリクエストがタイムアウトした場合、DEADLINE_EXCEEDED
エラーが発生します。これらのクエリの全ての結果を取得するには、長時間実行バージョンの analyzeIamPolicy
を使用して結果を BigQuery または Cloud Storage に書き込みます。手順については、BigQuery にポリシー分析を書き込むまたは Cloud Storage にポリシー分析を書き込むをご覧ください。
プリンシパルがアクセスできるリソースを決定する
Policy Analyzer を使用して、プリンシパルが組織内のどのリソースに対し特定のロールまたは権限を持つかを確認できます。この情報を取得するには、分析するアクセスがあるプリンシパルと、確認する 1 つ以上の権限またはロールを含むクエリを作成します。
Console
Google Cloud コンソールで、[Policy Analyzer] ページに移動します。
[ポリシーの分析] セクションで、[カスタムクエリ] というラベルが付いたペインを見つけて、[カスタムクエリを作成] をクリックします。
[クエリスコープを選択] フィールドで、クエリを調査するプロジェクト、フォルダ、組織を選択します。ポリシー アナライザは、プロジェクト、フォルダ、組織へのアクセスと、そのプロジェクト、フォルダ、組織内のリソースを分析します。
確認するプリンシパルと、確認するロールまたは権限を選択します。
- [パラメータ 1] フィールドで、プルダウン メニューから [プリンシパル] を選択します。
- [プリンシパル] フィールドに、ユーザー名か、サービス アカウント名か、グループ名の入力を開始します。次に、表示されたプリンシパルのリストから、分析するアクセスがあるユーザー、サービス アカウント、またはグループを選択します。
- [セレクタを追加] をクリックします。
- [パラメータ 2] フィールドで、[ロール] か [権限] を選択します。
- [ロールを選択] フィールドか [権限を選択] フィールドで、確認するロールまたは権限を選択します。
- 省略可: 追加のロールと権限を確認するには、確認するすべてのロールと権限が表示されるまで、[ロール] と [権限] セレクタの追加を継続します。
省略可: [続行] をクリックして、このクエリで有効にする詳細オプションを選択します。
[カスタムクエリ] ペインで、[分析] > [クエリを実行] をクリックします。レポートページには、入力したクエリ パラメータと、指定されたプリンシパルが指定されたロールまたは権限を有するすべてのリソースの結果テーブルが表示されます。
Google Cloud コンソールのポリシー分析クエリは、最大 1 分間実行されます。1 分後、Google Cloud コンソールでクエリが停止し、使用可能なすべての結果が表示されます。その時間内にクエリが完了しなかった場合は、結果が不完全であることを示すバナーが Google Cloud コンソールに表示されます。これらのクエリの全ての結果を取得するには、結果を BigQuery にエクスポートします。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
RESOURCE_TYPE
: 検索の対象範囲に設定するリソースのタイプ。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。値project
、folder
、またはorganization
を使用します。RESOURCE_ID
: 検索の対象範囲の Google Cloud プロジェクト、フォルダ、または組織の ID。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。PRINCIPAL
: アクセスを分析するPRINCIPAL_TYPE:ID
形式のプリンシパル(例:user:my-user@example.com
)。プリンシパル タイプの全一覧については、プリンシパル識別子をご覧ください。PERMISSIONS
: 確認する権限のカンマ区切りのリスト(例:compute.instances.get,compute.instances.start
)。複数の権限を一覧表示すると、Policy Analyzer はリストされた権限を確認します。
gcloud asset analyze-iam-policy コマンドを実行します。
Linux、macOS、Cloud Shell
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \ --identity=PRINCIPAL \ --permissions='PERMISSIONS'
Windows(PowerShell)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ` --identity=PRINCIPAL ` --permissions='PERMISSIONS'
Windows(cmd.exe)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^ --identity=PRINCIPAL ^ --permissions='PERMISSIONS'
分析結果を含む YAML レスポンスが返されます。各分析結果には、クエリに関連するアクセス、ID、リソースのセットと、関連する IAM ロール バインディングが一覧表示されます。ロール バインディングが条件付きの場合、分析結果には条件の評価結果も含まれます。条件を評価できなかった場合、結果は CONDITIONAL
になります。
指定されたプリンシパルが指定された権限のいずれかを持つリソースが、レスポンスの resources
フィールドにリストされます。次の例は、resources
フィールドがハイライト表示された単一の分析結果を示しています。
... --- ACLs: - accesses: - permission: compute.instances.get - permission: compute.instances.start identities: - name: user:my-user@example.com resources: - fullResourceName: //compute.googleapis.com/projects/my-project/global/images/my-image policy: attachedResource: //compute.googleapis.com/projects/my-project/global/images/my-image binding: members: - user: my-user@example.com role: roles/compute.admin --- ...
クエリが完了する前にリクエストがタイムアウトした場合、DEADLINE_EXCEEDED
エラーが発生します。これらのクエリの全ての結果を取得するには、長時間実行バージョンの analyze-iam-policy
を使用して結果を BigQuery または Cloud Storage に書き込みます。手順については、BigQuery にポリシー分析を書き込むまたは Cloud Storage にポリシー分析を書き込むをご覧ください。
REST
プリンシパルがアクセスできるリソースを特定するには、Cloud Asset Inventory API の analyzeIamPolicy
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
RESOURCE_TYPE
: 検索の対象範囲に設定するリソースのタイプ。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。値projects
、folders
、またはorganizations
を使用します。RESOURCE_ID
: 検索の対象範囲の Google Cloud プロジェクト、フォルダ、または組織の ID。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。PRINCIPAL
: アクセスを分析するPRINCIPAL_TYPE:ID
形式のプリンシパル(例:user:my-user@example.com
)。プリンシパル タイプの完全なリストについては、プリンシパル識別子をご覧ください。PERMISSION_1
、PERMISSION_2
、PERMISSION_N
: 確認する権限(compute.instances.get
など)。複数の権限を一覧表示すると、Policy Analyzer はリストされた権限を確認します。
HTTP メソッドと URL:
POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy
JSON 本文のリクエスト:
{ "analysisQuery": { "identitySelector": { "identity": "PRINCIPAL" }, "accessSelector": { "permissions": [ "PERMISSION_1", "PERMISSION_2", "PERMISSION_N" ] } } }
リクエストを送信するには、次のいずれかのオプションを展開します。
分析結果を含む JSON レスポンスが返されます。各分析結果では、関連する IAM ロール バインディングが記述され、そのバインディングのリソース、アクセス、プリンシパルが一覧表示されます。ロール バインディングが条件付きの場合、分析結果には条件の評価結果も含まれます。条件を評価できなかった場合、結果は CONDITIONAL
としてリストされます。
指定されたプリンシパルが指定された権限のいずれかを持つリソースが、レスポンスの resources
フィールドにリストされます。次の例は、resources
フィールドがハイライト表示された単一の分析結果を示しています。
... { "attachedResourceFullName": "//compute.googleapis.com/projects/my-project/global/images/my-image", "iamBinding": { "role": "roles/compute.admin", "members": [ "user:my-user@example.com" ] }, "accessControlLists": [ { "resources": [ { "fullResourceName": "//compute.googleapis.com/projects/my-project/global/images/my-image" } ], "accesses": [ { "permission": "compute.instances.get" }, { "permission": "compute.instances.start" } ] } ], "identityList": { "identities": [ { "name": "user:my-user@example.com" } ] }, "fullyExplored": true }, ...
クエリが完了する前にリクエストがタイムアウトした場合、DEADLINE_EXCEEDED
エラーが発生します。これらのクエリの全ての結果を取得するには、長時間実行バージョンの analyzeIamPolicy
を使用して結果を BigQuery または Cloud Storage に書き込みます。手順については、BigQuery にポリシー分析を書き込むまたは Cloud Storage にポリシー分析を書き込むをご覧ください。
特定の時点でのアクセスを決定する
コンテキストが十分であれば、Policy Analyzer は特定の時間にのみアクセスを許可する IAM 条件付きロール バインディングを分析できます。これらの条件を日時条件と呼びます。 Policy Analyzer で日時条件を持つロール バインディングを正確に分析するには、リクエストでアクセス時間を定義する必要があります。
Policy Analyzer では、追加のユーザー入力なしでリソース条件を分析することもできます。Policy Analyzer と条件の仕組みの詳細については、条件付きアクセスをご覧ください。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
RESOURCE_TYPE
: 検索の対象範囲に設定するリソースのタイプ。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。値project
、folder
、またはorganization
を使用します。RESOURCE_ID
: 検索の対象範囲の Google Cloud プロジェクト、フォルダ、または組織の ID。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。PERMISSIONS
: 省略可。確認する権限のカンマ区切りのリスト(compute.instances.get,compute.instances.start
など)。複数の権限を一覧表示すると、Policy Analyzer はリストされた権限を確認します。-
FULL_RESOURCE_NAME
: 省略可。アクセスを分析する対象リソースの完全なリソース名。リソース名の形式の一覧については、リソース名の形式をご覧ください。 PERMISSIONS
: 省略可。確認する権限のカンマ区切りのリスト(compute.instances.get,compute.instances.start
など)。複数の権限を一覧表示すると、Policy Analyzer はリストされた権限を確認します。ACCESS_TIME
: 確認する時刻。この時刻には将来の時刻を指定してください。RFC 3339 形式のタイムスタンプ(例:2099-02-01T00:00:00Z
)を使用します。
gcloud asset analyze-iam-policy コマンドを実行します。
Linux、macOS、Cloud Shell
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \ --identity=PRINCIPAL \ --full-resource-name=FULL_RESOURCE_NAME \ --permissions='PERMISSIONS' \ --access-time=ACCESS_TIME
Windows(PowerShell)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ` --identity=PRINCIPAL ` --full-resource-name=FULL_RESOURCE_NAME ` --permissions='PERMISSIONS' ` --access-time=ACCESS_TIME
Windows(cmd.exe)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^ --identity=PRINCIPAL ^ --full-resource-name=FULL_RESOURCE_NAME ^ --permissions='PERMISSIONS' ^ --access-time=ACCESS_TIME
分析結果を含む YAML レスポンスが返されます。各分析結果には、クエリに関連するアクセス、ID、リソースのセットと、関連する IAM ロール バインディングが一覧表示されます。ロール バインディングが条件付きの場合、分析結果には条件の評価結果も含まれます。条件を評価できなかった場合、結果は CONDITIONAL
になります。
リクエストにアクセス時間を含めると、Policy Analyzer は日時条件を評価できます。条件が false と評価された場合、そのロールはレスポンスに含まれません。条件が true と評価された場合、条件の評価結果が TRUE
としてリストされます。
... --- ACLs: - accesses: - permission: compute.instances.get - permission: compute.instances.start conditionEvaluationValue: 'TRUE' identities: - name: user:my-user@example.com resources: - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project policy: attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project binding: condition: expression: request.time.getHours("America/Los_Angeles") >= 5 title: No access before 5am PST members: - user: my-user@example.com role: roles/compute.admin --- ...
クエリが完了する前にリクエストがタイムアウトした場合、DEADLINE_EXCEEDED
エラーが発生します。これらのクエリの全ての結果を取得するには、長時間実行バージョンの analyze-iam-policy
を使用して結果を BigQuery または Cloud Storage に書き込みます。手順については、BigQuery にポリシー分析を書き込むまたは Cloud Storage にポリシー分析を書き込むをご覧ください。
REST
特定の時間にリソースに対して特定の権限を持つプリンシパルを特定するには、Cloud Asset Inventory API の analyzeIamPolicy
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
RESOURCE_TYPE
: 検索の対象範囲に設定するリソースのタイプ。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。値projects
、folders
、またはorganizations
を使用します。RESOURCE_ID
: 検索の対象範囲の Google Cloud プロジェクト、フォルダ、または組織の ID。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。PERMISSION_1
、PERMISSION_2
、PERMISSION_N
: 省略可。確認する権限(例:compute.instances.get
)。複数の権限を一覧表示すると、Policy Analyzer はリストされた権限を確認します。-
FULL_RESOURCE_NAME
: 省略可。アクセスを分析する対象リソースの完全なリソース名。リソース名の形式の一覧については、リソース名の形式をご覧ください。 PERMISSION_1
、PERMISSION_2
、PERMISSION_N
: 省略可。確認する権限(例:compute.instances.get
)。複数の権限を一覧表示すると、Policy Analyzer はリストされた権限を確認します。ACCESS_TIME
: 確認する時刻。この時刻には将来の時刻を指定してください。RFC 3339 形式のタイムスタンプ(例:2099-02-01T00:00:00Z
)を使用します。
HTTP メソッドと URL:
POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy
JSON 本文のリクエスト:
{ "analysisQuery": { "identitySelector": { "identity": "PRINCIPAL" }, "resourceSelector": { "fullResourceName": "FULL_RESOURCE_NAME" }, "accessSelector": { "permissions": [ "PERMISSION_1", "PERMISSION_2", "PERMISSION_N" ] }, "conditionContext": { "accessTime": "ACCESS_TIME" } } }
リクエストを送信するには、次のいずれかのオプションを展開します。
分析結果を含む JSON レスポンスが返されます。各分析結果では、関連する IAM ロール バインディングが記述され、そのバインディングのリソース、アクセス、プリンシパルが一覧表示されます。ロール バインディングが条件付きの場合、分析結果には条件の評価結果も含まれます。条件を評価できなかった場合、結果は CONDITIONAL
としてリストされます。
リクエストにアクセス時間を含めると、Policy Analyzer は日時条件を評価できます。条件が false と評価された場合、そのロールはレスポンスに含まれません。条件が true と評価された場合、分析レスポンスの条件評価値は TRUE
です。
... { "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project", "iamBinding": { "role": "roles/compute.admin", "members": [ "user:my-user@example.com" ], "condition": { "expression": "request.time.getHours(\"America/Los_Angeles\") \u003e= 5", "title": "No access before 5am PST" } }, "accessControlLists": [ { "resources": [ { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project" } ], "accesses": [ { "permission": "compute.instances.get" }, { "permission": "compute.instances.start" } ], "conditionEvaluation": { "evaluationValue": "TRUE" } } ], "identityList": { "identities": [ { "name": "user:my-user@example.com" } ] }, "fullyExplored": true }, ...
クエリが完了する前にリクエストがタイムアウトした場合、DEADLINE_EXCEEDED
エラーが発生します。これらのクエリの全ての結果を取得するには、長時間実行バージョンの analyzeIamPolicy
を使用して結果を BigQuery または Cloud Storage に書き込みます。手順については、BigQuery にポリシー分析を書き込むまたは Cloud Storage にポリシー分析を書き込むをご覧ください。
オプションを有効にする
以下のオプションを有効にすると、より詳細なクエリの結果を取得できます。
Console
設定 | 説明 |
---|---|
クエリに一致するリソース内のリソースを一覧表示します | このオプションを有効にした場合、クエリ結果には、クエリ結果内の任意の親リソース(プロジェクト、フォルダ、組織)に対する最大 1,000 件の関連する子孫リソースが一覧表示されます。 |
グループ内の個々のユーザーの一覧を表示します |
このオプションを有効にすると、クエリ結果のすべてのグループが個々のメンバーに展開されます。十分なグループ権限がある場合は、ネストされたグループも展開されます。この展開の上限は、グループあたり 1,000 メンバーに制限されています。 このオプションは、クエリでプリンシパルを指定していない場合にのみ使用できます。 |
ロール内の権限の一覧を表示します |
このオプションを有効にすると、クエリ結果には、ロール自体に加えて、各ロール内のすべての権限が一覧表示されます。 このオプションは、クエリで権限やロールを指定していない場合にのみ使用できます。 |
gcloud
このセクションでは、gcloud CLI を使用して許可ポリシーを分析するときに追加できるいくつかの共通フラグについて説明します。オプションの完全なリストについては、オプション フラグをご覧ください。
旗 | 説明 |
---|---|
--analyze-service-account-impersonation |
このオプションが有効になっている場合、Policy Analyzer は追加の分析クエリを実行して、指定されたリソースに対して指定されたアクセス権を持つサービス アカウントになり代わるユーザーを決定します。Policy Analyzer は、クエリ結果内のサービス アカウントごとに 1 つのクエリを実行します。これらのクエリは、サービス アカウントに次のいずれかの権限を持つユーザーを分析します。
これは、多くのクエリを自動的に実行するため、非常にコストの高いオペレーションです。 |
--expand-groups |
このオプションを有効にすると、クエリ結果のすべてのグループが個々のメンバーに展開されます。十分なグループ権限がある場合は、ネストされたグループも展開されます。この展開の上限は、グループあたり 1,000 メンバーに制限されています。 このオプションは、クエリでプリンシパルを指定していない場合にのみ有効です。 |
--expand-resources |
このオプションを有効にした場合、クエリ結果には、クエリ結果内の任意の親リソース(プロジェクト、フォルダ、組織)に対する最大 1,000 件の関連する子孫リソースが一覧表示されます。 |
--expand-roles |
このオプションを有効にすると、クエリ結果には、ロール自体に加えて、各ロール内のすべての権限が一覧表示されます。 このオプションは、クエリで権限やロールを指定していない場合にのみ使用できます。 |
--output-group-edges |
このオプションを有効にすると、グループ間でのメンバーシップの関係をクエリ結果として出力します。 |
--output-resource-edges |
このオプションを有効にすると、クエリの結果としてリソース間の関連する親子関係が出力されます。 |
REST
オプションを有効にするには、まず分析クエリに options
フィールドを追加します。例:
{ "analysisQuery": { "resourceSelector": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project" }, "accessSelector": { "permissions": [ "iam.roles.get", "iam.roles.list" ] }, "options": { OPTIONS } } }
OPTIONS
は、有効にするオプション("OPTION": true
形式)で置き換えます。使用可能なオプションを次の表に示します。
設定 | 説明 |
---|---|
analyzeServiceAccountImpersonation |
このオプションが有効になっている場合、Policy Analyzer は追加の分析クエリを実行して、指定されたリソースに対して指定されたアクセス権を持つサービス アカウントになり代わるユーザーを決定します。Policy Analyzer は、クエリ結果内のサービス アカウントごとに 1 つのクエリを実行します。これらのクエリは、サービス アカウントに次のいずれかの権限を持つユーザーを分析します。
これは、多くのクエリを自動的に実行するため、非常にコストの高いオペレーションです。 |
expandGroups |
このオプションを有効にすると、クエリ結果のすべてのグループが個々のメンバーに展開されます。十分なグループ権限がある場合は、ネストされたグループも展開されます。この展開の上限は、グループあたり 1,000 メンバーに制限されています。 このオプションは、クエリでプリンシパルを指定していない場合にのみ有効です。 |
expandResources |
このオプションを有効にした場合、クエリ結果には、クエリ結果内の任意の親リソース(プロジェクト、フォルダ、組織)に対する最大 1,000 件の関連する子孫リソースが一覧表示されます。 |
expandRoles |
このオプションを有効にすると、クエリ結果には、ロール自体に加えて、各ロール内のすべての権限が一覧表示されます。 このオプションは、クエリで権限やロールを指定していない場合にのみ使用できます。 |
outputGroupEdges |
このオプションを有効にすると、グループ間でのメンバーシップの関係をクエリ結果として出力します。 |
outputResourceEdges |
このオプションを有効にすると、クエリの結果としてリソース間の関連する親子関係が出力されます。 |
次のステップ
AnalyzeIamPolicyLongrunning
を使用して BigQuery に書き込むまたは Cloud Storage に書き込む方法を学習する。- REST API を使用して Policy Analysis クエリを保存する方法を確認する。
- プリンシパルが特定の種類のアクセス権を持っていない理由を確認できる、利用可能なアクセストラブルシューティング ツールを確認する。