Open5
GCPのIAMについてメモ

主にGCP固有の概念を把握する

プリンシパル、ロール、ポリシーという3つから構成される。
- プリンシパル
- googleアカウント/グループ、サービスアカウントなど一意の識別子を持つ
- ロール
- 権限のコレクション
- ポリシー
- リソースに対して、どんなロールをどのプリンシパルに許可するのを定義する

プリンシパルの種類
- Google アカウント
- いつも使っているgoogleアカウントそのまま
- サービスアカウント
- アプリケーションやGCP上のリソースから使用するアカウント
- 人間が直接使うことはない
- Google グループ
- 複数のGoogleアカウントやサービスアカウントをグループとしてまとめたもの
- Google Workspace アカウント
- ドメインに紐づくグループ
-
hoge@example.com
というGアカウントを作るとexample.com
という仮想グループに追加される - グループ同様複数アカウントに対する権限管理をする
- Cloud Identity ドメイン
- 組織内のすべてのGアカウントの仮想グループ
- Google Workspace アカウントに似ている
- 認証済みのすべてのユーザー
-
allAuthenticatedUsers
はGアカウントとサービスアカウントで認証済みのユーザーすべてを表す特殊な識別子 - 外部IdPは含まれないので、大体の場合は
allUsers
を使うほうが良い
-
- すべてのユーザー
-
allUsers
はallAuthenticatedUsers
の認証なしユーザーも含めた識別子
-

リソース
- ユーザーが特定のリソースにアクセスする場合はそのリソースのロールをユーザーに付与する
- 一部サービス(GCSやGCEなど)はリソース単位でのロール付与ができるが、基本的にはプロジェクトレベルで権限を管理する
権限
-
service.resource.verb
という形式
ロール
- 権限のコレクション
- ロールの種類
- 基本ロール
- オーナー、編集者、閲覧者など
- 事前定義ロール
- 基本ロールよりも詳細なアクセス制御が可能なロール
- カスタムロール
- ニーズに合わせて権限を調整するために作成するロール
- 基本ロール
許可ポリシー
- 誰が、どの種類のアクセス権をもつかを定義するステートメントの集合
- ユーザーへのロールの付与に必要
-
role
とmembers
から構成される-
role
: プリンシパルに付与するロール -
members
: プリンシパルから構成されたリスト。プリンシパルの種類ごとに接頭辞がつく
-

リソース階層
- Org,Folders,Project,services
- 許可ポリシーはどの階層にも付与でき、子リソースは親リソースの許可ポリシーをすべて継承する
たとえば、前の図で topic_a はプロジェクト example-prod 内に存在する Pub/Sub リソースです。example-prod の編集者のロールを micah@example.com に付与し、topic_a のパブリッシャーのロールを song@example.com に付与する場合は、topic_a の編集者のロールを micah@example.com に付与し、パブリッシャーのロールを song@example.com に付与します。