🕶️

【GCP】Cloud IAMの基本理解メモ

2021/07/21に公開

基本概念

クラウド上のリソースに対するアクセス制御は
ホワイトリスト形式で許可された操作権限のみGoogleアカウントに与えることができる。
Cloud IAMを使用することで
誰(Member Identify)が、どのようなアクセス権(Roles)で、
どのGCPリソースに対して権限を持つかを定義し、
GCP上のリソースに対するアクセス制御ができる。
GCPでは、この「誰がどの種類のアクセス権を持つか」の定義の集合を
Cloud IAM Policyとして定義している。

アカウント

Cloud IAMによるアクセス権限が次のアカウント種類に記載するIDに対して設定できる。

Googleアカウント

GoogleアカウントはGCPを利用するためのユーザアカウント。
Googleアカウントに関連付けられている
メールアドレス(gmail.comのメールアドレス等)がIDとなる。
企業・団体のメールアドレスを登録して利用することもできる。

サービスアカウント

ユーザアカウントとは異なり、利用するアプリケーションに属するアカウントであり、
Googleアカウントなどと同様に、Cloud IAMによるアクセス制御ができるアカウント。
個々のエンドユーザではなく、GCPのアプリケーションに属するアカウントであり、
アプリケーションを実行する際にユーザ(Googleアカウントなど)を介さずに
各APIを呼び出すことができる。
サービスアカウントは、役割(Role)が付与できる以外に、
役割(Role)を与えたサービスアカウント自体をリソースとして扱うこともできる。
それにより、プロジェクトのオーナー、エディター、ビューワー、
もしくはサービスアカウントアクターの役割(Role)を持つユーザは、
プロジェクト内のサービスアカウントにアクセスできる。
サービスアカウントを利用することで、
GCPリソースへのアクセス制御をユーザと切り離すことが可能となる。

Googleグループ

複数のGoogleアカウントやサービスアカウントなどをまとめて管理する際に使用する。
Googleグループを利用することで、個々のアカウントではなく、
グループ全体に対してCloud IAMによるアクセス制御(権限の付与や変更)ができる。
ただし、Googleグループにはログイン認証情報がないため、
IDを確立できない(リソースへのアクセス権をリクエストできない)ので注意が必要。
 →管理者からの一律権限付与はできるが、グループ内ユーザ側からの権限申請ができない。

G Suiteドメイン

G Suiteドメインは、会社などの1つの組織に所属するすべてのメンバーを含むグループ。
G Suiteのユーザはメールアカウントとして、
会社のメールアドレスなどのインターネットドメイン名と関連付けられたIDを使用できる。
Googleグループ同様に、ドメインを使用してIDを確立できないが、
組織内での権限管理の運用が容易。

Cloud Identityドメイン

Cloud Identityドメインは、G Suiteドメインと同様に、
1つの組織内のすべてのメンバーを含む仮想グループ。
GmailやドライブなどのG Suiteサービスを必要としないユーザ向けのドメイン。

アクセス制御

Cloud IAMでは通常、個々の権限を個別に制御するのではなく
役割(Role)を割り当ててアクセス制御の管理を行う。
リソースに対して許可される操作を以下の形式で指定する。

<service>.<resource>.<verb>

service‥サービス名
resource‥サービス内のリソース
verb‥サービスに対する操作

例)
compute.machineType.list

フォーマット 設定値 設定値の表す意味
service compute GCE。仮想マシン
resource machineType マシンタイプ
verb list リストする操作権限

Role

Primitive roles

プロジェクトレベルで付与する役割。
プロジェクトの管理者(オーナ)、編集者(エディタ)、閲覧者(ビューワ)が存在する。
オーナの役割(Role)にはエディタが持つ権限がすべて含まれており、
エディタの役割(Role)にはビューワが持つ権限がすべて含まれている。

Predefined roles

Googleにより事前定義されている、GCPの個々のリソース単位の役割(Role)。
例えば、「Compute Engine管理者」という役割(Role)を付与することで、
GCEのすべてのアプリケーションの設定に対する
読取/変更/書込のアクセス権が与えられる。

Custom roles

GCPプロジェクト内のプロジェクトメンバーやサービスアカウントに付与できる。
「Compute Engineインスタンスを停止することしかできない権限」などの役割(Role)を
個別に作成できる。

Policy

Cloud IAMのアクセス制御ポリシーは、GCPのリソース階層である以下のレベルで設定可能
※上位の階層で適用されたポリシーは、その下位階層に自動的に継承される。

階層 意味
Organization ドメイン。最上位階層
フォルダ プロジェクトが所属するグループ的な意味
プロジェクト GCPプロジェクト
リソース GCE等個々のリソース

階層イメージ

Discussion