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 管理 |
次のポリシータイプは、サービス アカウントのセットをサポートしています。
|
| サービス エージェントのセット | プロジェクト、フォルダ、組織に関連付けられているすべての Google 管理のサービス アカウント(サービス エージェント)。 | サービス エージェントを含むプリンシパル セット。 | 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 をサポートしていません。
|
以降のセクションでは、これらの主なタイプについて詳しく説明します。
サービス アカウント
サービス アカウントは、個々のエンドユーザーではなく、アプリケーションまたはコンピューティング ワークロードのアカウントです。サービス アカウントは、ユーザー管理のサービス アカウントと Google 管理のサービス アカウント(サービス エージェント)に分類できます。
Google Cloudにホストされているコードを実行する場合は、アプリケーションの ID として使用するサービス アカウントを指定します。必要な数のユーザー管理のサービス アカウントを作成して、アプリケーションのさまざまな論理コンポーネントを表すことができます。
一部の Google Cloud サービスは、ユーザーに代わって処理を行うためにリソースにアクセスする必要があります。このニーズに応えるために、Google はサービス エージェントを作成して管理します。
サービス アカウントとサービス エージェントは、次の方法で参照できます。
- 単一のサービス アカウント
- プロジェクト内のすべてのサービス アカウント
- プロジェクトに関連付けられているすべてのサービス エージェント。
- フォルダ内のすべてのプロジェクトのすべてのサービス アカウント
- フォルダとその子孫に関連付けられているすべてのサービス エージェント
- 組織内のすべてのプロジェクトのすべてのサービス アカウント
- 組織とその子孫に関連付けられているすべてのサービス エージェント
次の例は、さまざまなタイプのポリシーで個々のサービス アカウントを識別する方法を示しています。
- 許可ポリシーのサービス アカウント:
serviceAccount:my-service-account@my-project. - 拒否ポリシーのサービス アカウント:
principal://iam.googleapis.com/projects/-/serviceAccounts/my-service-account@my-project.
次の例は、さまざまなタイプのポリシーでプロジェクト、フォルダ、組織のすべてのサービス アカウントを特定する方法を示しています。
- 許可ポリシー内のプロジェクトのすべてのサービス アカウント:
principalSet://cloudresourcemanager.googleapis.com/projects/123456789012/type/ServiceAccount - 拒否ポリシーのフォルダに関連付けられているすべてのサービス エージェント:
principalSet://cloudresourcemanager.googleapis.com/folders/123456789012/type/ServiceAgent
プリンシパル ID の形式の詳細については、プリンシパル ID をご覧ください。
サービス アカウントの詳細については、次のページをご覧ください。
allAuthenticatedUsers
allAuthenticatedUsers は、すべてのサービス アカウントを表す特殊な ID です。
このプリンシパル タイプには、外部 ID プロバイダ(IdP)によって管理されるフェデレーション ID は含まれません。フェデレーション ID を含めるには、次のいずれかを使用します。
- すべての 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
次の例は、さまざまなタイプのポリシーで連携された Workforce Identity プールを識別する方法を示しています。
- 許可ポリシーの単一の 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
プリンシパル ID の形式の詳細については、プリンシパル ID をご覧ください。
Workload Identity プール内の連携 ID
Workload Identity プールは、外部 IdP によって管理され、Workload Identity 連携を使用して連携されるワークロード ID のセットです。これらのプール内のプリンシパルは、次の方法で参照できます。
- Workload Identity プール内の単一の ID
- 指定されたグループ内のすべてのワークロード ID
- 特定の属性値を持つすべてのワークロード ID
- Workload Identity プール内のすべての ID
次の例は、さまざまなタイプのポリシーで連携 Workload Identity プールを識別する方法を示しています。
- 許可ポリシーの単一の 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
プリンシパル ID の形式の詳細については、プリンシパル ID をご覧ください。
次のステップ
- IAM がサポートするポリシータイプについて学習する
- Resource Manager のプロジェクト、フォルダ、または組織に対するプリンシパルにロールを付与する