本頁說明如何禁止主體使用特定 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
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
請參閱拒絕政策總覽。
-
如要查看拒絕政策,請按照下列方式操作:
-
iam.denypolicies.get
-
iam.denypolicies.list
-
-
如要建立、更新及刪除拒絕政策,請按照下列步驟操作:
-
iam.denypolicies.create
-
iam.denypolicies.delete
-
iam.denypolicies.get
-
iam.denypolicies.update
-
v1
API:iam.roles.create
v2
API:iam.googleapis.com/roles.create
- 要拒絕的權限。
- 遭拒這些權限的主體。
選用:可免除權限遭拒的主體。
舉例來說,您可以拒絕群組的權限,但豁免屬於該群組的特定使用者。
前往 Google Cloud 控制台的「IAM」頁面,然後點選「拒絕」分頁標籤。
選取專案、資料夾或機構。
按一下
「建立拒絕政策」。在「政策名稱」部分,透過下列任一方式定義政策 ID:
- 在「顯示名稱」欄位中,輸入政策的顯示名稱。 填寫這個欄位後,系統會自動填寫「ID」欄位。如要變更政策 ID,請更新「ID」欄位中的文字。
- 在「ID」欄位中,輸入政策的 ID。
在「拒絕規則」部分,定義政策的拒絕規則。每項拒絕政策都必須至少有一項拒絕規則。如要新增其他拒絕規則,請按一下「新增拒絕規則」。
針對每項拒絕規則,請執行下列操作:
- 在「Denied principals」(遭拒主體) 欄位中,新增一或多個您要禁止使用指定權限的主體。主體可以是拒絕政策主體 ID 中的任何主體類型,但 ID 開頭為
deleted:
的主體除外。 選用:在「Exception principals」(例外主體) 欄位中,新增您希望能夠使用指定權限的主體,即使這些主體包含在「Denied principals」(遭拒主體) 部分也一樣。舉例來說,如果特定使用者屬於遭拒群組,您可以使用這個欄位為他們設定例外狀況。
在「已拒絕的權限」部分,新增要拒絕的權限。權限必須支援拒絕政策。
在某些情況下,您也可以使用權限群組拒絕一組權限。詳情請參閱「權限群組」。
選用:新增例外狀況權限。例外權限是指您不希望這項拒絕規則拒絕的權限,即使這些權限包含在遭拒權限清單中也一樣。舉例來說,您可以使用這個欄位,在權限群組中為特定權限設定例外狀況。
如要新增例外權限,請按一下「例外權限」,然後按一下
「新增其他權限」,接著在「權限 1」欄位中輸入權限。繼續新增權限,直到您新增所有要從拒絕政策中排除的權限為止。選用:新增拒絕條件,指定主體何時無法使用權限。如要新增拒絕條件,請按一下
「新增拒絕條件」,然後定義下列欄位:- 標題:選填。簡要說明條件的用途。
- 說明:選填。狀況的詳細說明。
條件運算式:您可以使用「條件建構工具」或「條件編輯器」新增條件運算式。條件建構工具提供互動式介面,可供您選取所需的條件類型、運算子,以及運算式的其他適用詳細資料。條件編輯器提供文字型介面,可使用一般運算語言 (CEL) 語法手動輸入運算式。
拒絕條件必須以資源標記為依據。不支援其他函式和運算子。
- 在「Denied principals」(遭拒主體) 欄位中,新增一或多個您要禁止使用指定權限的主體。主體可以是拒絕政策主體 ID 中的任何主體類型,但 ID 開頭為
點選「建立」。
POLICY_NAME
:拒絕政策的顯示名稱。-
DENY_RULE_1
、DENY_RULE_2
、...DENY_RULE_N
:政策中的拒絕規則。每項拒絕規則可包含下列欄位:-
deniedPermissions
:指定主體無法使用的權限清單。權限必須支援拒絕政策。在某些情況下,您也可以使用權限群組拒絕一組權限。 詳情請參閱「權限群組」。
-
exceptionPermissions
:指定主體可使用的權限清單,即使這些權限包含在deniedPermissions
中也一樣。舉例來說,您可以使用這個欄位,為一組權限中的特定權限設定例外狀況。 -
deniedPrincipals
:無法使用指定權限的主體清單。如要瞭解如何設定主體 ID 格式,請參閱「拒絕政策的主體 ID」。 -
exceptionPrincipals
:選用。可使用指定權限的主體清單,即使這些主體包含在deniedPrincipals
中也一樣。舉例來說,如果特定使用者屬於遭拒群組,您可以使用這個欄位為他們設定例外狀況。如要瞭解如何設定主體 ID 格式,請參閱「拒絕政策的主體 ID」。 -
denialCondition
:選用。條件運算式,指定主體何時無法使用權限。包含下列欄位:-
expression
:使用一般運算語言 (CEL) 語法的條件運算式。運算式必須使用 CEL 函式評估資源標記。不支援其他函式和運算子。 -
title
:選用。簡要說明條件的用途。 -
description
:選用。狀況的詳細說明。
-
如需拒絕規則範例,請參閱「常見用途」。
-
-
POLICY_ID
:拒絕政策的 ID。 -
ATTACHMENT_POINT
:拒絕政策所附加資源的 ID。如要瞭解如何設定這個值的格式,請參閱「附件點」。 -
POLICY_FILE
:包含拒絕政策的 JSON 檔案路徑。 -
ENCODED_ATTACHMENT_POINT
:資源的網址編碼 ID,拒絕政策會附加至該資源。如要瞭解如何設定這個值的格式,請參閱「附件點」。 POLICY_ID
:拒絕政策的 ID。POLICY_NAME
:拒絕政策的顯示名稱。-
DENY_RULE_1
、DENY_RULE_2
、...DENY_RULE_N
:政策中的拒絕規則。每項拒絕規則可包含下列欄位:-
deniedPermissions
:指定主體無法使用的權限清單。權限必須支援拒絕政策。在某些情況下,您也可以使用權限群組拒絕一組權限。 詳情請參閱「權限群組」。
-
exceptionPermissions
:指定主體可使用的權限清單,即使這些權限包含在deniedPermissions
中也一樣。舉例來說,您可以使用這個欄位,為一組權限中的特定權限設定例外狀況。 -
deniedPrincipals
:無法使用指定權限的主體清單。如要瞭解如何設定主體 ID 格式,請參閱「拒絕政策的主體 ID」。 -
exceptionPrincipals
:選用。可使用指定權限的主體清單,即使這些主體包含在deniedPrincipals
中也一樣。舉例來說,如果特定使用者屬於遭拒群組,您可以使用這個欄位為他們設定例外狀況。如要瞭解如何設定主體 ID 格式,請參閱「拒絕政策的主體 ID」。 -
denialCondition
:選用。條件運算式,指定主體何時無法使用權限。包含下列欄位:-
expression
:使用一般運算語言 (CEL) 語法的條件運算式。運算式必須使用 CEL 函式評估資源標記。不支援其他函式和運算子。 -
title
:選用。簡要說明條件的用途。 -
description
:選用。狀況的詳細說明。
-
如需拒絕規則範例,請參閱「常見用途」。
-
-
ATTACHMENT_POINT
:拒絕政策所附加資源的 ID。如要瞭解如何設定這個值的格式,請參閱「附件點」。 -
ENCODED_ATTACHMENT_POINT
:資源的網址編碼 ID,拒絕政策會附加至該資源。如要瞭解如何設定這個值的格式,請參閱「附件點」。 前往 Google Cloud 控制台的「IAM」頁面,然後點選「拒絕」分頁標籤。
選取專案、資料夾或機構。
在「政策 ID」欄中,按一下要查看的政策 ID。
Google Cloud 控制台會顯示拒絕政策的詳細資料,包括政策 ID、政策建立時間,以及拒絕政策中的拒絕規則。
-
POLICY_ID
:拒絕政策的 ID。 -
ATTACHMENT_POINT
:拒絕政策所附加資源的 ID。如要瞭解如何設定這個值的格式,請參閱「附件點」。 -
ENCODED_ATTACHMENT_POINT
:資源的網址編碼 ID,拒絕政策會附加至該資源。如要瞭解如何設定這個值的格式,請參閱「附件點」。 POLICY_ID
:拒絕政策的 ID。- gcloud CLI
- REST API
- IAM 用戶端程式庫
前往 Google Cloud 控制台的「IAM」頁面,然後點選「拒絕」分頁標籤。
選取專案、資料夾或機構。
在「政策 ID」欄中,按一下要編輯的政策 ID。
按一下「Edit」(編輯)
。更新拒絕政策:
- 如要變更政策顯示名稱,請編輯「顯示名稱」欄位。
- 如要編輯現有的拒絕規則,請按一下該規則,然後修改規則的主體、例外主體、遭拒權限、例外權限或拒絕條件。
- 如要移除拒絕規則,請找到要刪除的拒絕規則,然後按一下該列中的「刪除」 。
- 如要新增拒絕規則,請按一下「新增拒絕規則」,然後建立拒絕規則,就像建立拒絕政策時一樣。
更新拒絕政策後,按一下「儲存」。
- 閱讀現行政策。
- 視需要修改政策中的資訊。
- 撰寫更新後的政策。
-
POLICY_ID
:拒絕政策的 ID。 -
ATTACHMENT_POINT
:拒絕政策所附加資源的 ID。如要瞭解如何設定這個值的格式,請參閱「附件點」。 -
ENCODED_ATTACHMENT_POINT
:資源的網址編碼 ID,拒絕政策會附加至該資源。如要瞭解如何設定這個值的格式,請參閱「附件點」。 POLICY_ID
:拒絕政策的 ID。-
POLICY_ID
:拒絕政策的 ID。 -
ATTACHMENT_POINT
:拒絕政策所附加資源的 ID。如要瞭解如何設定這個值的格式,請參閱「附件點」。 -
POLICY_FILE
:包含拒絕政策的 JSON 檔案路徑。 -
ENCODED_ATTACHMENT_POINT
:資源的網址編碼 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" ] } } ] }
前往 Google Cloud 控制台的「IAM」頁面,然後點選「拒絕」分頁標籤。
選取專案、資料夾或機構。
在「政策 ID」欄中,按一下要刪除的政策 ID。
按一下「刪除」圖示
。在確認對話方塊中,按一下「確認」。-
POLICY_ID
:拒絕政策的 ID。 -
ATTACHMENT_POINT
:拒絕政策所附加資源的 ID。如要瞭解如何設定這個值的格式,請參閱「附件點」。 -
ENCODED_ATTACHMENT_POINT
:資源的網址編碼 ID,拒絕政策會附加至該資源。如要瞭解如何設定這個值的格式,請參閱「附件點」。 POLICY_ID
:拒絕政策的 ID。-
ETAG
:選用。政策版本的 ID。如有這個值,必須與政策目前的etag
值相符。 -
ENCODED_ATTACHMENT_POINT
:資源的網址編碼 ID,拒絕政策會附加至該資源。如要瞭解如何設定這個值的格式,請參閱「附件點」。 -
OPERATION_ID
:作業的 ID。您會在原始要求的相關回應中收到這個 ID,這是作業名稱的一部分。使用作業名稱結尾的十六進位值。例如:89cb3e508bf1ff01
。 - 找出拒絕政策支援的權限。
- 取得 拒絕政策中主體 ID 的格式。
- 瞭解如何排解拒絕政策造成的存取問題。
- 進一步瞭解如何拒絕主體存取。
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,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱 Google Cloud 驗證說明文件中的「 為本機開發環境設定 ADC」。
Go
如要在本機開發環境中使用本頁的 Go 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱 Google Cloud 驗證說明文件中的「 為本機開發環境設定 ADC」。
Java
如要在本機開發環境中使用本頁的 Java 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱 Google Cloud 驗證說明文件中的「 為本機開發環境設定 ADC」。
Node.js
如要在本機開發環境中使用本頁的 Node.js 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱 Google Cloud 驗證說明文件中的「 為本機開發環境設定 ADC」。
Python
如要在本機開發環境中使用本頁的 Python 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱 Google Cloud 驗證說明文件中的「 為本機開發環境設定 ADC」。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。
必要的角色
如要取得管理拒絕政策所需的權限,請要求管理員授予您機構的下列 IAM 角色:
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這些預先定義角色具備管理拒絕政策所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要管理拒絕政策,必須具備下列權限:
找出要拒絕的權限
建立拒絕政策前,請先決定要拒絕哪些權限,以及要拒絕哪些主體使用這些權限。
只有部分權限可以拒絕。如需可拒絕的權限清單,請參閱「拒絕政策支援的權限」。
在某些情況下,您也可以使用權限群組拒絕一組權限。 詳情請參閱「權限群組」。
您可以使用
v2
REST API 管理拒絕政策,但權限名稱必須採用特殊格式。舉例來說,建立 IAM 自訂角色的權限名稱如下:建立拒絕政策
您可以為機構、資料夾和專案新增拒絕政策。每個資源最多可有 500 項拒絕政策。
拒絕政策包含拒絕規則,可指定下列項目:
每個資源的所有附加拒絕政策中,最多可有 500 條拒絕規則。
拒絕政策是透過資源階層繼承。舉例來說,如果您在機構層級拒絕某項權限,該機構內的資料夾和專案,以及每個專案中的服務專屬資源,也會拒絕這項權限。
拒絕政策會覆寫允許政策。如果主體獲授包含特定權限的角色,但拒絕政策規定主體不得使用該權限,則主體無法使用該權限。
控制台
gcloud
如要為資源建立拒絕政策,請先建立包含政策的 JSON 檔案。拒絕政策的格式如下:
{ "displayName": "POLICY_NAME", "rules": [ { "denyRule": DENY_RULE_1 }, { "denyRule": DENY_RULE_2 }, { "denyRule": DENY_RULE_N } ] }
提供以下這些值:
舉例來說,下列拒絕政策包含一項拒絕規則,會拒絕 Lucian 的一項權限:
{ "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
提供以下這些值:
根據預設,如果這個指令成功執行,不會顯示任何輸出內容。如要列印詳細回應,請在指令中加入
--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
方法會為資源建立拒絕政策。使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
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" ] } } ] } }
回應會識別長時間執行的作業。您可以監控長時間執行的作業狀態,瞭解作業何時完成。詳情請參閱本頁的「檢查長時間執行的作業狀態」。
列出拒絕政策
一個資源可以有多項拒絕政策。您可以列出附加至資源的所有拒絕政策,然後查看每項拒絕政策,瞭解各項政策中的拒絕規則。
控制台
gcloud
如要列出資源的拒絕政策,請執行
gcloud iam policies list
指令:gcloud iam policies list \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
提供下列值:
舉例來說,下列指令會列出附加至機構的拒絕政策,該機構的數字 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
方法會列出資源的拒絕政策。使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
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" } ] }
查看拒絕政策
您可以查看拒絕政策,瞭解其中包含的拒絕規則,包括遭拒的權限,以及無法使用這些權限的主體。
控制台
gcloud
如要取得資源的拒絕政策,請執行
gcloud iam policies get
指令:gcloud iam policies get POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
提供以下這些值:
舉例來說,以下指令會取得專案
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
方法會取得資源的拒絕政策。使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
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 控制台更新拒絕政策,也可以使用下列其中一種程式輔助方法:
使用 Google Cloud 控制台更新拒絕政策
以程式輔助方式更新拒絕政策
如要使用 gcloud CLI、REST API 或 IAM 用戶端程式庫更新拒絕政策,請使用「讀取 - 修改 - 寫入」模式:
詳閱拒絕政策
gcloud
如要取得資源的拒絕政策,請執行
gcloud iam policies get
指令:gcloud iam policies get POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
提供以下這些值:
舉例來說,以下指令會取得專案
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
方法會取得資源的拒絕政策。使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
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
提供以下這些值:
根據預設,如果這個指令成功執行,不會顯示任何輸出內容。如要列印詳細回應,請在指令中加入
--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
方法會更新拒絕政策。使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
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 會無條件刪除政策。控制台
gcloud
如要從資源刪除拒絕政策,請執行
gcloud iam policies delete
指令:gcloud iam policies delete POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies
提供以下這些值:
您可以視需要新增
--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
方法會從資源中刪除拒絕政策。使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
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
方法會傳回長時間執行作業的狀態。使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
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
時,即代表作業完成,您可以停止取得作業。後續步驟
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-14 (世界標準時間)。
-