本頁說明如何排解 Identity and Access Management (IAM) 允許、拒絕和主體存取邊界政策的問題。
使用政策疑難排解工具
如要排解特定主體的存取權問題,請使用 IAM 政策疑難排解工具。
政策疑難排解工具可協助您瞭解主體是否能存取資源。指定主體、資源和權限後,政策疑難排解工具會檢查影響主體存取權的允許政策、拒絕政策和主體存取權範圍 (PAB) 政策。然後,根據這些政策,系統會告知主體是否能使用指定權限存取資源。並列出相關政策,說明這些政策對主體存取權的影響。如要瞭解如何使用政策疑難排解工具排解允許政策、拒絕政策和主體存取邊界政策的問題,請參閱「排解 IAM 權限問題」。
查看適用於資源的所有允許和拒絕政策
在 Google Cloud中,下列允許和拒絕政策會影響資源存取權:
- 資源的允許政策
- 資源的拒絕政策 (如有)
- 資源的父項專案、資料夾和機構的允許政策 (如有)
- 資源的父項專案、資料夾和機構的拒絕政策 (如有)
由於政策繼承,父項專案、資料夾和機構的允許和拒絕政策會影響資源存取權。將允許或拒絕政策附加至專案、資料夾或機構時,該政策也會套用至專案、資料夾或機構內的所有資源。
舉例來說,如果機構的拒絕政策規定主體不得使用特定權限,則主體無法在機構內的任何資源使用該權限。即使該機構中的資料夾和專案有較寬鬆的拒絕政策,或是允許政策授予主體權限,這項規則仍適用。
同樣地,如果專案的允許政策授予主體特定權限,則主體在專案中的任何資源都具有該權限,前提是未遭拒絕該權限。
所有這些政策的聯集稱為資源的「適用政策」或「有效政策」。
在 Google Cloud中,您可以使用帶有 --include-deny
旗標的 gcloud beta projects
get-ancestors-iam-policy
指令,取得影響專案存取權的所有允許和拒絕政策清單。這些政策共同構成專案的適用政策。您可以調查每項政策,瞭解政策對主體存取權的影響。
gcloud
使用下方的任何指令資料之前,請先替換以下項目:
PROJECT_ID
:您的 Google 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": [ "group:cloud-admins@example.com" ], "role": "roles/iam.denyAdmin" }, { "members": [ "user:raha@example.com" ], "role": "roles/iam.serviceAccountAdmin" } ], "etag": "BwXW6Eab7TI=", "version": 1 }, "type": "organization" }, { "id": "my-project", "policy": { "bindings": [ { "members": [ "group:cloud-admins@example.com" ], "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": [ "user: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
中建立服務帳戶,系統會拒絕該要求。
在某些情況下,您可能只需要查看資源的有效允許政策,例如貴機構未使用拒絕政策。在這些情況下,您可以使用下列方法查看有效允許政策:
在Google Cloud 控制台中查看資源的 IAM 允許政策。控制台會自動顯示每個資源的有效政策。 Google Cloud
如要瞭解如何在Google Cloud 控制台中查看資源的 IAM 允許政策,請參閱「查看目前的存取權」。
使用 Cloud Asset API 取得資源的有效允許政策。詳情請參閱「查看有效的 IAM 政策」。
搜尋允許政策
如要在允許政策中找出特定角色繫結,可以搜尋允許政策。
Cloud Asset Inventory 可讓您搜尋符合指定參數的角色繫結允許政策。您可以使用各種搜尋參數,包括:
- 資源類型
- 主體類型
- 角色
- 專案
- 資料夾
- 機構
詳情請參閱「搜尋 IAM 允許政策」。