本頁說明如何排解 Identity and Access Management (IAM) 允許、拒絕和主體存取邊界政策的問題。
查看適用於資源的所有允許和拒絕政策
在 Trusted Cloud中,下列允許和拒絕政策會影響資源存取權:
- 資源的允許政策
- 資源的拒絕政策 (如有)
- 資源的父項專案、資料夾和機構的允許政策 (如有)
- 資源的父項專案、資料夾和機構的拒絕政策 (如有)
由於政策繼承,父項專案、資料夾和機構的允許和拒絕政策會影響資源存取權。將允許或拒絕政策附加至專案、資料夾或機構時,該政策也會套用至專案、資料夾或機構內的所有資源。
舉例來說,如果機構的拒絕政策規定主體不得使用特定權限,則主體無法在機構內的任何資源使用該權限。即使該機構中的資料夾和專案有較寬鬆的拒絕政策,或是允許政策授予主體權限,這項規則仍適用。
同樣地,如果專案的允許政策授予主體特定權限,則主體在專案中的任何資源都具有該權限,前提是未遭拒絕該權限。
所有這些政策的聯集稱為資源的「適用政策」或「有效政策」。
在 Trusted Cloud中,您可以使用帶有 --include-deny
旗標的 gcloud beta projects
get-ancestors-iam-policy
指令,取得影響專案存取權的所有允許和拒絕政策清單。這些政策共同構成專案的適用政策。您可以調查每項政策,瞭解政策對主體存取權的影響。
gcloud
使用下方的任何指令資料之前,請先替換以下項目:
PROJECT_ID
:您的 Trusted Cloud 專案 ID。專案 ID 為英數字串,例如my-project
。
執行
gcloud beta projects get-ancestors-iam-policy
指令:
Linux、macOS 或 Cloud Shell
gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json
Windows (PowerShell)
gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json
Windows (cmd.exe)
gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json
回應會包含專案、專案的任何上層資料夾和機構的允許與拒絕政策。以下範例顯示組織 1234567890123
和專案 my-project
的允許政策,以及專案 my-project
的拒絕政策:
[ { "id": "1234567890123", "policy": { "bindings": [ { "members": [ "principalSet://iam.googleapis.com/locations/global/workforcePools/example-pool/group/cloud-admins" ], "role": "roles/iam.denyAdmin" }, { "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/raha@example.com" ], "role": "roles/iam.serviceAccountAdmin" } ], "etag": "BwXW6Eab7TI=", "version": 1 }, "type": "organization" }, { "id": "my-project", "policy": { "bindings": [ { "members": [ "principalSet://iam.googleapis.com/locations/global/workforcePools/example-pool/group/cloud-admins" ], "role": "roles/owner" } ], "etag": "BwXXjOM7L6M=", "type": "project" } }, { "id": "my-project", "policy": { "createTime": "2022-02-14T21:46:35.865279Z", "displayName": "My deny policy", "etag": "MTgyMzg2ODcwNTEyMjMxMTM3Mjg=", "kind": "DenyPolicy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F123456789012/denypolicies/my-deny-policy", "rules": [ { "denyRule": { "deniedPermissions": [ "iam.googleapis.com/serviceAccounts.create" ], "deniedPrincipals": [ "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/raha@example.com" ] }, "description": "Prevent service account creation" } ], "uid": "c83e3dc3-d8a6-6f51-4018-814e9f200b05", "updateTime": "2022-02-14T21:46:35.865279Z" }, "type": "project" } ]
在這個範例中,Raha 在機構中獲派服務帳戶管理員角色 (roles/iam.serviceAccountAdmin
),但專案設有拒絕政策,禁止 Raha 使用 iam.googleapis.com/serviceAccounts.create
權限。因此,如果 Raha 嘗試在專案 my-project
中建立服務帳戶,系統會拒絕該要求。
在某些情況下,您可能只需要查看資源的有效允許政策,例如貴機構未使用拒絕政策。在這些情況下,您可以使用下列方法查看有效允許政策:
在Trusted Cloud 控制台中查看資源的 IAM 允許政策。控制台會自動顯示每個資源的有效政策。 Trusted Cloud
如要瞭解如何在Trusted Cloud 控制台中查看資源的 IAM 允許政策,請參閱「查看目前的存取權」。
使用 Cloud Asset API 取得資源的有效允許政策。詳情請參閱「查看有效的 IAM 政策」。