本頁說明如何排解 Identity and Access Management (IAM) 允許、拒絕和主體存取邊界政策的問題。
查看適用於資源的所有允許和拒絕政策
在 Cloud de Confiance中,下列允許和拒絕政策會影響資源存取權:
- 資源的允許政策
- 資源的拒絕政策 (如有)
- 資源的父項專案、資料夾和機構的允許政策 (如有)
- 資源的父項專案、資料夾和機構的拒絕政策 (如有)
由於政策繼承,父項專案、資料夾和機構的允許和拒絕政策會影響資源存取權。將允許或拒絕政策附加至專案、資料夾或機構時,該政策也會套用至專案、資料夾或機構內的所有資源。
舉例來說,如果機構的拒絕政策規定主體不得使用特定權限,則主體無法在機構內的任何資源使用該權限。即使該機構中的資料夾和專案有較寬鬆的拒絕政策,或是允許政策授予主體權限,這項規則仍適用。
同樣地,如果專案的允許政策授予主體特定權限,則主體在專案中的任何資源都具有該權限,前提是未遭拒絕該權限。
所有這些政策的聯集稱為資源的「適用政策」或「有效政策」。
在 Cloud de Confiance中,您可以使用帶有 --include-deny 旗標的 gcloud beta projects
get-ancestors-iam-policy 指令,取得影響專案存取權的所有允許和拒絕政策清單。這些政策共同構成專案的適用政策。您可以調查每項政策,瞭解政策對主體存取權的影響。
gcloud
使用下方的任何指令資料之前,請先替換以下項目:
PROJECT_ID:您的 Cloud de Confiance 專案 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 中建立服務帳戶,系統會拒絕該要求。
在某些情況下,您可能只需要查看資源的有效允許政策,例如貴機構未使用拒絕政策。在這些情況下,您可以使用下列方法查看有效允許政策:
在Cloud de Confiance 控制台中查看資源的 IAM 允許政策。控制台會自動顯示每個資源的有效政策。 Cloud de Confiance
如要瞭解如何在Cloud de Confiance 控制台中查看資源的 IAM 允許政策,請參閱「查看目前的存取權」。
使用 Cloud Asset API 取得資源的有效允許政策。詳情請參閱「查看有效的 IAM 政策」。