主體存取邊界 (PAB) 政策可限制一組主體可存取的資源。本頁說明如何編輯現有的主體存取邊界政策,以及如何編輯主體存取邊界政策的政策繫結,以變更政策適用對象。
事前準備
設定驗證方法。
Select the tab for how you plan to use the samples on this page:
gcloud
安裝 Google Cloud CLI,然後 使用同盟身分登入 gcloud CLI。 登入後,執行下列指令初始化 Google Cloud CLI:
gcloud init
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI,然後 使用同盟身分登入 gcloud CLI。 登入後,執行下列指令初始化 Google Cloud CLI:
gcloud init
詳情請參閱 Trusted Cloud 驗證說明文件中的「Authenticate for using REST」。
閱讀主體存取邊界政策總覽。
編輯主體存取邊界政策所需的角色
如要取得編輯主體存取權範圍政策所需的權限,請要求管理員授予您機構的主體存取權範圍管理員 (
roles/iam.principalAccessBoundaryAdmin
) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。這個預先定義的角色具備
iam.principalaccessboundarypolicies.update
權限,可編輯主體存取邊界政策。編輯主體存取邊界政策繫結所需的角色
如要編輯主體存取邊界政策的政策繫結,所需權限取決於繫結至政策的主體集。
如要取得編輯主體存取權範圍政策的政策繫結所需的權限,請管理員授予您下列 IAM 角色:
-
主體存取權範圍政策使用者 (
roles/iam.principalAccessBoundaryUser
) 貴機構 -
編輯繫結至工作團隊身分集區的主體存取權界線政策:
目標工作團隊身分集區的身分與存取權管理工作團隊集區管理員 (
roles/iam.workforcePoolAdmin
) -
編輯繫結至工作負載身分集區的主體存取權界線政策:
目標工作負載身分集區所屬專案的「身分與存取權管理 Workload Identity 集區管理員」 (
roles/iam.workloadIdentityPoolAdmin
) -
取得編輯繫結的長時間執行作業狀態,該繫結會參照工作負載身分集區:
身分與存取權管理作業檢視者 (
roles/iam.operationViewer
) 在擁有目標工作負載身分集區的專案中 -
編輯繫結至 Google Workspace 網域的主體存取權界線政策:
Workspace 集區 IAM 管理員 (
roles/iam.workspacePoolAdmin
) 機構 -
編輯繫結至專案主體集的政策主體存取邊界政策:
專案的專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin
) -
取得編輯繫結的長時間執行作業狀態,該繫結會參照專案的主體集:
IAM 作業檢視器 (
roles/iam.operationViewer
) 專案 -
編輯繫結至資料夾主體集的資料夾主體存取邊界政策:
資料夾 IAM 管理員 (
roles/resourcemanager.folderIamAdmin
) 在資料夾上 -
編輯繫結至機構主體組合的主體存取權範圍政策:
機構的機構管理員 (
roles/resourcemanager.organizationAdmin
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這些預先定義角色具備編輯主體存取邊界政策的政策繫結所需權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要編輯主體存取邊界政策的政策繫結,必須具備下列權限:
-
iam.principalaccessboundarypolicies.bind
機構 -
編輯繫結至員工身分集區的主體存取邊界政策:
iam.workforcePools.updatePolicyBinding
目標員工身分集區 -
編輯繫結至工作負載身分集區的主體存取邊界政策:
iam.workloadIdentityPools.updatePolicyBinding
在擁有目標工作負載身分集區的專案中 -
取得編輯繫結的長時間執行作業狀態,該繫結會參照 workload identity pool:
iam.operations.get
在擁有目標 workload identity pool 的專案中 -
編輯繫結至 Google Workspace 網域的主體存取邊界政策:
iam.workspacePools.updatePolicyBinding
在機構上 -
編輯繫結至專案主體集的專案主體存取邊界政策:
resourcemanager.projects.updatePolicyBinding
在專案上 -
取得編輯繫結的長時間執行作業狀態,該繫結會參照專案的主體集:
iam.operations.get
在專案上 -
編輯繫結至資料夾主體組合的主體存取邊界政策:
resourcemanager.folders.updatePolicyBinding
在資料夾上 -
編輯繫結至機構主體組合的主體存取邊界政策:
resourcemanager.organizations.updatePolicyBinding
在機構
編輯現有的主體存取邊界政策
如要新增或移除主體存取邊界政策的規則,或是修改主體存取邊界政策的中繼資料,請編輯主體存取邊界政策。
您可以使用 Trusted Cloud 控制台、gcloud CLI 或 IAM REST API 編輯主體存取權界線政策。
控制台
前往 Trusted Cloud 控制台的「Principal Access Boundary policies」(主體存取權界線政策) 頁面。
選取要編輯主體存取權範圍政策的機構。
按一下要編輯的主體存取邊界政策 ID。
按一下「編輯政策」
。如要編輯政策規則,請按照下列步驟操作:
- 按一下要編輯的規則。
- 編輯規則說明,或規則中包含的資源。
- 按一下 [完成]。
如要從政策中刪除規則,請按一下該規則列中的「刪除」
。如要編輯政策的顯示名稱,請編輯「顯示名稱」欄位。
如要編輯政策的強制執行版本,請點選「強制執行版本」清單,然後選擇新值。
選用:如要使用 Policy Simulator 測試主體存取權範圍政策的變更,請按一下「測試變更」。查看模擬結果,並視需要更新政策。
如要進一步瞭解如何使用政策模擬器測試主體存取邊界政策,請參閱「主體存取邊界政策的政策模擬器」。
按一下 [儲存]。
gcloud
gcloud iam principal-access-boundary-policies update
指令會更新現有的主體存取邊界政策。使用下列任何指令資料之前,請先替換以下項目:
-
PAB_POLICY_ID
:您要更新的主體存取邊界政策 ID,例如example-policy
。 ORG_ID
:擁有主體存取權範圍政策的機構 ID。機構 ID 為數字,例如123456789012
。-
FIELD_TO_UPDATE=UPDATED_VALUE
:要更新的欄位和對應的更新值。以下是可用於更新政策中欄位的標記範例:
-
--display-name=DISPLAY_NAME
:將政策的顯示名稱替換為DISPLAY_NAME
。 -
--details-enforcement-version=ENFORCEMENT_VERSION
:將政策的強制執行版本更新為ENFORCEMENT_VERSION
。 -
--details-rules=RULES_FILE.json
:以RULES_FILE.json
中的規則取代主體存取邊界政策的規則。如要瞭解如何設定規則檔案格式,請參閱「建立主體存取邊界政策」。使用這個旗標時,無法使用
--add-details-rules
旗標。 -
--add-details-rules=RULES_FILE
:將RULES_FILE.json
中的規則附加至政策的現有規則。如要瞭解如何設定規則檔案格式,請參閱「建立主體存取邊界政策」。使用這個旗標時,無法使用
--details-rules
旗標。 -
--remove-details-rules=RULES_FILE
:從政策的現有規則中移除RULES_FILE.json
中的規則。如要瞭解如何設定規則檔案格式,請參閱「建立主體存取邊界政策」。只有完全符合RULES_FILE.json
中其中一項規則的規則會遭到移除。使用這個旗標時,無法使用
--clear-rule-details
旗標。 -
--clear-details-rules
:清除主體存取邊界政策中的所有規則。使用這個旗標時,無法使用
--remove-rule-details
旗標。
如需可用於更新主體存取邊界政策的完整標記清單,請參閱
gcloud iam principal-access-boundary-policies update
指令參考資料。 -
FORMAT
:回覆格式。使用json
或yaml
。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud iam principal-access-boundary-policies update PAB_POLICY_ID \ --organization=ORG_ID --location=global \ --FIELD_TO_UPDATE=UPDATED_VALUE \ --format=FORMAT
Windows (PowerShell)
gcloud iam principal-access-boundary-policies update PAB_POLICY_ID ` --organization=ORG_ID --location=global ` --FIELD_TO_UPDATE=UPDATED_VALUE ` --format=FORMAT
Windows (cmd.exe)
gcloud iam principal-access-boundary-policies update PAB_POLICY_ID ^ --organization=ORG_ID --location=global ^ --FIELD_TO_UPDATE=UPDATED_VALUE ^ --format=FORMAT
回應會包含代表您要求的長時間執行作業。作業完成後,回應會輸出更新後的主體存取權範圍政策。
Request issued for: [example-policy] Waiting for operation [organizations/123456789012/locations/global/operations/operation-1715374208720-6181fae5e2034-2d8a712b-5c92e5b9] to complete...done. Updated principalAccessBoundaryPolicy [example-policy]. { "name": "organizations/123456789012/locations/global/principalAccessBoundaryPolicies/example-policy", "uid": "puid_13364150419245236225", "etag": "W/\"Gh/PcTdJD/AWHUhPW45kdw==\"", "displayName": "Updated display name", "createTime": "2024-05-07T00:05:48.295209Z", "updateTime": "2024-05-10T20:50:09.200421Z", "details": [ "rules": { [ "description": "Make principals eligible to access example.com" "resources": { "//cloudresourcemanager.googleapis.com/organizations/123456789012" }, "effect": ALLOW ] }, "enforcementVersion": "1" ] }
REST
principalAccessBoundaryPolicies.patch
方法會更新現有的主體存取邊界政策。使用任何要求資料之前,請先替換以下項目:
ORG_ID
:擁有主體存取權範圍政策的機構 ID。機構 ID 為數字,例如123456789012
。-
PAB_POLICY_ID
:您要更新的主體存取邊界政策 ID,例如example-policy
。 -
FIELDS_TO_UPDATE
:以半形逗號分隔的欄位清單,列出要更新的欄位。如果未指定要更新的欄位,IAM 會以要求主體的內容取代現有政策。可接受的值為
displayName
、details
、details.rules
、details.rules.description
、details.rules.resources
、details.rules.effect
和details.enforcementVersion
。 DISPLAY_NAME
:選用。主體存取邊界政策的易讀說明,例如Example policy
。顯示名稱長度上限為 63 個字元。-
PAB_RULES
:主體存取邊界規則清單,定義受影響主體可存取的資源。主體存取邊界政策最多可有 500 條規則。每項規則的格式如下:{ "description": "DESCRIPTION", "resources": [ RESOURCES ], "effect": ALLOW }
替換下列值:
DESCRIPTION
:選用。主體存取邊界政策規則的說明。說明長度上限為 256 個字元。-
RESOURCES
:您希望主體有權存取的 Resource Manager 資源清單 (專案、資料夾和機構)。凡是受這項政策規範的主體,都有權存取這些資源。每項主體存取邊界政策最多可參照政策中所有規則的 500 項資源。
-
ENFORCEMENT_VERSION
:IAM 在強制執行政策時使用的主要存取邊界政策版本。強制執行版本會決定 IAM 對主體存取邊界政策強制執行的權限。可接受的值為
1
、2
、3
和latest
。如要進一步瞭解強制執行版本,請參閱「主體存取邊界強制執行版本」。
HTTP 方法和網址:
PATCH https://iam.googleapis.com/v3/organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID?updateMask=FIELDS_TO_UPDATE
JSON 要求主體:
{ "displayName": DISPLAY_NAME, "details": { "rules": [ PAB_RULES ], "enforcementVersion": "ENFORCEMENT_VERSION", } }
如要傳送要求,請展開以下其中一個選項:
回應會包含代表您要求的長時間執行作業。如要瞭解如何取得長時間執行作業的狀態,請參閱本頁的「檢查長時間執行作業的狀態」。
{ "name": "organizations/123456789012/locations/global/operations/operation-1715626721931-6185a7953ef76-76f80ee4-19cd1bf7", "metadata": { "@type": "type.googleapis.com/google.iam.v3.OperationMetadata", "createTime": "2024-05-13T18:58:43.721277235Z", "target": "organizations/123456789012/locations/global/principalAccessBoundaryPolicies/example-policy", "verb": "update", "requestedCancellation": false, "apiVersion": "v3" }, "done": false }
變更主體存取邊界政策的強制執行對象
為主體存取邊界政策建立政策繫結後,您就無法變更繫結中的政策 ID 或主體集。因此,如要變更主體存取權範圍政策的強制執行對象,請執行下列其中一項操作:
- 如要調整主體存取邊界政策的強制執行對象,可以修改政策繫結中的條件。如要修改繫結中的條件,請編輯政策繫結。
- 如要為其他主體集強制執行主體存取邊界政策,請建立新的政策繫結,將政策繫結至該主體集。
- 如要從主體集移除主體存取邊界政策,請刪除將政策繫結至主體集的政策繫結。
編輯主體存取邊界政策的現有政策繫結
建立政策繫結後,您可以編輯繫結,修改繫結中的條件或繫結的顯示名稱。
您可以使用 Trusted Cloud 控制台、gcloud CLI 或 IAM REST API 編輯政策繫結。
控制台
前往 Trusted Cloud 控制台的「Principal Access Boundary policies」(主體存取權界線政策) 頁面。
選取要編輯主體存取權範圍政策的機構。
找出要編輯繫結的主體存取邊界政策,然後按一下該政策的 ID。
按一下「Bindings」(繫結) 分頁標籤。
找出要編輯的繫結 ID。在該繫結的資料列中,依序點選「動作」
和「編輯繫結」。如要更新繫結的顯示名稱,請編輯「顯示名稱」欄位。
如要為繫結新增條件,請按照下列步驟操作:
- 按一下「新增條件」 。
- 在「Title」(名稱) 欄位中,簡要說明條件的用途。
- 選填:在「說明」欄位中,輸入條件的詳細說明。
- 在「運算式」欄位中,輸入使用一般運算語言 (CEL) 語法的條件運算式。運算式必須參照
principal.type
或principal.subject
屬性。系統不支援其他屬性。 - 按一下 [儲存]。
如要更新現有條件,請執行下列步驟:
- 按一下條件名稱旁邊的「編輯條件」 。
- 更新條件的標題、說明或運算式。
- 按一下 [儲存]。
選用:如要使用 Policy Simulator 測試主體存取權範圍政策繫結的變更,請按一下「測試變更」。查看模擬結果,並視需要更新政策繫結。
如要進一步瞭解如何使用政策模擬器測試主體存取邊界政策,請參閱「主體存取邊界政策的政策模擬器」。
若要儲存變更,請按一下 [儲存]。
gcloud
gcloud iam policy-bindings update
指令會更新現有的政策繫結。使用下列任何指令資料之前,請先替換以下項目:
-
BINDING_ID
:要更新的政策繫結 ID,例如example-binding
。 -
RESOURCE_TYPE
:政策繫結所屬的 Resource Manager 資源類型 (專案、資料夾或機構)。使用project
、folder
或organization
值資源類型取決於政策繫結中設定的主體。如要瞭解應使用哪種資源類型,請參閱「支援的主體類型」。
RESOURCE_ID
:政策繫結所屬的專案、資料夾或機構 ID。專案 ID 為英數字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。-
FIELD_TO_UPDATE=UPDATED_VALUE
:要更新的欄位和對應的更新值。以下是可用於更新政策繫結欄位的標記範例:
-
--display-name=DISPLAY_NAME
:將繫結的顯示名稱替換為DISPLAY_NAME
。 -
--condition-description=CONDITION_DESCRIPTION
:如果繫結有條件,請將條件說明替換為CONDITION_DESCRIPTION
。否則,請在繫結中新增條件,並提供指定說明。如果您使用這個旗標更新沒有條件的繫結,也必須設定--condition-expression
旗標。 -
--condition-expression=CONDITION_EXPRESSION
:如果繫結有條件,請將條件的運算式替換為CONDITION_EXPRESSION
。否則,請使用指定運算式,在繫結中新增條件。 -
--condition-title=CONDITION_TITLE
:如果繫結有條件,請將條件的標題替換為CONDITION_TITLE
。否則,請為繫結新增條件,並指定標題。如果您使用這個旗標更新沒有條件的繫結,也必須設定--condition-expression
旗標。
如需可更新的完整欄位清單,請參閱
gcloud iam policy-bindings update
指令參考資料。 -
FORMAT
:回覆格式。使用json
或yaml
。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud iam policy-bindings update BINDING_ID \ --RESOURCE_TYPE=RESOURCE_ID --location=global \ --FIELD_TO_UPDATE=UPDATED_VALUE \ --format=FORMAT
Windows (PowerShell)
gcloud iam policy-bindings update BINDING_ID ` --RESOURCE_TYPE=RESOURCE_ID --location=global ` --FIELD_TO_UPDATE=UPDATED_VALUE ` --format=FORMAT
Windows (cmd.exe)
gcloud iam policy-bindings update BINDING_ID ^ --RESOURCE_TYPE=RESOURCE_ID --location=global ^ --FIELD_TO_UPDATE=UPDATED_VALUE ^ --format=FORMAT
回應會包含代表您要求的長時間執行作業。如要瞭解如何取得長時間執行作業的狀態,請參閱本頁的「檢查長時間執行作業的狀態」。
Update request issued for: [my-binding] Waiting for operation [organizations/123456789012/locations/global/operations/operation-1715374545618-6181fc272c6f9-55ff07f4-97d0ac76] to complete...done. Updated policyBinding [my-binding]. { "createTime": "2024-05-06T18:08:24.729843Z", "displayName": "Updated display name", "etag": "W/\"xkdnPfTxoxyVqOwhQSJbMg==\"", "name": "organizations/123456789012/locations/global/policyBindings/example-binding", "policy": "organizations/123456789012/locations/global/principalAccessBoundaryPolicies/example-pab-policy", "policyKind": "PRINCIPAL_ACCESS_BOUNDARY", "policyUid": "puid_9519202237377675265", "target": { "principalSet": "//cloudresourcemanager.googleapis.com/organizations/123456789012" }, "uid": "buid_9904260005517852673", "updateTime": "2024-05-06T18:11:16.798841Z" }
REST
policyBindings.patch
方法會更新現有的政策繫結。使用任何要求資料之前,請先替換以下項目:
-
RESOURCE_TYPE
:政策繫結所屬的 Resource Manager 資源類型 (專案、資料夾或機構)。使用projects
、folders
或organizations
值資源類型取決於政策繫結中設定的主體。如要瞭解應使用哪種資源類型,請參閱「支援的主體類型」。
RESOURCE_ID
:政策繫結所屬的專案、資料夾或機構 ID。專案 ID 為英數字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。-
BINDING_ID
:要更新的政策繫結 ID,例如example-binding
。 -
FIELDS_TO_UPDATE
:以半形逗號分隔的欄位清單,列出要更新的欄位。如果未指定要更新的欄位,IAM 會以要求主體的內容取代現有繫結。可接受的值為
displayName
、condition
、condition.expression
、condition.title
和condition.description
。 DISPLAY_NAME
:選用。使用者可理解的繫結說明,例如Example binding
。顯示名稱長度上限為 63 個字元。-
CONDITION_DETAILS
:選用。條件運算式,用於指定要對主體集中的哪些主體強制執行主體存取邊界政策。包含下列欄位:-
expression
:使用一般運算語言 (CEL) 語法的條件運算式。運算式必須參照principal.type
或principal.subject
屬性。系統不支援其他屬性。運算式最多可包含 10 個邏輯運算子 (
&&
、||
、!
),長度最多 250 個半形字元。 -
title
:選用。簡要說明條件的用途。 -
description
:選用。更詳細的狀況說明。
-
HTTP 方法和網址:
POST https://iam.googleapis.com/v3/RESOURCE_TYPE/RESOURCE_ID/locations/global/policyBindings/BINDING_ID?updateMask=FIELDS_TO_UPDATE
JSON 要求主體:
{ "displayName": DISPLAY_NAME, "condition": { CONDITION_DETAILS } }
如要傳送要求,請展開以下其中一個選項:
回應會包含代表您要求的長時間執行作業。如要瞭解如何取得長時間執行作業的狀態,請參閱本頁的「檢查長時間執行作業的狀態」。
{ "name": "organizations/123456789012/locations/global/operations/operation-1715373159010-6181f6fcccfa7-dcd0055c-00c22cad", "metadata": { "@type": "type.googleapis.com/google.iam.v3.OperationMetadata", "createTime": "2024-05-10T20:32:39.254910121Z", "target": "organizations/123456789012/locations/global/policyBindings/example-binding", "verb": "update", "requestedCancellation": false, "apiVersion": "v3" }, "done": false }
檢查長時間執行的作業狀態
使用 REST API 或用戶端程式庫時,凡是會變更主體存取權界線政策或繫結的方法,都會傳回長時間執行的作業 (LRO)。這項長時間執行的作業會追蹤要求狀態,並指出政策或繫結的變更是否完成。
REST
operations.get
方法會傳回長時間執行作業的狀態。使用任何要求資料之前,請先替換以下項目:
-
OPERATION_NAME
:作業的完整名稱。您會在原始要求的相關回覆中收到這個名稱。作業名稱的格式如下:
RESOURCE_TYPE/RESOURCE_ID/locations/global/operations/OPERATION_ID
HTTP 方法和網址:
GET https://iam.googleapis.com/v3/OPERATION_NAME
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "name": "organizations/314340013352/locations/global/operations/operation-1732752311821-627edd607a3df-9a62cdea-2a7d9f07", "metadata": { "@type": "type.googleapis.com/google.iam.v3.OperationMetadata", "createTime": "2024-11-28T00:05:12.006289686Z", "endTime": "2024-11-28T00:05:12.192141801Z", "target": "organizations/314340013352/locations/global/principalAccessBoundaryPolicies/example-policy", "verb": "create", "requestedCancellation": false, "apiVersion": "v3" }, "done": true, "response": { PAB_POLICY } }
如果作業的
done
欄位不存在,請繼續重複取得作業,監控作業狀態。使用部分指數輪詢,在每次要求之間加入延遲。當done
欄位設為true
時,即代表作業完成,您可以停止取得作業。後續步驟
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-08-20 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-08-20 (世界標準時間)。"],[[["Principal access boundary (PAB) policies allow for limiting the resources that a set of principals can access, and this document covers how to modify those policies."],["To edit a PAB policy, you can use the Google Cloud console, the gcloud CLI, or the IAM REST API to add, remove, or modify policy rules, display names, and enforcement versions."],["To change who a PAB policy applies to, you can modify the conditions within a policy binding, create a new binding, or delete an existing binding, which can be done using the Google Cloud Console, gcloud CLI, or REST API."],["Editing policy bindings requires specific IAM roles depending on the principal set involved, including roles like `Principal Access Boundary User`, `IAM Workforce Pool Admin`, and `Organization Administrator`, among others."],["The gcloud CLI and REST API use long-running operations (LROs) to manage updates to policies and bindings, requiring checks on the operation's status to ensure completion."]]],[]]