IAMとは
Identity and Access Managementの略で、Google Cloud Platformのリソースに対して、誰(メンバー)がどのようなアクセス権(役割)を持つか定義し、アクセス制御を管理すること。IAMによって、よりきめ細やかなアクセス権を付与し、他のリソースへの望ましくないアクセスを防ぐことができる。また、セキュリティに関する最小権限の原則を導入できるため、リソースに対する必要なアクセス権のみ付与できる。
IDに関する概念
Cloud IAMでは、次のタイプのメンバーが存在する。
- Googleアカウント
- サービスアカウント
- Googleグループ
- G Suiteドメイン
- Cloud Identityドメイン
Googleアカウント
Google Cloud Platformを利用する開発者、管理者。Googleアカウントに関連付けられているメールアドレス(gmail.com のアドレス)がIDとなる。
サービスアカウント
Googleアカウントのような個々のエンドユーザー(Google Cloud Platformを利用する開発者、管理者)ではなく、アプリケーションやリソース(仮想マシン等)に属している特別なGoogleアカウント。アプリケーションはサービスアカウントを使用して、Googleアカウントユーザーの関与を必要とせずにGoogl のサービスAPI呼び出しやリソースアクセスができる。サービスアカウントは、アカウント固有のメールアドレスで識別される。
サービスアカウントにはいくつかの種類が存在する。
ユーザー管理サービスアカウント
Compute Engine APIがプロジェクトで有効になっている場合、デフォルトでCompute Engineサービスアカウントが作成される。アカウント名は以下の形式。
[PROJECT-NUMBER]-compute@developer.gserviceaccount.com
プロジェクトにGoogle App Engineアプリケーションが含まれている場合、デフォルトのApp Engineサービスアカウントがプロジェクトにデフォルトで作成される。アカウント名は以下の形式。
[PROJECT-ID]@appspot.gserviceaccount.com
プロジェクトごとに最大100 個のサービスアカウント(デフォルトのCompute EngineサービスアカウントとGoogle App Engineサービスアカウントを含む)を作成することができ、ユーザーが管理するサービスアカウントとなる。
Google管理サービスアカウント
ユーザー管理サービスアカウントに加えて、プロジェクトのIAMポリシーまたはCloud Platform Consoleにいくつかの追加サービスアカウントが表示されることがある。これらのサービ アカウントはGoogleが作成、所有、管理するため、Google管理サービスアカウントとなる。例として、以下のようなアカウントが存在する。
- Google APIサービスアカウント
個々のエンドユーザ(開発者)の代わりに内部Googleプロセスを実行するように設計されており、Cloud Platform Console の [サービス アカウント] セクションには一覧表示されない。アカウント名は以下の形式。
[PROJECT_NUMBER]@cloudservices.gserviceaccount.com
Googleグループ
Googleアカウントやサービスアカウントの集合(グループ)。各Googleグループには固有の名前とメールアドレスが関連付けられている。Googleグループを使用することで、個々のGoogleアカウントまたはサービスアカウントに対して1つずつアクセス制御を付与または変更するのではなく、一度にグループ全体に対してアクセス制御を付与または変更できるので、管理が容易となる。
G Suiteドメイン
1つの組織内の全てのメンバーの仮想グループ。各メールアカウントはusername@yourdomain.comの形式となる。
Cloud Identityドメイン
1つの組織内の全てのメンバーの仮想グループ。G Suiteドメインと似ているが、Cloud Identityドメインユーザーは、G Suiteのアプリケーションと機能にアクセスすることはできない。詳細は「Cloud Identity について」を参照。
アクセス管理に関する概念
リソース
GCPの各種リソース(プロジェクト、GCEインスタンス、Cloud Storageバケット等のサービス)に対するアクセス権をユーザに付与することが可能。
権限と役割
GCPでは、権限によってリソースに対して許可されているオペレーションが決定する。ただし、権限をユーザーに直接割り当てることはできないため、代わりに役割をユーザーに付与することになる。役割とは所謂ロール(Role)のこと。役割を付与することで、そのユーザはその役割に含まれる全ての権限が付与される。
※権限と役割のイメージ
詳細な役割は「役割について」を参照。
ポリシー
誰がどの種類のアクセス権を持つかの定義の集合である「Cloud IAM ポリシー」を作成することで、ユーザーに役割を付与することができる。ポリシーはリソースに紐づけられ、そのリソースがアクセスされると常にアクセス制御が強制される。