主體存取邊界 (PAB) 政策可限制一組主體可存取的資源。本頁說明如何編輯現有的主體存取權範圍政策,以及如何編輯主體存取權範圍政策的政策繫結,以變更政策適用對象。
事前準備
設定驗證方法。
選取這個頁面上的分頁,瞭解如何使用範例:
gcloud
在 Google Cloud 控制台中啟用 Cloud Shell。
Google Cloud 主控台底部會開啟一個 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
閱讀主體存取邊界政策總覽。
編輯主體存取邊界政策所需的角色
如要取得編輯主體存取邊界政策所需的權限,請要求系統管理員授予您機構的主體存取權範圍管理員 (roles/iam.principalAccessBoundaryAdmin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備 iam.principalaccessboundarypolicies.update 權限,可編輯主體存取邊界政策。
編輯主體存取邊界政策繫結所需的角色
如要編輯主體存取邊界政策的政策繫結,所需權限取決於繫結至政策的主體集。
如要取得編輯主體存取邊界政策的政策繫結所需的權限,請要求管理員授予您下列 IAM 角色:
- 機構的主體存取權範圍使用者 (
roles/iam.principalAccessBoundaryUser) -
編輯繫結至工作團隊身分集區的主體存取權界線政策:
目標工作團隊身分集區的身分與存取權管理工作團隊集區管理員 (
roles/iam.workforcePoolAdmin) -
編輯繫結至 workload identity pool 的主體存取權界線政策:
在擁有目標 workload identity pool 的專案中,使用「身分與存取權管理 Workload Identity Pool 管理員」 (
roles/iam.workloadIdentityPoolAdmin) -
取得編輯繫結的長時間執行的作業狀態,該繫結會參照 workload identity pool:
目標 workload identity pool 所屬專案的「IAM 作業檢視者」 (
roles/iam.operationViewer) -
編輯繫結至 Google Workspace 網域的主體存取權界線政策:
Workspace Pool IAM 管理員 (
roles/iam.workspacePoolAdmin) 在機構中 -
編輯繫結至專案主體集的政策主體存取邊界政策:
專案的專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin) -
取得編輯繫結的長時間執行的作業狀態,該繫結參照專案的主體集:
專案的「IAM 作業檢視者 」(
roles/iam.operationViewer) -
編輯繫結至資料夾主體集的資料夾主體存取權範圍政策:
資料夾 IAM 管理員 (
roles/resourcemanager.folderIamAdmin) 資料夾 -
編輯繫結至機構主體集的機構主體存取權範圍政策:
機構的機構管理員 (
roles/resourcemanager.organizationAdmin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備編輯主體存取邊界政策的政策繫結所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要編輯主體存取邊界政策的政策繫結,必須具備下列權限:
-
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在機構
編輯現有的主體存取邊界政策
如要新增或移除主體存取邊界政策的規則,或是修改主體存取邊界政策的中繼資料,請編輯主體存取邊界政策。
您可以使用 Google Cloud 控制台、gcloud CLI 或 IAM REST API 編輯主體存取權界線政策。
控制台
前往 Google Cloud 控制台的「Principal Access Boundary policies」(主體存取邊界政策) 頁面。
選取要編輯主體存取權範圍政策的機構。
按一下要編輯的主體存取邊界政策 ID。
點選 「編輯政策」。
如要編輯政策規則,請按照下列步驟操作:
- 按一下要編輯的規則。
- 編輯規則說明,或規則中包含的資源。
- 按一下 [完成]。
如要從政策中刪除規則,請按一下該規則列中的「刪除」。
如要編輯政策的顯示名稱,請編輯「顯示名稱」欄位。
如要編輯政策的強制執行版本,請點選「強制執行版本」清單,然後選擇新值。
選用:如要使用 Policy Simulator 測試主體存取邊界政策的變更,請按一下「測試變更」。查看模擬結果,並視需要更新政策。
如要進一步瞭解如何使用 Policy Simulator 測試主體存取邊界政策,請參閱「主體存取邊界政策的 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、4和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 或主體集。因此,如要變更主體存取邊界政策的強制執行對象,請執行下列其中一項操作:
- 如要調整主體存取邊界政策的強制執行對象,可以修改政策繫結中的條件。如要修改繫結中的條件,請編輯政策繫結。
- 如要為其他主體集強制執行主體存取邊界政策,請建立新的政策繫結,將政策繫結至該主體集。
- 如要從主體集移除主體存取邊界政策,請刪除將政策繫結至主體集的政策繫結。
編輯主體存取邊界政策的現有政策繫結
建立政策繫結後,您可以編輯繫結,修改繫結中的條件或繫結的顯示名稱。
您可以使用 Google Cloud 控制台、gcloud CLI 或 IAM REST API 編輯政策繫結。
控制台
前往 Google Cloud 控制台的「Principal Access Boundary policies」(主體存取邊界政策) 頁面。
選取要編輯主體存取權範圍政策的機構。
按一下要編輯繫結的主體存取邊界政策 ID。
按一下「Bindings」(繫結) 分頁標籤。
找出要編輯的繫結 ID。在該繫結的資料列中,依序點選「動作」和「編輯繫結」。
如要更新繫結的顯示名稱,請編輯「顯示名稱」欄位。
如要為繫結新增條件,請按照下列步驟操作:
- 按一下「新增條件」。
- 在「Title」(標題) 欄位中,輸入條件用途的簡要摘要。
- 選用:在「Description」(說明) 欄位中輸入條件的詳細說明。
- 在「運算式」欄位中,輸入使用一般運算語言 (CEL) 語法的條件運算式。運算式必須參照
principal.type或principal.subject屬性。系統不支援其他屬性。 - 按一下 [儲存]。
如要更新現有條件,請執行下列步驟:
- 按一下條件名稱旁邊的「編輯條件」。
- 更新條件的標題、說明或運算式。
- 按一下 [儲存]。
選用:如要使用 Policy Simulator 測試主體存取邊界政策繫結的變更,請按一下「測試變更」。查看模擬結果,並視需要更新政策繫結。
如要進一步瞭解如何使用 Policy Simulator 測試主體存取邊界政策,請參閱「主體存取邊界政策的 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 時,即代表作業完成,您可以停止取得作業。