プリンシパル アクセス境界(PAB)ポリシーを使用すると、一連のプリンシパルがアクセスできるリソースを制限できます。このページでは、プリンシパル アクセス境界ポリシーを作成して適用する方法について説明します。
始める前に
認証を設定します。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
プリンシパル アクセス境界ポリシーの概要を確認します。
プリンシパル アクセス境界ポリシーの作成に必要なロール
プリンシパル アクセス境界ポリシーの作成に必要な権限を取得するため、組織に対するプリンシパル アクセス境界管理者(
roles/iam.principalAccessBoundaryAdmin
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。この事前定義ロールには、プリンシパル アクセス境界ポリシーの作成に必要な
iam.principalaccessboundarypolicies.create
権限が含まれています。カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。
プリンシパル アクセス境界ポリシーの適用に必要なロール
プリンシパル アクセス境界ポリシーを適用するために必要な権限は、ポリシーを適用するプリンシパル セットによって異なります。
プリンシパル アクセス境界ポリシーを適用するために必要な権限を取得するには、次の IAM ロールを付与するように管理者に依頼してください。
-
組織に対するプリンシパル アクセス境界ユーザー(
roles/iam.principalAccessBoundaryUser
) -
プリンシパル アクセス境界ポリシーを Workforce Identity 連携プールに適用する: ターゲットの Workforce Identity 連携プールに対する IAM Workforce プール管理者(
roles/iam.workforcePoolAdmin
) -
Workload Identity 連携プールにプリンシパル アクセス境界ポリシーを適用する: ターゲットの Workforce Identity 連携プールを所有するプロジェクトに対する IAM Workload Identity プール管理者(
roles/iam.workloadIdentityPoolAdmin
) -
Google Workspace ドメインにプリンシパル アクセス境界ポリシーを適用する: 組織に対する Workspace プール IAM 管理者(
roles/iam.workspacePoolAdmin
) -
プリンシパル アクセス境界ポリシーをプロジェクトのプリンシパル セットに適用する: プロジェクトに対するプロジェクト IAM 管理者(
roles/resourcemanager.projectIamAdmin
) -
プリンシパル アクセス境界ポリシーをフォルダのプリンシパル セットに適用する: フォルダに対するフォルダ IAM 管理者(
roles/resourcemanager.folderIamAdmin
) -
プリンシパル アクセス境界ポリシーを組織のプリンシパル セットに適用する: 組織に対する組織管理者(
roles/resourcemanager.organizationAdmin
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、プリンシパル アクセス境界ポリシーの適用に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
プリンシパル アクセス境界ポリシーを適用するには、次の権限が必要です。
- 組織に対する
iam.principalaccessboundarypolicies.bind
-
プリンシパル アクセス境界ポリシーを Workforce Identity 連携プールに適用する: ターゲットの Workforce Identity 連携プールに対する
iam.workforcePools.createPolicyBinding
-
プリンシパル アクセス境界ポリシーを Workload Identity 連携プールに適用する: ターゲットの Workforce Identity 連携プールを所有するプロジェクトに対する
iam.workloadIdentityPools.createPolicyBinding
-
プリンシパル アクセス境界ポリシーを Google Workspace ドメインに適用する: 組織に対する
iam.workspacePools.createPolicyBinding
-
プロジェクトのプリンシパル セットにプリンシパル アクセス境界ポリシーを適用する: プロジェクトに対する
resourcemanager.projects.createPolicyBinding
-
プリンシパル アクセス境界ポリシーをフォルダのプリンシパル セットに適用する: フォルダに対する
resourcemanager.folders.createPolicyBinding
-
組織のプリンシパル セットにプリンシパル アクセス境界ポリシーを適用する: 組織に対する
resourcemanager.organizations.createPolicyBinding
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
プリンシパル アクセス境界ポリシーを作成する
プリンシパル アクセス境界ポリシーは、Google Cloud コンソール、gcloud CLI、IAM REST API を使用して作成できます。
コンソール
Google Cloud コンソールで、プリンシパル アクセス境界ポリシーのページに移動します。
プリンシパル アクセス境界ポリシーを作成する組織を選択します。
[
ポリシーを作成] をクリックします。ポリシーにプリンシパル アクセス境界ルールを追加します。
- [ 境界ルールを追加] をクリックします。
- [説明] フィールドに、プリンシパル アクセス境界ポリシールールの説明を追加します。説明は 256 文字以内で指定できます。
[リソース] セクションに、プリンシパルがアクセスできるようにする Resource Manager リソース(プロジェクト、フォルダ、組織)をすべて入力します。このポリシーの対象となるプリンシパルは、これらのリソースにアクセスできます。
各プリンシパル アクセス境界ポリシーは、ポリシー内のすべてのルールで最大 500 個のリソースを参照できます。
[完了] をクリックします。
ポリシールールを追加するには、上記の手順を繰り返します。各プリンシパル アクセス境界ポリシーには、最大 500 個のルールを含めることができます。
[ポリシー名] セクションに、ポリシーの名前を入力します。名前は 63 文字以下にしてください。
[適用バージョン] リストで、ポリシーの適用バージョンを選択します。プリンシパル アクセス境界ポリシーのバージョンにより、IAM がプリンシパル アクセス境界ポリシーを適用する権限が決まります。
適用バージョンの詳細については、プリンシパル アクセス境界の適用バージョンをご覧ください。
[作成] をクリックします。
gcloud
gcloud beta iam principal-access-boundary-policies create
コマンドは、プリンシパル アクセス境界ポリシーを作成します。後述のコマンドデータを使用する前に、次のように置き換えます。
ORG_ID
: プリンシパル アクセス境界ポリシーを作成する組織の ID。組織 ID は数値で指定します(例:123456789012
)。-
PAB_POLICY_ID
: プリンシパル アクセス境界ポリシーの一意の ID(例:example-policy
)。: DISPLAY_NAME
: 省略可。人が読める形式のプリンシパル アクセス境界ポリシーの説明(例:Example policy
)。表示名は 63 文字以内にしてください。-
FILE_PATH
: プリンシパル アクセス境界ポリシールールの詳細を含む JSON ファイルのパス。このファイルの形式は次のとおりです。{ "description": DESCRIPTION, "resources": [ RESOURCES ], "effect": ALLOW }
次の値を置き換えます。
DESCRIPTION
: 省略可。プリンシパル アクセス境界ポリシールールの説明。説明は 256 文字以内で指定できます。-
RESOURCES
: プリンシパルがアクセスできるようにする Resource Manager リソース(プロジェクト、フォルダ、組織)のリスト。このポリシーの対象となるプリンシパルは、これらのリソースにアクセスできます。各プリンシパル アクセス境界ポリシーは、ポリシー内のすべてのルールで最大 500 個のリソースを参照できます。
-
ENFORCEMENT_VERSION
: ポリシーの適用時に IAM が使用するプリンシパル アクセス境界ポリシーのバージョン。適用バージョンにより、IAM がプリンシパル アクセス境界ポリシーを適用する権限が決まります。指定できる値は
1
、latest
です。適用バージョンの詳細については、プリンシパル アクセス境界の適用バージョンをご覧ください。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud beta iam principal-access-boundary-policies create PAB_POLICY_ID \ --organization=ORG_ID --location=global \ --display-name=DISPLAY_NAME --details-rules=FILE_PATH.json \ --details-enforcement-version=ENFORCEMENT_VERSION
Windows(PowerShell)
gcloud beta iam principal-access-boundary-policies create PAB_POLICY_ID ` --organization=ORG_ID --location=global ` --display-name=DISPLAY_NAME --details-rules=FILE_PATH.json ` --details-enforcement-version=ENFORCEMENT_VERSION
Windows(cmd.exe)
gcloud beta iam principal-access-boundary-policies create PAB_POLICY_ID ^ --organization=ORG_ID --location=global ^ --display-name=DISPLAY_NAME --details-rules=FILE_PATH.json ^ --details-enforcement-version=ENFORCEMENT_VERSION
レスポンスには、リクエストを表す長時間実行オペレーションが含まれます。
Create request issued for: [example-policy] Waiting for operation [organizations/123456789012/locations/global/operations/operation-1715373988044-6181fa136df85-3b06a30a-4816d25b] to complete...done. Created principalAccessBoundaryPolicy [example-policy].
REST
principalAccessBoundaryPolicies.create
メソッドは、プリンシパル アクセス境界ポリシーを作成します。リクエストのデータを使用する前に、次のように置き換えます。
ORG_ID
: プリンシパル アクセス境界ポリシーを作成する組織の ID。組織 ID は数値で指定します(例:123456789012
)。-
PAB_POLICY_ID
: プリンシパル アクセス境界ポリシーの一意の ID(例:example-policy
)。 DISPLAY_NAME
: 省略可。人が読める形式のプリンシパル アクセス境界ポリシーの説明(例:Example policy
)。表示名は 63 文字以内にしてください。-
PAB_RULES
: プリンシパル アクセス境界ルールのリスト。影響を受けるプリンシパルがアクセスできるリソースを定義します。1 つのプリンシパル アクセス境界ポリシーには、最大 500 個のルールを含めることができます。各ルールの形式は次のとおりです。{ "description": "DESCRIPTION", "resources": [ RESOURCES ], "effect": ALLOW }
次の値を置き換えます。
DESCRIPTION
: 省略可。プリンシパル アクセス境界ポリシールールの説明。説明は 256 文字以内で指定できます。-
RESOURCES
: プリンシパルがアクセスできるようにする Resource Manager リソース(プロジェクト、フォルダ、組織)のリスト。このポリシーの対象となるプリンシパルは、これらのリソースにアクセスできます。各プリンシパル アクセス境界ポリシーは、ポリシー内のすべてのルールで最大 500 個のリソースを参照できます。
-
ENFORCEMENT_VERSION
: ポリシーの適用時に IAM が使用するプリンシパル アクセス境界ポリシーのバージョン。適用バージョンにより、IAM がプリンシパル アクセス境界ポリシーを適用する権限が決まります。指定できる値は
1
、latest
です。適用バージョンの詳細については、プリンシパル アクセス境界の適用バージョンをご覧ください。
HTTP メソッドと URL:
POST https://iam.googleapis.com/v3beta/organizations/ORG_ID/locations/global?principalAccessBoundaryPolicyId=PAB_POLICY_ID
リクエストの本文(JSON):
{ "displayName": DISPLAY_NAME, "details": { "rules": [ PAB_RULES ], "effect": ALLOW } ], "enforcementVersion": "ENFORCEMENT_VERSION" }
リクエストを送信するには、次のいずれかのオプションを開きます。
レスポンスには、リクエストを表す長時間実行オペレーションが含まれます。
{ "name": "organizations/123456789012/locations/global/operations/operation-1715373120647-6181f6d8371d2-83309b71-2b8a7532", "metadata": { "@type": "type.googleapis.com/google.iam.v3beta.OperationMetadata", "createTime": "2024-05-10T20:32:00.898809495Z", "target": "organizations/123456789012/locations/global/policyBindings/example-policy", "verb": "create", "requestedCancellation": false, "apiVersion": "v3beta" }, "done": false }
プリンシパル アクセス境界ポリシーをプリンシパル セットに適用する
プリンシパル アクセス境界ポリシーをプリンシパル セットに適用するには、ポリシーをプリンシパル セットにバインドするポリシー バインディング リソースを作成します。ポリシー バインディングを作成すると、バインディング内のプリンシパル アクセス境界ポリシーがバインディング内のプリンシパルに適用されます。
ポリシー バインディングは、Google Cloud コンソール、gcloud CLI、IAM REST API を使用して作成できます。
コンソール
Google Cloud コンソールで、プリンシパル アクセス境界ポリシーのページに移動します。
バインディングを作成するプリンシパル アクセス境界ポリシーを所有する組織を選択します。
バインディングを作成するプリンシパル アクセス境界ポリシーのポリシー ID をクリックします。
[バインディング] タブをクリックし、
[バインディングを追加] をクリックします。バインドの詳細を入力します。
- 省略可: [表示名] フィールドに、バインディングの表示名を入力します。表示名は 63 文字以内にしてください。
- [バインディング ID] フィールドに、バインディングの一意の名前(
example-binding
など)を入力します。 [ターゲット プリンシパル セット] セクションで、ポリシーをバインドするプリンシパル セットのタイプと ID を入力します。ポリシー バインディングの作成後にこの値を変更することはできません。
各プリンシパル セットに含まれるプリンシパルの詳細については、サポートされているプリンシパル セットをご覧ください。
省略可: プリンシパル アクセス境界ポリシーを適用するプリンシパル セット内のプリンシパルを指定するには、バインディングに条件を追加します。
- [ 条件を追加] をクリックします。
- [タイトル] フィールドに、条件の目的の概要を入力します。
- 省略可: [説明] フィールドに、条件の詳細な説明を入力します。
- [式] フィールドに、Common Expression Language(CEL)構文を使用する条件式を入力します。式は
principal.type
属性またはprincipal.subject
属性を参照する必要があります。他の属性はサポートされていません。 - [保存] をクリックします。
バインディングを作成するには、[追加] をクリックします。
gcloud
gcloud beta iam policy-bindings create
コマンドは、ポリシー バインディングを作成します。後述のコマンドデータを使用する前に、次のように置き換えます。
-
BINDING_ID
: ポリシー バインディングの一意の名前(例:example-binding
)。 -
RESOURCE_TYPE
: ポリシー バインディングの子である Resource Manager リソースのタイプ(プロジェクト、フォルダ、組織)。値project
、folder
、またはorganization
を使用します。リソースタイプは、ポリシー バインディングで設定されたプリンシパルによって異なります。使用するリソースタイプを確認するには、サポートされているプリンシパル タイプをご覧ください。
RESOURCE_ID
: ポリシー バインディングが子であるプロジェクト、フォルダ、または組織の ID。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。-
ORG_ID
: プリンシパル セットにバインドするプリンシパル アクセス境界ポリシーを所有する組織の ID。組織 ID は数値で指定します(例:123456789012
)。 -
PAB_POLICY_ID
: プリンシパル セットにバインドするプリンシパル アクセス境界ポリシーの ID(例:example-pab-policy
)。ポリシー バインディングの作成後にこの値を変更することはできません。 -
PRINCIPAL_SET
: ポリシーをバインドするプリンシパル セット。有効なプリンシパル タイプの一覧については、サポートされているプリンシパル セットをご覧ください。ポリシー バインディングの作成後にこの値を変更することはできません。 DISPLAY_NAME
: 省略可。人が読める形式のバインディングの説明(例:Example binding
)。表示名は 63 文字以内にしてください。-
CONDITION_DETAILS
: 省略可。プリンシパル アクセス境界ポリシーが適用されるプリンシパル セット内のプリンシパルを指定する条件式。次のフィールドを含めます。-
expression
: Common Expression Language(CEL)構文を使用する条件式。式はprincipal.type
属性またはprincipal.subject
属性を参照する必要があります。他の属性はサポートされていません。式には最大 10 個の論理演算子(
&&
、||
、!
)を含めることができ、最大 250 文字の長さにすることができます。 -
title
: 省略可。条件の目的の概要。 -
description
: 省略可。条件の詳しい説明。
-
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud beta iam policy-bindings create BINDING_ID \ --RESOURCE_TYPE=RESOURCE_ID --location=global \ --policy="organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID" \ --target-principal-set=PRINCIPAL_SET_ID \ --display-name=DISPLAY_NAME \ CONDITION_DETAILS
Windows(PowerShell)
gcloud beta iam policy-bindings create BINDING_ID ` --RESOURCE_TYPE=RESOURCE_ID --location=global ` --policy="organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID" ` --target-principal-set=PRINCIPAL_SET_ID ` --display-name=DISPLAY_NAME ` CONDITION_DETAILS
Windows(cmd.exe)
gcloud beta iam policy-bindings create BINDING_ID ^ --RESOURCE_TYPE=RESOURCE_ID --location=global ^ --policy="organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID" ^ --target-principal-set=PRINCIPAL_SET_ID ^ --display-name=DISPLAY_NAME ^ CONDITION_DETAILS
レスポンスには、リクエストを表す長時間実行オペレーションが含まれます。
Create request issued for: [example-binding] Waiting for operation [organizations/123456789012/locations/global/operations/operation-1715374545618-6181fc272c6f9-55ff07f4-97d0ac76] to complete...done. Created policyBinding [example-binding].
REST
policyBindings.create
メソッドはポリシー バインディングを作成します。リクエストのデータを使用する前に、次のように置き換えます。
-
RESOURCE_TYPE
: ポリシー バインディングの子である Resource Manager リソースのタイプ(プロジェクト、フォルダ、組織)。値projects
、folders
、またはorganizations
を使用します。リソースタイプは、ポリシー バインディングで設定されたプリンシパルによって異なります。使用するリソースタイプを確認するには、サポートされているプリンシパル タイプをご覧ください。
RESOURCE_ID
: ポリシー バインディングが子であるプロジェクト、フォルダ、または組織の ID。プロジェクト ID は英数字からなる文字列です(例:my-project
)。フォルダ ID と組織 ID は数値です(例:123456789012
)。-
BINDING_ID
: ポリシー バインディングの一意の名前(例:example-binding
)。 DISPLAY_NAME
: 省略可。人が読める形式のバインディングの説明(例:Example binding
)。表示名は 63 文字以内にしてください。-
PRINCIPAL_SET
: ポリシーをバインドするプリンシパル セット。有効なプリンシパル タイプの一覧については、サポートされているプリンシパル セットをご覧ください。ポリシー バインディングの作成後にこの値を変更することはできません。 -
ORG_ID
: プリンシパル セットにバインドするプリンシパル アクセス境界ポリシーを所有する組織の ID。組織 ID は数値で指定します(例:123456789012
)。 -
PAB_POLICY_ID
: プリンシパル セットにバインドするプリンシパル アクセス境界ポリシーの ID(例:example-pab-policy
)。ポリシー バインディングの作成後にこの値を変更することはできません。 -
CONDITION_DETAILS
: 省略可。プリンシパル アクセス境界ポリシーが適用されるプリンシパル セット内のプリンシパルを指定する条件式。次のフィールドを含めます。-
expression
: Common Expression Language(CEL)構文を使用する条件式。式はprincipal.type
属性またはprincipal.subject
属性を参照する必要があります。他の属性はサポートされていません。式には最大 10 個の論理演算子(
&&
、||
、!
)を含めることができ、最大 250 文字の長さにすることができます。 -
title
: 省略可。条件の目的の概要。 -
description
: 省略可。条件の詳しい説明。
-
HTTP メソッドと URL:
POST https://iam.googleapis.com/v3beta/RESOURCE_TYPE/RESOURCE_ID/locations/global/policyBindings?policyBindingId=BINDING_ID
リクエストの本文(JSON):
{ "displayName": DISPLAY_NAME, "target": { "principalSet": PRINCIPAL_SET }, "policyKind": "PRINCIPAL_ACCESS_BOUNDARY", "policy": "organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID", "condition": { CONDITION_DETAILS } }
リクエストを送信するには、次のいずれかのオプションを開きます。
レスポンスには、リクエストを表す長時間実行オペレーションが含まれます。
{ "name": "organizations/123456789012/locations/global/operations/operation-1715373120647-6181f6d8371d2-83309b71-2b8a7532", "metadata": { "@type": "type.googleapis.com/google.iam.v3beta.OperationMetadata", "createTime": "2024-05-10T20:32:00.898809495Z", "target": "organizations/123456789012/locations/global/policyBindings/example-binding", "verb": "create", "requestedCancellation": false, "apiVersion": "v3beta" }, "done": false }
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-22 UTC。