このページでは、さまざまなIAM ポリシー検索ユースケースのサンプルクエリを紹介します。
ユースケース: 組織内の Cloud リソースを一覧表示し、出力の形式をタプル(RESOURCE、ROLE、MEMBER)に設定する
gcloud asset search-all-iam-policies \
--scope=organizations/123456 \
--page-size=50 \
--flatten='policy.bindings[].members[]' \
--format='table(resource, policy.bindings.role, policy.bindings.members)'
--scope
を projects/12345678 または folders/1234567 に変更すると、組織ではなくプロジェクトまたはフォルダ内を検索できます。
--query
制限を追加して、より具体的なリソース検索結果を取得できます。
結果の形式を設定したくない場合は、--flatten
と --format
を削除できます。
table
ではなく csv
を使用すると、結果の形式を CSV 形式に設定できます。
--limit
を追加すると、検索結果のサブセットのみを取得できます。このフラグを指定しないと、すべての検索結果のページが自動的に表示されるようになります。
ユースケース: プロジェクト内の IAM ポリシーを一覧表示する
gcloud asset search-all-iam-policies \
--scope=projects/12345678
--scope
を organizations/123456 または folders/1234567 に変更すると、プロジェクトではなく、組織またはフォルダ内のすべての IAM ポリシーを一覧表示できます。
--query
制限を追加して、より具体的なポリシー検索結果を取得できます。
ユースケース: 組織内の組織、フォルダ、プロジェクトのリソースに設定されている IAM ポリシーを一覧表示する
gcloud asset search-all-iam-policies \
--scope=organizations/123456 \
--query='resource:cloudresourcemanager'
--query
を resource:(cloudresourcemanager projects) に変更すると、プロジェクトだけを表示できます。
ユースケース: プロジェクトの閲覧者を一覧表示する
gcloud asset search-all-iam-policies \
--scope=projects/12345678 \
--query='resource:cloudresourcemanager policy:roles/viewer' \
--page-size=50 \
--flatten='policy.bindings[].members[]' \
--format='table(policy.bindings.members)'
ユースケース: ユーザーがオーナーのロールを持つプロジェクトを一覧表示する
gcloud asset search-all-iam-policies \
--scope=organizations/123456 \
--query='resource:(cloudresourcemanager projects) policy:(roles/owner user@mycompany.com)' \
--page-size=50 \
--format='table(resource)'
ユースケース: ユーザーがプロジェクトに対して持つロールを一覧表示する
gcloud asset search-all-iam-policies \
--scope=projects/12345678 \
--query='resource:(cloudresourcemanager projects) policy:user@mycompany.com' \
--page-size=50 \
--flatten='policy.bindings[]' \
--format='table(policy.bindings.role)'
ユースケース: ユーザーがプロジェクトに対して持つ権限を一覧表示する
gcloud asset search-all-iam-policies \
--scope=projects/12345678 \
--query='resource:cloudresourcemanager policy:user@mycompany.com policy.role.permissions:""' \
--page-size=50 \
--format='default(explanation.matchedPermissions)'
ユースケース: bigstore バケットにアクセスできるユーザーを一覧表示する
gcloud asset search-all-iam-policies \
--scope=projects/12345678 \
--query='resource:cloudresourcemanager policy.role.permissions:storage.buckets' \
--page-size=50 \
--flatten='policy.bindings[].members[]' \
--format='table(policy.bindings.members)'
ユースケース: リスクのあるポリシー設定を検出するために、オーナーのロールを持つサービス アカウントを一覧表示する
gcloud asset search-all-iam-policies \
--scope=organizations/123456 \
--query='policy:(roles/owner serviceAccount)' \
--page-size=50 \
--flatten='policy.bindings[].members[]' \
--format='table(resource.segment(3):label=RESOURCE_TYPE, resource.basename():label=RESOURCE, policy.bindings.members)' \
| grep serviceAccount
ユースケース: Gmail ユーザーがアクセスできるリソースを一覧表示する
gcloud asset search-all-iam-policies \
--scope=organizations/123456 \
--query='policy:gmail.com' \
--page-size=50 \
--flatten='policy.bindings[].members[]' \
--format='csv(resource, policy.bindings.role, policy.bindings.members)' \
| grep @gmail.com
ユースケース: ドメイン全体にロールを付与されたリソースを一覧表示する
gcloud asset search-all-iam-policies \
--scope=organizations/123456 \
--query='policy:"domain:bigwhite.joonix.net"' \
--page-size=50 \
--flatten='policy.bindings[]' \
--format='table(resource, policy.bindings.role)'
ユースケース: 一般ユーザーに付与されたロールを持つリソースを一覧表示する
gcloud asset search-all-iam-policies \
--scope=organizations/123456 \
--query='policy:(allUsers OR allAuthenticatedUsers)' \
--page-size=50 \
--format='table(resource)'
ユースケース: 組織、フォルダ、プロジェクトの IAM ポリシーを変更できるユーザーまたはグループを一覧表示する
gcloud asset search-all-iam-policies \
--scope=organizations/123456 \
--query='policy.role.permissions:(resourcemanager.organizations.setIamPolicy OR resourcemanager.folders.setIamPolicy OR resourcemanager.projects.setIamPolicy)' \
--page-size=50 \
--format='json(resource, policy.bindings, explanation.matchedPermissions)'