Identity and Access Management(IAM)では、プリンシパルのアクセスを制御します。プリンシパルは、 Google Cloudに対して認証された 1 つ以上の ID を表します。
ポリシーでプリンシパルを使用する
ポリシーでプリンシパルを使用する手順は次のとおりです。
Google Cloud で認識できる ID を構成します。ID の構成は、 Google Cloud で認識できる ID を作成するプロセスです。ユーザーとワークロードの ID を構成できます。
ID を構成する方法については、以下をご覧ください。
- ユーザーの ID を構成する方法については、ユーザーの ID をご覧ください。
- ワークロードの ID を構成する方法については、ワークロードの ID をご覧ください。
使用するプリンシパル ID を決定します。プリンシパル ID は、ポリシーでプリンシパルを参照する方法です。この識別子は、単一の ID または ID のグループを参照できます。
プリンシパル ID に使用する形式は、次の要素によって異なります。
- プリンシパルのタイプ
- プリンシパルを含めるポリシーのタイプ
各タイプのポリシーの各タイプのプリンシパルのプリンシパル ID の形式を確認するには、プリンシパル ID をご覧ください。
ID の形式がわかれば、プリンシパルの属性(プリンシパルのメールアドレスなど)に基づいてプリンシパルの固有識別子を特定できます。
ポリシーにプリンシパルの ID を含めます。ポリシーの形式に沿って、プリンシパルをポリシーに追加します。
IAM のさまざまなタイプのポリシーについては、ポリシーの種類をご覧ください。
プリンシパル タイプのサポート
各 IAM ポリシータイプは、IAM がサポートするプリンシパル タイプのサブセットをサポートしています。各ポリシータイプでサポートされているプリンシパル タイプを確認するには、プリンシパル ID をご覧ください。
プリンシパルのタイプ
次の表に、IAM でサポートされているさまざまなプリンシパル タイプを簡単に説明します。ポリシーで使用されるプリンシパル タイプの詳細な説明と例については、表のプリンシパル タイプの名前をクリックしてください。
| プリンシパル タイプ | 説明 | 単一のプリンシパルまたはプリンシパル セット | Google マネージドまたはフェデレーション | ポリシータイプのサポート |
|---|---|---|---|---|
| Google アカウント | Google API やサービスを操作するユーザーを表すユーザー アカウント。 | 単一のプリンシパル | Google が管理 |
次のポリシータイプは Google アカウントをサポートしています。
次のポリシータイプは Google アカウントをサポートしていません。
|
| サービス アカウント | ユーザーではなく、マシン ワークロードで使用されるアカウント。 | 単一のプリンシパル | Google が管理 |
次のポリシータイプはサービス アカウントをサポートしています。
次のポリシータイプはサービス アカウントをサポートしていません。
|
| サービス アカウントのセット | プロジェクト、フォルダ、または組織内のすべてのサービス アカウント。 | サービス アカウントを含むプリンシパル セット。 | Google が管理 |
次のポリシータイプは、一連のサービス アカウントをサポートしています。
次のポリシータイプは、サービス アカウントのセットをサポートしていません。
|
| サービス エージェントのセット | プロジェクト、フォルダ、組織に関連付けられているすべての Google 管理サービス アカウント(サービス エージェント)。 | サービス エージェントを含むプリンシパル セット。 | Google が管理 |
次のポリシータイプは、一連のサービス エージェントをサポートしています。
次のポリシータイプは、サービス エージェントのセットをサポートしていません。
|
| Google グループ | Google アカウントを持つ人間またはマシンのユーザーの名前付きコレクション。 |
次のものを含むことができるプリンシパル セット。
|
Google が管理 |
次のポリシータイプは Google グループをサポートしています。
次のポリシータイプは Google グループをサポートしていません。
|
| ドメイン | 仮想グループを表す Google Workspace アカウントまたは Cloud Identity ドメイン。グループには、ユーザーとサービス アカウントの両方を含めることができます。 |
次のプリンシパル タイプを含むことができるプリンシパル セット。
|
Google が管理 |
次のポリシータイプはドメインをサポートしています。
|
allAuthenticatedUsers |
すべてのサービス アカウントと、Google アカウントで認証されたインターネット上のユーザーを表す特殊な識別子。 |
次のプリンシパル タイプを含むことができるプリンシパル セット。
|
Google が管理 |
次のポリシータイプは、一部のリソースで
次のポリシータイプは
|
allUsers |
認証されたユーザーと認証されていないユーザーの両方を含めて、インターネット上のすべてのユーザーを表す特殊な識別子。 |
次のプリンシパル タイプを含むことができるプリンシパル セット。
|
両方 |
次のポリシータイプは
次のポリシータイプは
|
| Workforce Identity プール内の単一の ID | 外部 IdP で管理され、Workforce Identity 連携を使用して連携された ID を持つユーザー。 | 単一のプリンシパル | 連携 |
次のポリシータイプは、Workforce Identity プール内の単一の ID をサポートしています。
|
| Workforce Identity プール内のプリンシパルのセット | 外部 IdP で管理され、Workforce Identity 連携を使用して連携された ID を持つ一連のユーザー。 | Workforce ID を含むプリンシパル セット。 | 連携 |
次のポリシータイプは、Workforce Identity プール内の一連のプリンシパルをサポートしています。
|
| Workload Identity プール内の単一のプリンシパル | 外部 IdP によって管理され、Workload Identity 連携を使用して連携された ID を持つワークロード(またはマシンユーザー)。 | 単一のプリンシパル | 連携 |
次のポリシータイプは、Workload Identity プール内の単一のプリンシパルをサポートしています。
|
| Workload Identity プール内の一連のプリンシパル | 外部 IdP によって管理され、Workload Identity 連携を使用して連携される ID を持つワークロード(またはマシンユーザー)のセット。 | Workload ID を含むプリンシパル セット | 連携 |
次のポリシータイプは、Workload Identity プール内の一連のプリンシパルをサポートしています。
|
| Google Kubernetes Engine Pod のセット | GKE で実行され、GKE を介して連携されるワークロード(またはマシンユーザー)。 | 1 つ以上のフェデレーション ワークロード ID を含むことができるプリンシパル セット | 連携 |
次のポリシータイプは GKE Pod をサポートしています。
次のポリシータイプは GKE Pod をサポートしていません。
|
| Resource Manager プリンシパル セット | プロジェクト、フォルダ、組織などの Google Cloud リソースに関連付けられた一連のユーザー(人間またはマシン)。 |
次のプリンシパル タイプを含むことができるプリンシパル セット。
|
両方 |
次のポリシータイプは、Resource Manager プリンシパル セットをサポートしています。
次のポリシータイプは、Resource Manager プリンシパル セットをサポートしていません。
|
以降のセクションでは、これらの主なタイプについて詳しく説明します。
Google アカウント
Google アカウントは、Google で作成したアカウントを使用して Google Cloud を操作するデベロッパー、管理者、または他のユーザーを表します。Google アカウント(管理対象ユーザー アカウント)に関連付けられているメールアドレスは、プリンシパルとして使用できます。これには、gmail.com メールアドレスや他ドメインのメールアドレスが含まれます。
次の例は、さまざまなタイプのポリシーで Google アカウントを識別する方法を示しています。
- 許可ポリシー:
user:alex@example.com - 拒否ポリシー:
principal://goog/subject/alex@example.com
プリンシパル ID の形式の詳細については、プリンシパル ID をご覧ください。
許可ポリシーと拒否ポリシーでは、Google アカウントまたは管理対象ユーザー アカウントに関連付けられているメール エイリアスは、自動的にメインのメールアドレスに置き換えられます。つまり、メール エイリアスへのアクセス権を付与すると、ポリシーにはユーザーのメインのメールアドレスが表示されます。
Google アカウントの設定の詳細については、Cloud Identity アカウントまたは Google Workspace アカウントをご覧ください。
サービス アカウント
サービス アカウントは、個々のエンドユーザーではなく、アプリケーションまたはコンピューティング ワークロードのアカウントです。サービス アカウントは、ユーザー管理のサービス アカウントと Google 管理のサービス アカウント(サービス エージェント)に分類できます。
Google Cloudにホストされているコードを実行する場合は、アプリケーションの ID として使用するサービス アカウントを指定します。アプリケーションのさまざまな論理コンポーネントを表すために必要な数のユーザー管理サービス アカウントを作成できます。
一部の Google Cloud サービスは、ユーザーに代わって処理を行うためにリソースにアクセスする必要があります。Google は、このニーズを満たすためにサービス エージェントを作成して管理します。
サービス アカウントとサービス エージェントは、次の方法で参照できます。
- 単一のサービス アカウント
- プロジェクト内のすべてのサービス アカウント
- プロジェクトに関連付けられているすべてのサービス エージェント。
- フォルダ内のすべてのプロジェクトのすべてのサービス アカウント
- フォルダとその子孫に関連付けられているすべてのサービス エージェント
- 組織内のすべてのプロジェクトのすべてのサービス アカウント
- 組織とその子孫に関連付けられているすべてのサービス エージェント
次の例は、さまざまなタイプのポリシーで個々のサービス アカウントを識別する方法を示しています。
- 許可ポリシーのサービス アカウント:
serviceAccount:my-service-account@my-project.iam.gserviceaccount.com - 拒否ポリシーのサービス アカウント:
principal://iam.googleapis.com/projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
次の例は、さまざまなタイプのポリシーでプロジェクト、フォルダ、組織のすべてのサービス アカウントを特定する方法を示しています。
- 許可ポリシー内のプロジェクトのすべてのサービス アカウント:
principalSet://cloudresourcemanager.googleapis.com/projects/123456789012/type/ServiceAccount - 拒否ポリシーのフォルダに関連付けられているすべてのサービス エージェント:
principalSet://cloudresourcemanager.googleapis.com/folders/123456789012/type/ServiceAgent
プリンシパル ID の形式の詳細については、プリンシパル ID をご覧ください。
サービス アカウントの詳細については、次のページをご覧ください。
Google グループ
Google グループは、Google アカウントの名前付きコレクションです。Google グループには、グループ固有のメールアドレスが関連付けられています。Google グループのホームページで [情報] をクリックすると、Google グループに関連付けられているメールアドレスを確認できます。Google グループの詳細については、Google グループのホームページをご覧ください。
Google グループを使用すると、プリンシパルの集合に対してアクセス制御を簡単に適用できます。個々のプリンシパルに対してアクセス制御を付与または変更する代わりに、グループ全体に対して一括でこれらの操作を行えます。許可ポリシーを更新してプリンシパルを追加または削除するのではなく、Google グループにプリンシパルを追加または削除することもできます。
Google グループにはログイン認証情報がありません。Google グループでは、リソースへのアクセスをリクエストする ID を設定することはできません。
次の例は、さまざまなタイプのポリシーで Google グループを識別する方法を示しています。
- 許可ポリシー:
group:my-group@example.com - 拒否ポリシー:
principalSet://goog/group/my-group@example.com
プリンシパル ID の形式の詳細については、プリンシパル ID をご覧ください。
グループを使用したアクセス制御の詳細については、Google グループの使用に関するベスト プラクティスをご覧ください。
ドメイン
ドメインは、Google Workspace アカウントまたは Cloud Identity ドメインとして存在できます。どちらも、そこに含まれるすべての Google アカウントの仮想グループを表すため、基本的に同じです。唯一の違いは、Cloud Identity ドメイン ユーザーは Google Workspace のアプリケーションと機能にアクセスできないことです。
Google Workspace アカウントと Cloud Identity ドメインは、example.com などの組織のインターネット ドメイン名に関連付けられています。
新しいユーザーに Google アカウント(username@example.com など)を作成すると、その Google アカウントが Google Workspace アカウントまたは Cloud Identity ドメインの仮想グループに追加されます。
Google グループと同様に、ドメインを使用して ID を確立することはできませんが、ドメインを使用すると権限管理が容易になります。
次の例は、さまざまなタイプのポリシーでドメインを識別する方法を示しています。
- 許可ポリシー:
domain:example.com - 拒否ポリシー:
principalSet://goog/cloudIdentityCustomerId/C01Abc35 - プリンシパル アクセス境界ポリシー:
//iam.googleapis.com/locations/global/workspace/C01Abc35
プリンシパル ID の形式の詳細については、プリンシパル ID をご覧ください。
Cloud Identity の詳細については、Cloud Identity についてをご覧ください。
許可ポリシーと拒否ポリシーでは、セカンダリ ドメインは自動的にプライマリ ドメインに置き換えられます。つまり、セカンダリ ドメインへのアクセス権を付与すると、ポリシーにはプライマリ ドメインが表示されます。
allAuthenticatedUsers
allAuthenticatedUsers は、すべてのサービス アカウント、および Google アカウントで認証されたユーザー全員を表す特殊な識別子です。この ID には、個人用 Gmail アカウントなど、Google Workspace アカウントまたは Cloud Identity のドメインに接続していないアカウントも含まれます。認証されていないユーザー(匿名の訪問者など)は含まれません。
このプリンシパル タイプには、外部 ID プロバイダ(IdP)によって管理されるフェデレーション ID は含まれません。Workforce Identity 連携または Workload Identity 連携を使用する場合は、allAuthenticatedUsers を使用しないでください。代わりに、次のいずれかを使用します。
- すべての IdP のユーザーを含めるには、
allUsersを使用します。 - 特定の外部 IdP のユーザーを含めるには、Workforce Identity プール内のすべての ID または Workload Identity プール内のすべての ID の識別子を使用します。
このプリンシパル タイプは、一部のリソースタイプでサポートされていません。
allUsers
allUsers は、認証されたユーザーと認証されていないユーザーの両方を含めて、インターネット上のユーザーを表す特殊な識別子です。
このプリンシパル タイプは、一部のリソースタイプでサポートされていません。
次の例は、さまざまなタイプのポリシーで allUsers 識別子がどのように表示されるかを示しています。
- サポートされているリソースタイプの許可ポリシー:
allUsers - 拒否ポリシー:
principalSet://goog/public:all
プリンシパル ID の形式の詳細については、プリンシパル ID をご覧ください。
Workforce Identity プール内のフェデレーション ID
Workforce Identity プールは、外部 IdP で管理され、Workforce Identity 連携を使用して連携されたユーザー ID のセットです。これらのプール内のプリンシパルは、次の方法で参照できます。
- Workforce Identity プール内の単一の ID
- 指定されたグループ内のすべての Workforce ID
- 特定の属性値を持つすべての Workforce ID
- Workforce Identity プール内のすべての ID
次の例は、さまざまなタイプのポリシーで連携されたワークフォース ID プールを識別する方法を示しています。
- 許可ポリシー内の単一の ID:
principal://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/subject/raha@altostrat.com - 拒否ポリシーの ID グループ:
principalSet://iam.googleapis.com/locations/global/workforcePools/altostrat-contractors/group/administrators-group@altostrat.com - プリンシパル アクセス境界ポリシーの Workforce Identity プール:
//iam.googleapis.com/locations/global/workforcePools/example-workforce-pool
プリンシパル ID の形式の詳細については、プリンシパル ID をご覧ください。
Workload Identity プール内のフェデレーション ID
Workload Identity プールは、外部 IdP によって管理され、Workload Identity 連携を使用して連携されるワークロード ID のセットです。これらのプール内のプリンシパルは、次の方法で参照できます。
- Workload Identity プール内の単一の ID
- 指定されたグループ内のすべての Workload ID
- 特定の属性値を持つすべての Workload ID
- Workload Identity プール内のすべての ID
次の例は、さまざまなタイプのポリシーで連携ワークロード ID プールを識別する方法を示しています。
- 許可ポリシー内の単一の ID:
principal://iam.googleapis.com/projects/123456789012/locations/global/workloadIdentityPools/altostrat-contractors/subject/raha@altostrat.com - 拒否ポリシーの ID グループ:
principalSet://iam.googleapis.com/projects/123456789012/locations/global/workloadIdentityPools/altostrat-contractors/group/administrators-group@altostrat.com - プリンシパル アクセス境界ポリシーの Workload Identity プール:
//iam.googleapis.com/projects/123456789012/locations/global/workloadIdentityPools/example-workload-pool
プリンシパル ID の形式の詳細については、プリンシパル ID をご覧ください。
GKE Pod
GKE で実行されているワークロードは、Workload Identity Federation for GKE を使用して Google Cloud サービスにアクセスします。GKE Pod のプリンシパル ID の詳細については、IAM ポリシーで Kubernetes リソースを参照するをご覧ください。
次の例は、許可ポリシーで特定のクラスタ内のすべての GKE Pod を識別する方法を示しています。
principalSet://iam.googleapis.com/projects/123456789012/locations/global/workloadIdentityPools/123456789012.svc.id.goog/kubernetes.cluster/https://container.googleapis.com/v1/projects/123456789012/locations/global/clusters/example-gke-cluster
プリンシパル ID の形式の詳細については、プリンシパル ID をご覧ください。
Resource Manager プリンシパル セット
各 Resource Manager リソース(プロジェクト、フォルダ、組織)は、一連のプリンシパルに関連付けられています。プリンシパル アクセス境界ポリシー バインディングを作成するときに、Resource Manager リソースのプリンシパル セットを使用して、そのリソースに関連付けられているすべてのプリンシパルを参照できます。
Resource Manager リソースのプリンシパル セットには、次のプリンシパルが含まれます。
- プロジェクト プリンシパル セット: 指定したプロジェクト内のすべてのサービス アカウントと Workload Identity プール。
- フォルダ プリンシパル セット: 指定したフォルダ内のすべてのプロジェクトのすべてのサービス アカウントと Workload Identity プール。
組織のプリンシパル セット: 次の ID が含まれます。
- Google Workspace のお客様 ID に関連付けられているすべてのドメイン内のすべての ID
- 組織内のすべての Workforce Identity プール
- 組織内の任意のプロジェクト内のすべてのサービス アカウントと Workload Identity プール
次の例は、プリンシパル アクセス境界ポリシーでプロジェクトのプリンシパル セットを識別する方法を示しています。
//cloudresourcemanager.googleapis.com/projects/example-project
プリンシパル ID の形式の詳細については、プリンシパル ID をご覧ください。
次のステップ
- IAM がサポートするポリシータイプについて学習する
- Resource Manager のプロジェクト、フォルダ、または組織に対するプリンシパルにロールを付与する