このページでは、プリンシパルが特定の Identity and Access Management(IAM)権限を使用できないようにする方法で、プリンシパルのアクセスを拒否する方法について説明します。
IAM では、拒否ポリシーを使用してアクセスを拒否します。各拒否ポリシーは、Google Cloud の組織、フォルダ、プロジェクトに関連付けられます。拒否ポリシーには拒否ルールが含まれています。このルールには、プリンシパルと、そのプリンシパルが使用できない権限のリストが記述されています。
拒否ポリシーは、IAM ポリシーとも呼ばれる許可ポリシーとは別のものです。許可ポリシーは、プリンシパルに IAM ロールを付与することで、リソースへのアクセスを許可します。
拒否ポリシーは、Google Cloud コンソール、Google Cloud CLI、または IAM v2
REST API を使用して管理できます。
始める前に
Enable the IAM API.
認証を設定する。
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.
Terraform
ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
詳細については、Google Cloud の認証に関するドキュメントの ローカル開発環境の ADC を設定するをご覧ください。
Go
ローカル開発環境でこのページの Go サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
詳細については、Google Cloud の認証に関するドキュメントの ローカル開発環境の ADC を設定するをご覧ください。
Java
ローカル開発環境でこのページの Java サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
詳細については、Google Cloud の認証に関するドキュメントの ローカル開発環境の ADC を設定するをご覧ください。
Node.js
ローカル開発環境でこのページの Node.js サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
詳細については、Google Cloud の認証に関するドキュメントの ローカル開発環境の ADC を設定するをご覧ください。
Python
ローカル開発環境でこのページの Python サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
詳細については、Google Cloud の認証に関するドキュメントの ローカル開発環境の ADC を設定するをご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
拒否ポリシーの概要を確認する。
必要なロール
拒否ポリシーの管理に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、拒否ポリシーの管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
拒否ポリシーを管理するには、次の権限が必要です。
-
拒否ポリシーを表示する:
-
iam.denypolicies.get
-
iam.denypolicies.list
-
-
拒否ポリシーを作成、更新、削除する:
-
iam.denypolicies.create
-
iam.denypolicies.delete
-
iam.denypolicies.get
-
iam.denypolicies.update
-
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
拒否する権限を特定する
拒否ポリシーを作成する前に、拒否する権限と、これらの権限を拒否するプリンシパルを決定する必要があります。
拒否できるのは一部の権限です。拒否できる権限のリストについては、拒否ポリシーでサポートされる権限をご覧ください。
権限グループを使用して権限のセットを拒否できる場合もあります。詳しくは、権限グループをご覧ください。
拒否ポリシーは、
v2
REST API で管理します。この REST API では、権限名に特別な形式が必要です。たとえば、IAM カスタムロールを作成する権限名は次のように指定します。v1
API:iam.roles.create
v2
API:iam.googleapis.com/roles.create
拒否ポリシーを作成する
組織、フォルダ、プロジェクトに拒否ポリシーを追加できます。各リソースには、最大 500 個の拒否ポリシーを設定できます。
拒否ポリシーには、次の項目を指定する拒否ルールが含まれています。
- 拒否する権限。
- これらの権限を拒否するプリンシパル。
省略可: 権限拒否が免除されるプリンシパル。
たとえば、グループに対する権限を拒否し、そのグループに属する特定のユーザーを除外できます。
省略可: プリンシパルが権限を使用できないタイミングを指定する条件式。拒否ポリシーの条件式ではリソースタグの関数のみを使用できます。他の関数と演算子はサポートされていません。
各リソースには、接続されている拒否ポリシー全体で最大 500 個の拒否ルールを設定できます。
拒否ポリシーはリソース階層から継承されます。たとえば、組織レベルで権限を拒否すると、その権限は組織内のフォルダとプロジェクト、および各プロジェクト内のサービス固有のリソースに対しても拒否されます。
拒否ポリシーは許可ポリシーをオーバーライドします。特定の権限を含むロールがプリンシパルに付与されていても、拒否ポリシーでプリンシパルがその権限を使用できないと示されている場合、プリンシパルは権限を使用できません。
コンソール
Google Cloud コンソールで [IAM] ページの [拒否] タブに移動します。
プロジェクト、フォルダ、または組織を選択します。
[
拒否ポリシーを作成] をクリックします。[ポリシー名] セクションで、次のいずれかの方法でポリシー ID を定義します。
- [表示名] フィールドにポリシーの表示名を入力します。このフィールドに入力すると、[ID] フィールドが自動的に入力されます。ポリシーの ID を変更するには、[ID] フィールドのテキストを更新します。
- [ID] フィールドにポリシーの ID を入力します。
[拒否ルール] セクションで、ポリシーの拒否ルールを定義します。各拒否ポリシーには、少なくとも 1 つの拒否ルールが必要です。拒否ルールを追加するには、[拒否ルールを追加] をクリックします。
拒否ルールごとに次の操作を行います。
- [拒否されたプリンシパル] フィールドに、指定された権限の使用を禁止するプリンシパルを 1 つ以上追加します。プリンシパルは、ID が
deleted:
で始まるプリンシパルを除き、IAMv2
プリンシパル ID のリストに含まれている任意のプリンシパル タイプにできます。 - 省略可: [例外のプリンシパル] フィールドに、指定された権限を使用できるようにするプリンシパルを追加します。これらのプリンシパルは、[拒否されたプリンシパル] セクションに含まれている場合でも、指定された権限を使用できます。たとえば、このフィールドを使用して、拒否されたグループに属する特定のユーザーを例外にすることができます。
[拒否される権限] セクションで、拒否する権限を追加します。これらの権限は、拒否ポリシーでサポートされている必要があります。
権限グループを使用して権限のセットを拒否できる場合もあります。詳しくは、権限グループをご覧ください。
省略可: 例外の権限を追加します。例外の権限は、拒否される権限のリストに含まれている場合でも、この拒否ルールで拒否されない権限です。たとえば、このフィールドを使用して、権限グループ内の特定の権限を例外にすることができます。
例外の権限を追加するには、[例外の権限]、
[別の権限を追加] の順にクリックし、[権限 1] フィールドに権限を入力します。拒否ポリシーの適用除外とする権限がすべて追加されるまで、権限の追加を続けます。省略可: 拒否条件を追加して、プリンシパルが権限を使用できない条件を指定します。拒否条件を追加するには、
[拒否条件を追加] をクリックして、次のフィールドを定義します。- タイトル: 省略可。条件の目的の概要。
- 説明: 省略可。条件の詳しい説明。
条件式: 条件作成ツールまたは条件エディタを使用して条件式を追加できます。条件作成ツールには、目的の条件タイプ、演算子、その他の式に関する適用可能な詳細を選択するためのインタラクティブなインターフェースが用意されています。条件エディタには、Common Expression Language(CEL)構文を使用して手動で式を入力するためのテキストベースのインターフェースが用意されています。
拒否条件はリソースタグに基づいている必要があります。他の関数や演算子はサポートされていません。
- [拒否されたプリンシパル] フィールドに、指定された権限の使用を禁止するプリンシパルを 1 つ以上追加します。プリンシパルは、ID が
[作成] をクリックします。
gcloud
リソースの拒否ポリシーを作成するには、まず、ポリシーを含む JSON ファイルを作成します。拒否ポリシーの形式は次のとおりです。
{ "displayName": "POLICY_NAME", "rules": [ { "denyRule": DENY_RULE_1 }, { "denyRule": DENY_RULE_2 }, { "denyRule": DENY_RULE_N } ] }
次の値を指定します。
POLICY_NAME
: 拒否ポリシーの表示名。-
DENY_RULE_1
、DENY_RULE_2
、...DENY_RULE_N
: ポリシーの拒否ルール。各拒否ルールには次のフィールドを含めることができます。-
deniedPermissions
: 指定されたプリンシパルが使用できない権限のリスト。これらの権限は、拒否ポリシーでサポートされている必要があります。権限グループを使用して権限のセットを拒否できる場合もあります。詳細については、権限グループをご覧ください。
-
exceptionPermissions
: 指定されたプリンシパルが使用できる権限のリスト。これらの権限がdeniedPermissions
に含まれている場合でも使用できます。たとえば、このフィールドを使用して、権限のグループ内の特定の権限を例外にできます。 -
deniedPrincipals
: 指定された権限を使用できないプリンシパルのリスト。プリンシパル ID にはv2
API 形式を使用します。 -
exceptionPrincipals
: 省略可。対象のプリンシパルがdeniedPrincipals
に含まれていても、指定された権限を使用できるプリンシパルのリスト。たとえば、このフィールドを使用して、拒否されたグループに属する特定のユーザーを例外にすることができます。プリンシパル ID にはv2
API 形式を使用します。 -
denialCondition
: 省略可。プリンシパルが権限を使用できないタイミングを指定する条件式。次のフィールドがあります。-
expression
: Common Expression Language(CEL)構文を使用する条件式。式では、リソースタグの評価に CEL 関数を使用する必要があります。他の関数や演算子はサポートされていません。 -
title
: 省略可。条件の目的の概要。 -
description
: 省略可。条件の詳しい説明。
-
拒否ルールの例については、一般的なユースケースをご覧ください。
-
たとえば、次の拒否ポリシーには、ユーザー
lucian@example.com
に対する 1 つの権限を拒否する拒否ルールが 1 つ含まれています。{ "displayName": "My deny policy.", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] }
次に、
gcloud iam policies create
コマンドを実行します。gcloud iam policies create POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --policy-file=POLICY_FILE
次の値を指定します。
-
POLICY_ID
: 拒否ポリシーの ID。 -
ATTACHMENT_POINT
: 拒否ポリシーが接続しているリソースの ID。この値の形式については、接続ポイントをご覧ください。 -
POLICY_FILE
: 拒否ポリシーを含む JSON ファイルのファイルパス。
デフォルトでは、このコマンドが成功すると、出力は表示されません。詳細なレスポンスを出力するには、コマンドに
--format=json
フラグを追加します。たとえば、次のコマンドは、
policy.json
という名前のファイルを使用して、プロジェクトmy-project
のmy-deny-policy
という拒否ポリシーを作成します。gcloud iam policies create my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --policy-file=policy.json
Terraform
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。詳細については、Terraform プロバイダのリファレンス ドキュメントをご覧ください。
Go
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Go API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Java
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Node.js
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Node.js API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Python
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
REST
policies.createPolicy
メソッドは、リソースに拒否ポリシーを作成します。リクエストのデータを使用する前に、次のように置き換えます。
-
ENCODED_ATTACHMENT_POINT
: 拒否ポリシーが接続しているリソースの URL エンコード ID。この値の形式については、接続ポイントをご覧ください。 POLICY_ID
: 拒否ポリシーの ID。POLICY_NAME
: 拒否ポリシーの表示名。-
DENY_RULE_1
、DENY_RULE_2
、...DENY_RULE_N
: ポリシーの拒否ルール。各拒否ルールには次のフィールドを含めることができます。-
deniedPermissions
: 指定されたプリンシパルが使用できない権限のリスト。これらの権限は、拒否ポリシーでサポートされている必要があります。権限グループを使用して権限のセットを拒否できる場合もあります。詳細については、権限グループをご覧ください。
-
exceptionPermissions
: 指定されたプリンシパルが使用できる権限のリスト。これらの権限がdeniedPermissions
に含まれている場合でも使用できます。たとえば、このフィールドを使用して、権限のグループ内の特定の権限を例外にできます。 -
deniedPrincipals
: 指定された権限を使用できないプリンシパルのリスト。プリンシパル ID にはv2
API 形式を使用します。 -
exceptionPrincipals
: 省略可。対象のプリンシパルがdeniedPrincipals
に含まれていても、指定された権限を使用できるプリンシパルのリスト。たとえば、このフィールドを使用して、拒否されたグループに属する特定のユーザーを例外にすることができます。プリンシパル ID にはv2
API 形式を使用します。 -
denialCondition
: 省略可。プリンシパルが権限を使用できないタイミングを指定する条件式。次のフィールドがあります。-
expression
: Common Expression Language(CEL)構文を使用する条件式。式では、リソースタグの評価に CEL 関数を使用する必要があります。他の関数や演算子はサポートされていません。 -
title
: 省略可。条件の目的の概要。 -
description
: 省略可。条件の詳しい説明。
-
拒否ルールの例については、一般的なユースケースをご覧ください。
-
HTTP メソッドと URL:
POST https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies?policyId=POLICY_ID
リクエストの本文(JSON):
{ "displayName": "POLICY_NAME", "rules": [ { "denyRule": DENY_RULE_1 }, { "denyRule": DENY_RULE_2 }, { "denyRule": DENY_RULE_N } ] }
リクエストを送信するには、次のいずれかのオプションを開きます。
次のような JSON レスポンスが返されます。
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/89cb3e508bf1ff01", "metadata": { "@type": "type.googleapis.com/google.iam.v2.PolicyOperationMetadata", "createTime": "2022-06-28T19:06:12.455151Z" }, "response": { "@type": "type.googleapis.com/google.iam.v2.Policy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-28T19:06:12.455151Z", "updateTime": "2022-06-28T22:26:21.968687Z" "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] } }
レスポンスで長時間実行オペレーションを識別できます。長時間実行オペレーションのステータスで、オペレーションの完了を確認できます。詳細については、このページの長時間実行オペレーションのステータスを確認するをご覧ください。
拒否ポリシーを一覧表示する
1 つのリソースに複数の拒否ポリシーを設定できます。リソースに接続されているすべての拒否ポリシーを一覧表示してから、各拒否ポリシーを表示して、ポリシーの拒否ルールを確認できます。
コンソール
gcloud
リソースの拒否ポリシーを一覧表示するには、
gcloud iam policies list
コマンドを実行します。gcloud iam policies list \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
次の値を指定します。
-
ATTACHMENT_POINT
: 拒否ポリシーが接続しているリソースの ID。この値の形式については、接続ポイントをご覧ください。
たとえば、次のコマンドは、数値 ID が
123456789012
の組織に接続されている拒否ポリシーを一覧表示します。gcloud iam policies list \ --attachment-point=cloudresourcemanager.googleapis.com/organizations/123456789012 \ --kind=denypolicies \ --format=json
Go
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Go API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Java
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Node.js
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Node.js API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Python
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
REST
policies.listPolicies
メソッドは、リソースの拒否ポリシーを一覧表示します。リクエストのデータを使用する前に、次のように置き換えます。
-
ENCODED_ATTACHMENT_POINT
: 拒否ポリシーが接続しているリソースの URL エンコード ID。この値の形式については、接続ポイントをご覧ください。
HTTP メソッドと URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies
リクエストを送信するには、次のいずれかのオプションを開きます。
次のような JSON レスポンスが返されます。
{ "policies": [ { "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "createTime": "2022-06-28T19:06:12.455151Z", "updateTime": "2022-06-28T22:26:21.968687Z" }, { "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy-2", "uid": "8465d710-ea20-0a08-d92c-b2a3ebf766ab", "kind": "DenyPolicy", "displayName": "My second deny policy.", "createTime": "2022-06-05T19:21:53.595455Z", "updateTime": "2022-06-05T19:21:53.595455Z" }, { "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy-3", "uid": "ee9f7c2f-7e8c-b05c-d4e5-e03bfb2954e0", "kind": "DenyPolicy", "displayName": "My third deny policy.", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z" } ] }
拒否ポリシーを表示する
拒否ポリシーを表示して、拒否された権限や、それらの権限を使用できないプリンシパルを含む拒否ルールを確認できます。
コンソール
Google Cloud コンソールで [IAM] ページの [拒否] タブに移動します。
プロジェクト、フォルダ、または組織を選択します。
[ポリシー ID] 列で、表示するポリシーの ID をクリックします。
Google Cloud コンソールに、ポリシー ID、ポリシーの作成日時、拒否ポリシーに含まれる拒否ルールなど、拒否ポリシーの詳細が表示されます。
gcloud
リソースの拒否ポリシーを取得するには、
gcloud iam policies get
コマンドを実行します。gcloud iam policies get POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
次の値を指定します。
-
POLICY_ID
: 拒否ポリシーの ID。 -
ATTACHMENT_POINT
: 拒否ポリシーが接続しているリソースの ID。この値の形式については、接続ポイントをご覧ください。
たとえば、次のコマンドはプロジェクト
my-project
のmy-deny-policy
という名前の拒否ポリシーを取得し、policy.json
というファイルに保存します。gcloud iam policies get my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --format=json \ > ./policy.json
Go
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Go API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Java
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Node.js
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Node.js API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Python
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
REST
policies.get
メソッドは、リソースの拒否ポリシーを取得します。リクエストのデータを使用する前に、次のように置き換えます。
-
ENCODED_ATTACHMENT_POINT
: 拒否ポリシーが接続しているリソースの URL エンコード ID。この値の形式については、接続ポイントをご覧ください。 POLICY_ID
: 拒否ポリシーの ID。
HTTP メソッドと URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID
リクエストを送信するには、次のいずれかのオプションを開きます。
次のような JSON レスポンスが返されます。
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] }
拒否ポリシーを更新する
拒否ポリシーを作成した後、そのポリシーに含まれる拒否ルールと表示名を更新できます。
拒否ポリシーを更新するには、Google Cloud コンソールを使用するか、次のいずれかのプログラマティック メソッドを使用します。
- gcloud CLI
- REST API
- IAM クライアント ライブラリ
Google Cloud コンソールを使用して拒否ポリシーを更新する
Google Cloud コンソールで [IAM] ページの [拒否] タブに移動します。
プロジェクト、フォルダ、または組織を選択します。
[ポリシー ID] 列で、編集するポリシーの ID をクリックします。
[
編集] をクリックします。拒否ポリシーを更新します。
- ポリシーの表示名を変更するには、[表示名] フィールドを編集します。
- 既存の拒否ルールを編集するには、拒否ルールをクリックし、ルールのプリンシパル、例外のプリンシパル、拒否される権限、例外の権限、拒否条件を変更します。
- 拒否ルールを削除するには、削除する拒否ルールを見つけて、その行の [削除] をクリックします。
- 拒否ルールを追加するには、[拒否ルールを追加] をクリックし、拒否ポリシーを作成するときと同様に拒否ルールを作成します。
拒否ポリシーの更新が完了したら、[保存] をクリックします。
拒否ポリシーをプログラムで更新する
gcloud CLI、REST API、または IAM クライアント ライブラリを使用して拒否ポリシーを更新するには、読み取り - 変更 - 書き込みのパターンを使用します。
- ポリシーの現在のバージョンを読み取ります。
- 必要に応じてポリシーの情報を変更します。
- 更新したポリシーを書き込みます。
拒否ポリシーを読み取る
gcloud
リソースの拒否ポリシーを取得するには、
gcloud iam policies get
コマンドを実行します。gcloud iam policies get POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
次の値を指定します。
-
POLICY_ID
: 拒否ポリシーの ID。 -
ATTACHMENT_POINT
: 拒否ポリシーが接続しているリソースの ID。この値の形式については、接続ポイントをご覧ください。
たとえば、次のコマンドはプロジェクト
my-project
のmy-deny-policy
という名前の拒否ポリシーを取得し、policy.json
というファイルに保存します。gcloud iam policies get my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --format=json \ > ./policy.json
Go
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Go API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Java
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Node.js
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Node.js API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Python
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
REST
policies.get
メソッドは、リソースの拒否ポリシーを取得します。リクエストのデータを使用する前に、次のように置き換えます。
-
ENCODED_ATTACHMENT_POINT
: 拒否ポリシーが接続しているリソースの URL エンコード ID。この値の形式については、接続ポイントをご覧ください。 POLICY_ID
: 拒否ポリシーの ID。
HTTP メソッドと URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID
リクエストを送信するには、次のいずれかのオプションを開きます。
次のような JSON レスポンスが返されます。
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] }
拒否ポリシーを変更する
拒否ポリシーを変更するには、以前に IAM から読み取ったポリシーのコピーに変更を行います。表示名を更新することも、拒否ルールの追加、変更、削除を行うこともできます。更新されたポリシーを書き込むまで、変更は適用されません。
たとえば、既存の拒否ルールに権限を追加できます。
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2021-10-05T19:22:26.770543Z", "updateTime": "2021-10-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "iam.googleapis.com/roles.delete" ] } } ] }
更新された拒否ポリシーを書き込む
ローカルで拒否ポリシーを変更したら、更新された拒否ポリシーを IAM に書き込む必要があります。
各拒否ポリシーには、ポリシー バージョンを識別する
etag
フィールドが含まれています。etag
は、ポリシーを更新するたびに変更されます。更新されたポリシーを書き込むと、リクエスト内のetag
は、IAM に保存されている現在のetag
と一致させる必要があります。値が一致しない場合、リクエストは失敗します。この機能を使用すると、同時変更による上書きを防ぐことができます。gcloud
リソースの拒否ポリシーを更新するには、
gcloud iam policies update
コマンドを実行します。gcloud iam policies update POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --policy-file=POLICY_FILE
次の値を指定します。
-
POLICY_ID
: 拒否ポリシーの ID。 -
ATTACHMENT_POINT
: 拒否ポリシーが接続しているリソースの ID。この値の形式については、接続ポイントをご覧ください。 -
POLICY_FILE
: 拒否ポリシーを含む JSON ファイルのファイルパス。
デフォルトでは、このコマンドが成功すると、出力は表示されません。詳細なレスポンスを出力するには、コマンドに
--format=json
フラグを追加します。たとえば、次のコマンドは、
policy.json
という名前のファイルを使用して、プロジェクトmy-project
のmy-deny-policy
という拒否ポリシーを更新します。gcloud iam policies update my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --policy-file=policy.json
Go
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Go API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Java
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Node.js
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Node.js API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Python
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
REST
policies.update
メソッドは、拒否ポリシーを更新します。リクエストのデータを使用する前に、次のように置き換えます。
-
ENCODED_ATTACHMENT_POINT
: 拒否ポリシーが接続しているリソースの URL エンコード ID。この値の形式については、接続ポイントをご覧ください。 POLICY_ID
: 拒否ポリシーの ID。-
POLICY
: 更新された拒否ポリシー。たとえば、前の手順で説明したポリシーに権限を追加するには、
POLICY
を次のように置き換えます。{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "iam.googleapis.com/roles.delete" ] } } ] }
HTTP メソッドと URL:
PUT https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID
リクエストの本文(JSON):
POLICY
リクエストを送信するには、次のいずれかのオプションを開きます。
次のような JSON レスポンスが返されます。
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/8b2d0ab2daf1ff01", "metadata": { "@type": "type.googleapis.com/google.iam.v2.PolicyOperationMetadata", "createTime": "2021-10-05T22:26:21.968687Z" }, "response": { "@type": "type.googleapis.com/google.iam.v2.Policy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTgxNTIxNDE3NTYxNjQxODYxMTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T22:26:21.968687Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "iam.googleapis.com/roles.delete" ] } } ] } }
レスポンスで長時間実行オペレーションを識別できます。長時間実行オペレーションのステータスで、オペレーションの完了を確認できます。詳細については、このページの長時間実行オペレーションのステータスを確認するをご覧ください。
拒否ポリシーを削除する
拒否ポリシーにルールを適用する必要がなくなった場合は、拒否ポリシーを削除できます。
必要に応じて、削除するポリシー バージョンの
etag
を指定できます。etag
を指定する場合は、IAM によって保存されている現在のetag
と一致させる必要があります。値が一致しない場合、リクエストは失敗します。この機能を使用すると、ポリシーの更新バージョンではなく、目的のポリシーを削除できます。リクエストから
etag
を省略すると、IAM は無条件にポリシーを削除します。コンソール
Google Cloud コンソールで [IAM] ページの [拒否] タブに移動します。
プロジェクト、フォルダ、または組織を選択します。
[ポリシー ID] 列で、削除するポリシーの ID をクリックします。
[
削除] をクリックします。確認のダイアログで [確認] をクリックします。
gcloud
リソースから拒否ポリシーを削除するには、
gcloud iam policies delete
コマンドを実行します。gcloud iam policies delete POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies
次の値を指定します。
-
POLICY_ID
: 拒否ポリシーの ID。 -
ATTACHMENT_POINT
: 拒否ポリシーが接続しているリソースの ID。この値の形式については、接続ポイントをご覧ください。
必要に応じて、フラグ
--etag=ETAG
を追加できます。ETAG
は、拒否ポリシーの現在のetag
値に置き換えます。デフォルトでは、このコマンドが成功すると、出力は表示されません。詳細なレスポンスを出力するには、コマンドに
--format=json
フラグを追加します。たとえば、次のコマンドは、プロジェクト
my-project
からmy-deny-policy
という名前の拒否ポリシーを削除します。gcloud iam policies delete my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies
Go
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Go API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Java
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Node.js
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Node.js API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
Python
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、始める前にをご覧ください。
REST
policies.delete
メソッドは、リソースから拒否ポリシーを削除します。リクエストのデータを使用する前に、次のように置き換えます。
-
ENCODED_ATTACHMENT_POINT
: 拒否ポリシーが接続しているリソースの URL エンコード ID。この値の形式については、接続ポイントをご覧ください。 POLICY_ID
: 拒否ポリシーの ID。-
ETAG
: 省略可。ポリシーのバージョン ID。存在する場合、この値はポリシーの現在のetag
値と一致させる必要があります。
HTTP メソッドと URL:
DELETE https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID?etag=ETAG
リクエストを送信するには、次のいずれかのオプションを開きます。
次のような JSON レスポンスが返されます。
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/8223fe308bf1ff01", "metadata": { "@type": "type.googleapis.com/google.iam.v2.PolicyOperationMetadata", "createTime": "2021-10-05T19:45:00.133311Z" }, "response": { "@type": "type.googleapis.com/google.iam.v2.Policy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-28T19:06:12.455151Z", "updateTime": "2022-07-05T19:45:00.133311Z", "deleteTime": "2022-07-05T19:45:00.133311Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] } }
レスポンスで長時間実行オペレーションを識別できます。長時間実行オペレーションのステータスで、オペレーションの完了を確認できます。詳細については、このページの長時間実行オペレーションのステータスを確認するをご覧ください。
長時間実行オペレーションのステータスを確認する
REST API またはクライアント ライブラリを使用する場合、拒否ポリシーの変更メソッドで長時間実行オペレーション(LRO)が返されます。長時間実行オペレーションは、リクエストのステータスを追跡し、ポリシーの変更が完了したかどうかを示します。
Go
このページのコードサンプルは、長時間実行オペレーションが完了するまで待ってから、その結果にアクセスする方法を示しています。
Java
このページのコードサンプルは、長時間実行オペレーションが完了するまで待ってから、その結果にアクセスする方法を示しています。
Node.js
このページのコードサンプルは、長時間実行オペレーションが完了するまで待ってから、その結果にアクセスする方法を示しています。
Python
このページのコードサンプルは、長時間実行オペレーションが完了するまで待ってから、その結果にアクセスする方法を示しています。
REST
policies.operations.get
メソッドは、長時間実行オペレーションのステータスを返します。リクエストのデータを使用する前に、次のように置き換えます。
-
ENCODED_ATTACHMENT_POINT
: 拒否ポリシーが接続しているリソースの URL エンコード ID。この値の形式については、接続ポイントをご覧ください。 -
OPERATION_ID
: オペレーションの ID。この ID は、元のリクエストに対するレスポンスでオペレーション名の一部として受け取ります。オペレーション名の末尾には 16 進数の値を使用します。例:89cb3e508bf1ff01
HTTP メソッドと URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/operations/OPERATION_ID
リクエストを送信するには、次のいずれかのオプションを開きます。
次のような JSON レスポンスが返されます。
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/89cb3e508bf1ff01", "done": true }
オペレーションの
done
フィールドが存在しない場合は、オペレーションを繰り返し取得して、ステータスのモニタリングを続行します。各リクエストの間には、切り捨て型指数バックオフを使用して遅延時間を設けてください。done
フィールドがtrue
に設定されている場合、オペレーションは完了しており、オペレーションの取得を停止できます。次のステップ
- 拒否ポリシーでサポートされている権限を確認する。
- 拒否ポリシーのプリンシパル ID の形式を取得する。
- 拒否ポリシーに関するアクセス問題のトラブルシューティング方法を確認する。
- プリンシパルへのアクセスの拒否について学習する。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-23 UTC。