🔎

複数の GCS bucket に付与されたサービスアカウントの権限を一覧で確認する方法

2024/02/08に公開

GCS bucket というよりは、「リソースレベルで付与された許可ポリシー(ロールバインディング)の一覧確認方法」です。Asset Inventory が便利。

$ gcloud asset search-all-iam-policies \
--query='policy:<service-account-email>'

Google Cloud のIAM許可ポリシーは

  • 組織レベル
  • フォルダレベル
  • プロジェクト レベル
  • リソースレベル

で設定できます。
プロジェクトレベルの許可ポリシーであれば下図のIAMコンソール画面で、サービスアカウントに紐づく許可ポリシーを一覧で確認できますが、特定の Cloud Storage バケットなど、リソースレベルの許可ポリシーの場合は下図画面では確認できません。

もちろん特定の単一のリソース、例えば Cloud Storage バケットであれば、PERMISSIONS タブからリソースレベルの許可ポリシーを確認することはできますが、当然1つのバケット(リソース)に対する許可ポリシーしか確認できません。一覧でサービスアカウントに紐づく複数のバケットの許可ポリシーを確認したい場合などはどうすればよいでしょうか。

Asset Inventory

そのような場合は Asset Inventory を使うことで一覧で確認ができます。

コンソール画面

policy:<service-account-email> で filter。

CLIコマンド

$ gcloud asset search-all-iam-policies \
--query='policy:<service-account-email>'
---
assetType: storage.googleapis.com/Bucket
organization: organizations/xxxxx
policy:
  bindings:
  - members:
    - serviceAccount:<service-account-email>
    role: roles/storage.objectViewer
project: projects/xxxxx
resource: //storage.googleapis.com/cloud-storage-bucket1
---
assetType: storage.googleapis.com/Bucket
organization: organizations/xxxxx
policy:
  bindings:
  - members:
    - serviceAccount:<service-account-email>
    role: roles/storage.objectViewer
project: projects/xxxxx
resource: //storage.googleapis.com/cloud-storage-bucket2

Discussion