這個頁面說明如何使用政策分析工具分析允許政策,找出哪些主體 (使用者、服務帳戶、群組和網域) 具備哪些Google Cloud 資源的存取權。
本頁的範例說明如何執行政策分析查詢,並立即查看結果。如要匯出結果以進行進一步分析,可以使用 AnalyzeIamPolicyLongrunning
將查詢結果寫入 BigQuery 或 Cloud Storage。
事前準備
Enable the Cloud Asset API.
您必須在用於傳送查詢的專案中啟用 API。這不一定要是您查詢範圍內的資源。
選用:瞭解政策分析器運作方式。
選用:如要每天對每個機構執行超過 20 項政策分析查詢,請確保您已在機構層級啟用 Security Command Center 的 Premium 或 Enterprise 方案。詳情請參閱帳單問題。
必要角色和權限
如要分析允許政策,必須具備下列角色和權限。
必要 IAM 角色
如要取得分析允許政策所需的權限,請要求管理員在您要查詢的專案、資料夾或機構中,授予下列 IAM 角色:
-
Cloud Asset Viewer (
roles/cloudasset.viewer
) -
如要分析含有自訂 IAM 角色的政策:
角色檢視者 (
roles/iam.roleViewer
) -
如要使用 Google Cloud CLI 分析政策,請按照下列步驟操作:
服務用量消費者 (
roles/serviceusage.serviceUsageConsumer
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這些預先定義的角色具備分析允許政策所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要分析允許政策,必須具備下列權限:
-
cloudasset.assets.analyzeIamPolicy
-
cloudasset.assets.searchAllResources
-
cloudasset.assets.searchAllIamPolicies
-
如要使用自訂 IAM 角色分析政策,請按照下列步驟操作:
iam.roles.get
-
如要使用 Google Cloud CLI 分析政策,請按照下列步驟操作:
serviceusage.services.use
所需的 Google Workspace 權限
如要展開查詢結果中的群組,查看主體是否因加入 Google Workspace 群組而擁有特定角色或權限,您需要 groups.read
Google Workspace 權限。「網路論壇檢視者管理員」角色和「網路論壇管理員」或「超級管理員」等權限較高的角色,都具備這項權限。如要瞭解如何授予這些角色,請參閱「指派特定管理員角色」。
判斷哪些主體可以存取資源
您可以使用政策分析工具,檢查專案、資料夾或機構中,哪些主體對特定資源具有特定角色或權限。如要取得這項資訊,請建立查詢,其中包含要分析存取權的資源,以及要檢查的一或多個角色或權限。
控制台
前往 Google Cloud 控制台的「政策分析器」頁面。
在「分析政策」部分,找出標示為「自訂查詢」的窗格,然後點按該窗格中的「建立自訂查詢」。
在「選取查詢範圍」欄位中,選取要將查詢範圍限定在其中的專案、資料夾或機構。Policy Analyzer 會分析該專案、資料夾或機構的存取權,以及該專案、資料夾或機構中的所有資源。
選擇要檢查的資源,以及要檢查的角色或權限:
- 在「Parameter 1」(參數 1) 欄位中,從下拉式選單選取「Resource」(資源)。
- 在「資源」欄位中,輸入要分析存取權的資源完整資源名稱。如果您不知道完整資源名稱,請輸入資源的顯示名稱,然後從系統提供的資源清單中選取資源。
- 按一下「新增選取器」 。
- 在「Parameter 2」(參數 2) 欄位中,選取「Role」(角色) 或「Permission」(權限)。
- 在「選取角色」或「選取權限」欄位中,選取要檢查的角色或權限。
- 選用:如要檢查其他角色和權限,請繼續新增「角色」和「權限」選取器,直到列出所有要檢查的角色和權限為止。
選用:按一下「繼續」,然後選取要為這項查詢啟用的進階選項。
在「自訂查詢」窗格中,依序點選「分析」>「執行查詢」。 報表頁面會顯示您輸入的查詢參數,以及結果表格,其中列出指定資源中具備指定角色或權限的所有主體。
在 Google Cloud 控制台中,政策分析查詢最多可執行一分鐘。一分鐘後, Google Cloud 控制台會停止查詢,並顯示所有可用結果。如果查詢未在該時間內完成, Google Cloud 控制台會顯示橫幅,指出結果不完整。如要取得這些查詢的更多結果,請將結果匯出至 BigQuery。
gcloud
使用下方的任何指令資料之前,請先替換以下項目:
RESOURCE_TYPE
:您要將搜尋範圍限定在的資源類型。系統只會分析附加至這項資源及其後代的 IAM 允許政策。請使用project
、folder
或organization
值。RESOURCE_ID
:要將搜尋範圍限定於其中的Google Cloud 專案、資料夾或機構的 ID。系統只會分析附加至這項資源及其後代的 IAM 允許政策。專案 ID 是英數字元字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。FULL_RESOURCE_NAME
:要分析存取權的資源完整資源名稱。如需完整資源名稱格式清單,請參閱「資源名稱格式」。PERMISSIONS
:以半形逗號分隔的權限清單,列出您要檢查的權限,例如compute.instances.get,compute.instances.start
。如果您列出多項權限,政策分析工具會檢查是否列出任何權限。
執行 gcloud asset analyze-iam-policy 指令:
Linux、macOS 或 Cloud Shell
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \ --full-resource-name=FULL_RESOURCE_NAME \ --permissions='PERMISSIONS'
Windows (PowerShell)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ` --full-resource-name=FULL_RESOURCE_NAME ` --permissions='PERMISSIONS'
Windows (cmd.exe)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^ --full-resource-name=FULL_RESOURCE_NAME ^ --permissions='PERMISSIONS'
您會收到包含分析結果的 YAML 回應。每項分析結果都會列出與查詢相關的一組存取權、身分和資源,以及相關的 IAM 角色繫結。如果角色繫結設有條件,分析結果也會包含條件評估結果。如果無法評估條件,結果為 CONDITIONAL
。
回應中的 identities
欄位會列出對指定資源具有任何指定權限的主體。以下範例顯示單一分析結果,並醒目顯示 identities
欄位。
... --- ACLs: - accesses: - permission: compute.instances.get - permission: compute.instances.start identities: - name: user:my-user@example.com resources: - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project policy: attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project binding: members: - user: my-user@example.com role: roles/compute.admin --- ...
如果要求在查詢完成前逾時,您會收到 DEADLINE_EXCEEDED
錯誤。如要取得這些查詢的更多結果,請使用 analyze-iam-policy
的長時間執行版本,將結果寫入 BigQuery 或 Cloud Storage。如需操作說明,請參閱「將政策分析結果寫入 BigQuery」或「將政策分析結果寫入 Cloud Storage」。
REST
如要判斷哪些主體具備資源的特定權限,請使用 Cloud Asset Inventory API 的 analyzeIamPolicy
方法。
使用任何要求資料之前,請先替換以下項目:
RESOURCE_TYPE
:您要將搜尋範圍限定在的資源類型。系統只會分析附加至這項資源及其後代的 IAM 允許政策。請使用projects
、folders
或organizations
值。RESOURCE_ID
:要將搜尋範圍限定於其中的Google Cloud 專案、資料夾或機構的 ID。系統只會分析附加至這項資源及其後代的 IAM 允許政策。專案 ID 是英數字元字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。FULL_RESOURCE_NAME
:要分析存取權的資源完整資源名稱。如需完整資源名稱格式清單,請參閱「資源名稱格式」。PERMISSION_1
、PERMISSION_2
...PERMISSION_N
:您要檢查的權限,例如compute.instances.get
。如果您列出多項權限,政策分析工具會檢查是否列出任何權限。
HTTP 方法和網址:
POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy
JSON 要求主體:
{ "analysisQuery": { "resourceSelector": { "fullResourceName": "FULL_RESOURCE_NAME" }, "accessSelector": { "permissions": [ "PERMISSION_1", "PERMISSION_2", "PERMISSION_N" ] } } }
如要傳送要求,請展開以下其中一個選項:
您會收到含有分析結果的 JSON 回應。每項分析結果都會說明相關的 IAM 角色繫結,然後列出該繫結中的資源、存取權和主體。如果角色繫結設有條件,分析結果也會包含條件評估結果。如果無法評估條件,結果會列為 CONDITIONAL
。
回應中的 identities
欄位會列出對指定資源具有任何指定權限的主體。以下範例顯示單一分析結果,並醒目顯示 identities
欄位。
... { "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project", "iamBinding": { "role": "roles/compute.admin", "members": [ "user:my-user@example.com" ] }, "accessControlLists": [ { "resources": [ { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project" } ], "accesses": [ { "permission": "compute.instances.get" }, { "permission": "compute.instances.start" } ] } ], "identityList": { "identities": [ { "name": "user:my-user@example.com" } ] }, "fullyExplored": true }, ...
如果要求在查詢完成前逾時,您會收到 DEADLINE_EXCEEDED
錯誤。如要取得這些查詢的更多結果,請使用 analyzeIamPolicy
的長時間執行版本,將結果寫入 BigQuery 或 Cloud Storage。如需操作說明,請參閱「將政策分析結果寫入 BigQuery」或「將政策分析結果寫入 Cloud Storage」。
判斷哪些主體具備特定角色或權限
您可以使用政策分析工具,查看貴機構中哪些主體在任何 Google Cloud 資源上具有特定角色或權限。如要取得這項資訊,請建立查詢,其中包含一或多個要檢查的角色或權限,但未指定資源。
控制台
前往 Google Cloud 控制台的「政策分析器」頁面。
在「分析政策」部分,找出標示為「自訂查詢」的窗格,然後點按該窗格中的「建立自訂查詢」。
在「選取查詢範圍」欄位中,選取要將查詢範圍限定在其中的專案、資料夾或機構。Policy Analyzer 會分析該專案、資料夾或機構的存取權,以及該專案、資料夾或機構中的所有資源。
在「Parameter 1」(參數 1) 欄位中,選取「Role」(角色) 或「Permission」(權限)。
在「Select a role」(選取角色) 或「Select a permission」(選取權限) 欄位中,選取要檢查的角色或權限。
選用:如要查看其他角色和權限,請執行下列步驟:
- 按一下「新增選取器」 。
- 在「Parameter 2」(參數 2) 欄位中,選取「Role」(角色) 或「Permission」(權限)。
- 在「選取角色」或「選取權限」欄位中,選取要檢查的角色或權限。
- 繼續新增「角色」和「權限」選取器,直到列出所有要檢查的角色和權限為止。
選用:按一下「繼續」,然後選取要為這項查詢啟用的任何進階選項。
在「自訂查詢」窗格中,依序點選「分析」>「執行查詢」。 報表頁面會顯示您輸入的查詢參數,以及所有主體的結果表格,這些主體在任何範圍內資源上都具有指定的角色或權限。
在 Google Cloud 控制台中,政策分析查詢最多可執行一分鐘。一分鐘後, Google Cloud 控制台會停止查詢,並顯示所有可用結果。如果查詢未在該時間內完成, Google Cloud 控制台會顯示橫幅,指出結果不完整。如要取得這些查詢的更多結果,請將結果匯出至 BigQuery。
gcloud
使用下方的任何指令資料之前,請先替換以下項目:
RESOURCE_TYPE
:您要將搜尋範圍限定在的資源類型。系統只會分析附加至這項資源及其後代的 IAM 允許政策。請使用project
、folder
或organization
值。RESOURCE_ID
:要將搜尋範圍限定於其中的Google Cloud 專案、資料夾或機構的 ID。系統只會分析附加至這項資源及其後代的 IAM 允許政策。專案 ID 是英數字元字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。ROLES
:以逗號分隔的清單,列出要檢查的角色,例如roles/compute.admin,roles/compute.imageUser
。如果您列出多個角色,政策分析器會檢查是否符合任何列出的角色。PERMISSIONS
:以半形逗號分隔的權限清單,列出您要檢查的權限,例如compute.instances.get,compute.instances.start
。如果您列出多項權限,政策分析工具會檢查是否列出任何權限。
執行 gcloud asset analyze-iam-policy 指令:
Linux、macOS 或 Cloud Shell
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \ --roles='ROLES' \ --permissions='PERMISSIONS'
Windows (PowerShell)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ` --roles='ROLES' ` --permissions='PERMISSIONS'
Windows (cmd.exe)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^ --roles='ROLES' ^ --permissions='PERMISSIONS'
您會收到含有分析結果的 JSON 回應。每項分析結果都會說明相關的 IAM 角色繫結,然後列出該繫結中的資源、存取權和主體。如果角色繫結設有條件,分析結果也會包含條件評估結果。如果無法評估條件,結果會列為 CONDITIONAL
。
回應的 identities
欄位會列出具有任何指定角色或權限的主體。以下範例顯示單一分析結果,並醒目顯示 identities
欄位。
... --- ACLs: - accesses: - permission: compute.instances.get - permission: compute.instances.start - role: roles/compute.admin identities: - name: user:my-user@example.com resources: - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project policy: attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project binding: members: - user: my-user@example.com role: roles/compute.admin --- ...
如果要求在查詢完成前逾時,您會收到 DEADLINE_EXCEEDED
錯誤。如要取得這些查詢的更多結果,請使用 analyze-iam-policy
的長時間執行版本,將結果寫入 BigQuery 或 Cloud Storage。如需操作說明,請參閱「將政策分析結果寫入 BigQuery」或「將政策分析結果寫入 Cloud Storage」。
REST
如要判斷哪些主體具有特定角色或權限,請使用 Cloud Asset Inventory API 的
analyzeIamPolicy
方法。
使用任何要求資料之前,請先替換以下項目:
RESOURCE_TYPE
:您要將搜尋範圍限定在的資源類型。系統只會分析附加至這項資源及其後代的 IAM 允許政策。請使用projects
、folders
或organizations
值。RESOURCE_ID
:要將搜尋範圍限定於其中的Google Cloud 專案、資料夾或機構的 ID。系統只會分析附加至這項資源及其後代的 IAM 允許政策。專案 ID 是英數字元字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。ROLE_1
、ROLE_2
...ROLE_N
:要檢查的角色,例如roles/compute.admin
。如果您列出多個角色,政策分析工具會檢查是否列出任何角色。PERMISSION_1
、PERMISSION_2
...PERMISSION_N
:您要檢查的權限,例如compute.instances.get
。如果您列出多項權限,政策分析工具會檢查是否列出任何權限。
HTTP 方法和網址:
POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy
JSON 要求主體:
{ "analysisQuery": { "accessSelector": { "roles": [ "ROLE_1", "ROLE_2", "ROLE_N" ], "permissions": [ "PERMISSION_1", "PERMISSION_2", "PERMISSION_N" ] } } }
如要傳送要求,請展開以下其中一個選項:
您會收到含有分析結果的 JSON 回應。每項分析結果都會說明相關的 IAM 角色繫結,然後列出該繫結中的資源、存取權和主體。如果角色繫結設有條件,分析結果也會包含條件評估結果。如果無法評估條件,結果會列為 CONDITIONAL
。
回應的 identities
欄位會列出具有任何指定角色或權限的主體。以下範例顯示單一分析結果,並醒目顯示 identities
欄位。
... { "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project", "iamBinding": { "role": "roles/compute.admin", "members": [ "user:my-user@example.com" ] }, "accessControlLists": [ { "resources": [ { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project" } ], "accesses": [ { "permission": "compute.instances.get" }, { "role": "roles/compute.admin" } ] } ], "identityList": { "identities": [ { "name": "user:my-user@example.com" } ] }, "fullyExplored": true }, ...
如果要求在查詢完成前逾時,您會收到 DEADLINE_EXCEEDED
錯誤。如要取得這些查詢的更多結果,請使用 analyzeIamPolicy
的長時間執行版本,將結果寫入 BigQuery 或 Cloud Storage。如需操作說明,請參閱「將政策分析結果寫入 BigQuery」或「將政策分析結果寫入 Cloud Storage」。
判斷主體對資源的存取權
您可以使用 Policy Analyzer,檢查主體在貴機構的資源中擁有哪些角色或權限。如要取得這項資訊,請建立查詢,其中包含要分析存取權的主體,以及要分析存取權的資源。
控制台
前往 Google Cloud 控制台的「政策分析器」頁面。
在「分析政策」部分,找出標示為「自訂查詢」的窗格,然後點按該窗格中的「建立自訂查詢」。
在「選取查詢範圍」欄位中,選取要將查詢範圍限定在其中的專案、資料夾或機構。Policy Analyzer 會分析該專案、資料夾或機構的存取權,以及該專案、資料夾或機構中的所有資源。
選擇要檢查的資源和主體:
- 在「Parameter 1」(參數 1) 欄位中,從下拉式選單選取「Resource」(資源)。
- 在「資源」欄位中,輸入要分析存取權的資源完整資源名稱。如果您不知道完整資源名稱,請輸入資源的顯示名稱,然後從系統提供的資源清單中選取資源。
- 按一下「新增選取器」 。
- 在「Parameter 2」欄位中,從下拉式選單選取「Principal」。
- 在「主體」欄位中,開始輸入使用者、服務帳戶或群組的名稱。然後從系統提供的主體清單中,選取要分析存取權的使用者、服務帳戶或群組。
選用:按一下「繼續」,然後選取要為這項查詢啟用的進階選項。
在「自訂查詢」窗格中,依序點選「分析」>「執行查詢」。 報表頁面會顯示您輸入的查詢參數,以及指定主體在指定資源上擁有的所有角色結果表。
在 Google Cloud 控制台中執行的政策分析查詢最多可執行一分鐘。一分鐘後, Google Cloud 控制台會停止查詢,並顯示所有可用結果。如果查詢未在該時間內完成, Google Cloud 控制台會顯示橫幅,指出結果不完整。如要取得這些查詢的更多結果,請將結果匯出至 BigQuery。
gcloud
使用下方的任何指令資料之前,請先替換以下項目:
RESOURCE_TYPE
:您要將搜尋範圍限定在的資源類型。系統只會分析附加至這項資源及其後代的 IAM 允許政策。請使用project
、folder
或organization
值。RESOURCE_ID
:要將搜尋範圍限定於其中的Google Cloud 專案、資料夾或機構的 ID。系統只會分析附加至這項資源及其後代的 IAM 允許政策。專案 ID 是英數字元字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。FULL_RESOURCE_NAME
:要分析存取權的資源完整資源名稱。如需完整資源名稱格式清單,請參閱「資源名稱格式」。PRINCIPAL
:您要分析存取權的主體,格式為PRINCIPAL_TYPE:ID
,例如user:my-user@example.com
。如需主體類型的完整清單,請參閱「主體 ID」。
執行 gcloud asset analyze-iam-policy 指令:
Linux、macOS 或 Cloud Shell
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \ --full-resource-name=FULL_RESOURCE_NAME \ --identity=PRINCIPAL
Windows (PowerShell)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ` --full-resource-name=FULL_RESOURCE_NAME ` --identity=PRINCIPAL
Windows (cmd.exe)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^ --full-resource-name=FULL_RESOURCE_NAME ^ --identity=PRINCIPAL
您會收到包含分析結果的 YAML 回應。每項分析結果都會列出與查詢相關的一組存取權、身分和資源,以及相關的 IAM 角色繫結。如果角色繫結設有條件,分析結果也會包含條件評估結果。如果無法評估條件,結果為 CONDITIONAL
。
回應中的 accesses
欄位會列出主體在指定資源上擁有的角色。以下範例顯示單一分析結果,並醒目顯示 accesses
欄位。
... --- ACLs: - accesses: - roles/iam.serviceAccountUser identities: - name: user:my-user@example.com resources: - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project policy: attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project binding: members: - user: my-user@example.com role: roles/iam.serviceAccountUser --- ...
如果要求在查詢完成前逾時,您會收到 DEADLINE_EXCEEDED
錯誤。如要取得這些查詢的更多結果,請使用 analyze-iam-policy
的長時間執行版本,將結果寫入 BigQuery 或 Cloud Storage。如需操作說明,請參閱「將政策分析結果寫入 BigQuery」或「將政策分析結果寫入 Cloud Storage」。
REST
如要判斷主體對資源的存取權,請使用 Cloud Asset Inventory API 的 analyzeIamPolicy
方法。
使用任何要求資料之前,請先替換以下項目:
RESOURCE_TYPE
:您要將搜尋範圍限定於的資源類型。系統只會分析附加至這項資源及其後代的 IAM 允許政策。請使用projects
、folders
或organizations
值。RESOURCE_ID
:要將搜尋範圍限定於其中的Google Cloud 專案、資料夾或機構的 ID。系統只會分析附加至這項資源及其後代的 IAM 允許政策。專案 ID 是英數字元字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。FULL_RESOURCE_NAME
:要分析存取權的資源完整資源名稱。如需完整資源名稱格式清單,請參閱「資源名稱格式」。PRINCIPAL
:您要分析存取權的主體,格式為PRINCIPAL_TYPE:ID
,例如user:my-user@example.com
。如需主體類型的完整清單,請參閱「主體 ID」。
HTTP 方法和網址:
POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy
JSON 要求主體:
{ "analysisQuery": { "resourceSelector": { "fullResourceName": "FULL_RESOURCE_NAME" }, "identitySelector": { "identity": "PRINCIPAL" } } }
如要傳送要求,請展開以下其中一個選項:
您會收到含有分析結果的 JSON 回應。每項分析結果都會說明相關的 IAM 角色繫結,然後列出該繫結中的資源、存取權和主體。如果角色繫結設有條件,分析結果也會包含條件評估結果。如果無法評估條件,結果會列為 CONDITIONAL
。
回應中的 accesses
欄位會列出主體在指定資源上擁有的角色。以下範例顯示單一分析結果,並醒目顯示 accesses
欄位。
... { "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project", "iamBinding": { "role": "roles/iam.serviceAccountUser", "members": [ "user:my-user@example.com" ] }, "accessControlLists": [ { "resources": [ { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project" } ], "accesses": [ { "roles": "iam.serviceAccountUser" } ] } ], "identityList": { "identities": [ { "name": "user:my-user@example.com" } ] }, "fullyExplored": true }, ...
如果要求在查詢完成前逾時,您會收到 DEADLINE_EXCEEDED
錯誤。如要取得這些查詢的更多結果,請使用 analyzeIamPolicy
的長時間執行版本,將結果寫入 BigQuery 或 Cloud Storage。如需操作說明,請參閱「將政策分析結果寫入 BigQuery」或「將政策分析結果寫入 Cloud Storage」。
判斷主體可存取的資源
您可以使用政策分析工具,檢查機構內的主體對哪些資源具有特定角色或權限。如要取得這項資訊,請建立查詢,當中包含您要分析存取權的主體,以及您要檢查的一或多項權限或角色。
控制台
前往 Google Cloud 控制台的「政策分析器」頁面。
在「分析政策」部分,找出標示為「自訂查詢」的窗格,然後點按該窗格中的「建立自訂查詢」。
在「選取查詢範圍」欄位中,選取要將查詢範圍限定在其中的專案、資料夾或機構。Policy Analyzer 會分析該專案、資料夾或機構的存取權,以及該專案、資料夾或機構中的所有資源。
選擇要檢查的主體,以及要檢查的角色或權限:
- 在「Parameter 1」欄位中,從下拉式選單選取「Principal」。
- 在「主體」欄位中,開始輸入使用者、服務帳戶或群組的名稱。然後從系統提供的主體清單中,選取要分析存取權的使用者、服務帳戶或群組。
- 按一下「新增選取器」 。
- 在「Parameter 2」(參數 2) 欄位中,選取「Role」(角色) 或「Permission」(權限)。
- 在「選取角色」或「選取權限」欄位中,選取要檢查的角色或權限。
- 選用:如要檢查其他角色和權限,請繼續新增「角色」和「權限」選取器,直到列出所有要檢查的角色和權限為止。
選用:按一下「繼續」,然後選取要為這項查詢啟用的任何進階選項。
在「自訂查詢」窗格中,依序點選「分析」>「執行查詢」。 報表頁面會顯示您輸入的查詢參數,以及結果表格,其中列出指定主體具備指定角色或權限的所有資源。
在 Google Cloud 控制台中執行的政策分析查詢最多可執行一分鐘。一分鐘後, Google Cloud 控制台會停止查詢,並顯示所有可用結果。如果查詢未在該時間內完成, Google Cloud 控制台會顯示橫幅,指出結果不完整。如要取得這些查詢的更多結果,請將結果匯出至 BigQuery。
gcloud
使用下方的任何指令資料之前,請先替換以下項目:
RESOURCE_TYPE
:您要將搜尋範圍限定在的資源類型。系統只會分析附加至這項資源及其後代的 IAM 允許政策。請使用project
、folder
或organization
值。RESOURCE_ID
:要將搜尋範圍限定於其中的Google Cloud 專案、資料夾或機構的 ID。系統只會分析附加至這項資源及其後代的 IAM 允許政策。專案 ID 是英數字元字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。PRINCIPAL
:您要分析存取權的主體,格式為PRINCIPAL_TYPE:ID
,例如user:my-user@example.com
。如需主體類型的完整清單,請參閱「主體 ID」。PERMISSIONS
:以半形逗號分隔的權限清單,列出您要檢查的權限,例如compute.instances.get,compute.instances.start
。如果您列出多項權限,政策分析工具會檢查是否列出任何權限。
執行 gcloud asset analyze-iam-policy 指令:
Linux、macOS 或 Cloud Shell
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \ --identity=PRINCIPAL \ --permissions='PERMISSIONS'
Windows (PowerShell)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ` --identity=PRINCIPAL ` --permissions='PERMISSIONS'
Windows (cmd.exe)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^ --identity=PRINCIPAL ^ --permissions='PERMISSIONS'
您會收到包含分析結果的 YAML 回應。每項分析結果都會列出與查詢相關的一組存取權、身分和資源,以及相關的 IAM 角色繫結。如果角色繫結設有條件,分析結果也會包含條件評估結果。如果無法評估條件,結果為 CONDITIONAL
。
回應中的 resources
欄位會列出指定主體擁有任何指定權限的資源。以下範例顯示單一分析結果,並醒目顯示 resources
欄位。
... --- ACLs: - accesses: - permission: compute.instances.get - permission: compute.instances.start identities: - name: user:my-user@example.com resources: - fullResourceName: //compute.googleapis.com/projects/my-project/global/images/my-image policy: attachedResource: //compute.googleapis.com/projects/my-project/global/images/my-image binding: members: - user: my-user@example.com role: roles/compute.admin --- ...
如果要求在查詢完成前逾時,您會收到 DEADLINE_EXCEEDED
錯誤。如要取得這些查詢的更多結果,請使用 analyze-iam-policy
的長時間執行版本,將結果寫入 BigQuery 或 Cloud Storage。如需操作說明,請參閱「將政策分析結果寫入 BigQuery」或「將政策分析結果寫入 Cloud Storage」。
REST
如要判斷主體可以存取哪些資源,請使用 Cloud Asset Inventory API 的 analyzeIamPolicy
方法。
使用任何要求資料之前,請先替換以下項目:
RESOURCE_TYPE
:您要將搜尋範圍限定在的資源類型。系統只會分析附加至這項資源及其後代的 IAM 允許政策。請使用projects
、folders
或organizations
值。RESOURCE_ID
:要將搜尋範圍限定於其中的Google Cloud 專案、資料夾或機構的 ID。系統只會分析附加至這項資源及其後代的 IAM 允許政策。專案 ID 是英數字元字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。PRINCIPAL
:您要分析存取權的主體,格式為PRINCIPAL_TYPE:ID
,例如user:my-user@example.com
。如需主體類型的完整清單,請參閱「主體 ID」。PERMISSION_1
、PERMISSION_2
...PERMISSION_N
:您要檢查的權限,例如compute.instances.get
。如果您列出多項權限,政策分析工具會檢查是否列出任何權限。
HTTP 方法和網址:
POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy
JSON 要求主體:
{ "analysisQuery": { "identitySelector": { "identity": "PRINCIPAL" }, "accessSelector": { "permissions": [ "PERMISSION_1", "PERMISSION_2", "PERMISSION_N" ] } } }
如要傳送要求,請展開以下其中一個選項:
您會收到含有分析結果的 JSON 回應。每項分析結果都會說明相關的 IAM 角色繫結,然後列出該繫結中的資源、存取權和主體。如果角色繫結設有條件,分析結果也會包含條件評估結果。如果無法評估條件,結果會列為 CONDITIONAL
。
回應中的 resources
欄位會列出指定主體擁有任何指定權限的資源。以下範例顯示單一分析結果,並醒目顯示 resources
欄位。
... { "attachedResourceFullName": "//compute.googleapis.com/projects/my-project/global/images/my-image", "iamBinding": { "role": "roles/compute.admin", "members": [ "user:my-user@example.com" ] }, "accessControlLists": [ { "resources": [ { "fullResourceName": "//compute.googleapis.com/projects/my-project/global/images/my-image" } ], "accesses": [ { "permission": "compute.instances.get" }, { "permission": "compute.instances.start" } ] } ], "identityList": { "identities": [ { "name": "user:my-user@example.com" } ] }, "fullyExplored": true }, ...
如果要求在查詢完成前逾時,您會收到 DEADLINE_EXCEEDED
錯誤。如要取得這些查詢的更多結果,請使用 analyzeIamPolicy
的長時間執行版本,將結果寫入 BigQuery 或 Cloud Storage。如需操作說明,請參閱「將政策分析結果寫入 BigQuery」或「將政策分析結果寫入 Cloud Storage」。
判斷特定時間的存取權
如果提供足夠的背景資訊,政策分析器可以分析 IAM 條件式角色繫結,這類繫結只會在特定時間授予存取權。這些條件稱為「日期/時間條件」。 如要讓政策分析器準確分析具有日期/時間條件的角色繫結,您需要在要求中定義存取時間。
Policy Analyzer 也能分析資源條件,不需使用者額外輸入內容。如要進一步瞭解政策分析工具如何搭配條件使用,請參閱「條件式存取」一文。
gcloud
使用下方的任何指令資料之前,請先替換以下項目:
RESOURCE_TYPE
:您要將搜尋範圍限定在的資源類型。系統只會分析附加至這項資源及其後代的 IAM 允許政策。請使用project
、folder
或organization
值。RESOURCE_ID
:要將搜尋範圍限定於其中的Google Cloud 專案、資料夾或機構的 ID。系統只會分析附加至這項資源及其後代的 IAM 允許政策。專案 ID 是英數字元字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。PERMISSIONS
: 選用。以半形逗號分隔的權限清單,例如compute.instances.get,compute.instances.start
。如果您列出多項權限,政策分析工具會檢查是否列出任何權限。-
FULL_RESOURCE_NAME
:選用。您要分析存取權的資源完整資源名稱。如需完整資源名稱格式清單,請參閱「資源名稱格式」。 PERMISSIONS
: 選用。以半形逗號分隔的權限清單,例如compute.instances.get,compute.instances.start
。如果您列出多項權限,政策分析工具會檢查是否列出任何權限。ACCESS_TIME
:要檢查的時間。這個時間必須是未來的時間,使用 RFC 3339 格式的時間戳記,例如2099-02-01T00:00:00Z
。
執行 gcloud asset analyze-iam-policy 指令:
Linux、macOS 或 Cloud Shell
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID \ --identity=PRINCIPAL \ --full-resource-name=FULL_RESOURCE_NAME \ --permissions='PERMISSIONS' \ --access-time=ACCESS_TIME
Windows (PowerShell)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ` --identity=PRINCIPAL ` --full-resource-name=FULL_RESOURCE_NAME ` --permissions='PERMISSIONS' ` --access-time=ACCESS_TIME
Windows (cmd.exe)
gcloud asset analyze-iam-policy --RESOURCE_TYPE=RESOURCE_ID ^ --identity=PRINCIPAL ^ --full-resource-name=FULL_RESOURCE_NAME ^ --permissions='PERMISSIONS' ^ --access-time=ACCESS_TIME
您會收到包含分析結果的 YAML 回應。每項分析結果都會列出與查詢相關的一組存取權、身分和資源,以及相關的 IAM 角色繫結。如果角色繫結設有條件,分析結果也會包含條件評估結果。如果無法評估條件,結果為 CONDITIONAL
。
在要求中加入存取時間後,政策分析工具就能評估日期/時間條件。如果條件評估結果為 false,該角色就不會納入回應。如果條件評估結果為 true,條件評估結果會列為 TRUE
。
... --- ACLs: - accesses: - permission: compute.instances.get - permission: compute.instances.start conditionEvaluationValue: 'TRUE' identities: - name: user:my-user@example.com resources: - fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project policy: attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project binding: condition: expression: request.time.getHours("America/Los_Angeles") >= 5 title: No access before 5am PST members: - user: my-user@example.com role: roles/compute.admin --- ...
如果要求在查詢完成前逾時,您會收到 DEADLINE_EXCEEDED
錯誤。如要取得這些查詢的更多結果,請使用 analyze-iam-policy
的長時間執行版本,將結果寫入 BigQuery 或 Cloud Storage。如需操作說明,請參閱「將政策分析結果寫入 BigQuery」或「將政策分析結果寫入 Cloud Storage」。
REST
如要判斷特定時間哪些主體會擁有資源的特定權限,請使用 Cloud Asset Inventory API 的 analyzeIamPolicy
方法。
使用任何要求資料之前,請先替換以下項目:
RESOURCE_TYPE
:您要將搜尋範圍限定在的資源類型。系統只會分析附加至這項資源及其後代的 IAM 允許政策。請使用projects
、folders
或organizations
值。RESOURCE_ID
:要將搜尋範圍限定於其中的Google Cloud 專案、資料夾或機構的 ID。系統只會分析附加至這項資源及其後代的 IAM 允許政策。專案 ID 是英數字元字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。PERMISSION_1
、PERMISSION_2
...PERMISSION_N
:選用。您要檢查的權限,例如compute.instances.get
。如果您列出多項權限,政策分析工具會檢查是否列出任何權限。-
FULL_RESOURCE_NAME
:選用。您要分析存取權的資源完整資源名稱。如需完整資源名稱格式清單,請參閱「資源名稱格式」。 PERMISSION_1
、PERMISSION_2
...PERMISSION_N
:選用。您要檢查的權限,例如compute.instances.get
。如果您列出多項權限,政策分析工具會檢查是否列出任何權限。ACCESS_TIME
:要檢查的時間。這個時間必須是未來的時間,使用 RFC 3339 格式的時間戳記,例如2099-02-01T00:00:00Z
。
HTTP 方法和網址:
POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicy
JSON 要求主體:
{ "analysisQuery": { "identitySelector": { "identity": "PRINCIPAL" }, "resourceSelector": { "fullResourceName": "FULL_RESOURCE_NAME" }, "accessSelector": { "permissions": [ "PERMISSION_1", "PERMISSION_2", "PERMISSION_N" ] }, "conditionContext": { "accessTime": "ACCESS_TIME" } } }
如要傳送要求,請展開以下其中一個選項:
您會收到含有分析結果的 JSON 回應。每項分析結果都會說明相關的 IAM 角色繫結,然後列出該繫結中的資源、存取權和主體。如果角色繫結設有條件,分析結果也會包含條件評估結果。如果無法評估條件,結果會列為 CONDITIONAL
。
在要求中加入存取時間後,政策分析工具就能評估日期/時間條件。如果條件評估結果為 false,該角色就不會納入回應。如果條件評估結果為 true,分析回應中的條件評估值為 TRUE
。
... { "attachedResourceFullName": "//cloudresourcemanager.googleapis.com/projects/my-project", "iamBinding": { "role": "roles/compute.admin", "members": [ "user:my-user@example.com" ], "condition": { "expression": "request.time.getHours(\"America/Los_Angeles\") \u003e= 5", "title": "No access before 5am PST" } }, "accessControlLists": [ { "resources": [ { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project" } ], "accesses": [ { "permission": "compute.instances.get" }, { "permission": "compute.instances.start" } ], "conditionEvaluation": { "evaluationValue": "TRUE" } } ], "identityList": { "identities": [ { "name": "user:my-user@example.com" } ] }, "fullyExplored": true }, ...
如果要求在查詢完成前逾時,您會收到 DEADLINE_EXCEEDED
錯誤。如要取得這些查詢的更多結果,請使用 analyzeIamPolicy
的長時間執行版本,將結果寫入 BigQuery 或 Cloud Storage。如需操作說明,請參閱「將政策分析結果寫入 BigQuery」或「將政策分析結果寫入 Cloud Storage」。
啟用選項
您可以啟用下列選項,取得更詳細的查詢結果。
控制台
選項 | 說明 |
---|---|
列出與查詢相符的資源內有哪些資源 | 啟用這個選項後,查詢結果會列出最多 1,000 個相關的子項資源,這些資源屬於查詢結果中的任何父項資源 (專案、資料夾和機構)。 |
列出群組中的個別使用者 |
啟用這個選項後,查詢結果中的所有群組都會展開為個別成員。如果您具備足夠的群組權限,系統也會展開巢狀群組。每個群組最多可擴充至 1,000 名成員。 只有在查詢中未指定主體時,才能使用這個選項。 |
列出角色的權限 |
啟用這個選項後,查詢結果會列出每個角色中的所有權限,以及角色本身。 只有在查詢中未指定任何權限或角色時,才會顯示這個選項。 |
gcloud
本節說明使用 gcloud CLI 分析允許政策時,可以新增的幾個常見標記。如需完整選項清單,請參閱「選用標記」。
旗標 | 說明 |
---|---|
--analyze-service-account-impersonation |
如果啟用這個選項,Policy Analyzer 會執行額外的分析查詢,判斷哪些使用者可以模擬服務帳戶,並對指定資源擁有指定存取權。Policy Analyzer 會針對查詢結果中的每個服務帳戶執行一項查詢。這些查詢會分析誰對服務帳戶具有下列任一權限:
這項作業非常耗費資源,因為系統會自動執行許多查詢。強烈建議您使用 |
--expand-groups |
啟用這個選項後,查詢結果中的所有群組都會展開為個別成員。如果您具備足夠的群組權限,系統也會展開巢狀群組。每個群組最多可擴充至 1,000 名成員。 只有在查詢中未指定主體時,這個選項才會生效。 |
--expand-resources |
啟用這個選項後,查詢結果會列出最多 1,000 個相關的子項資源,這些資源屬於查詢結果中的任何父項資源 (專案、資料夾和機構)。 |
--expand-roles |
啟用這個選項後,查詢結果會列出每個角色中的所有權限,以及角色本身。 只有在查詢中未指定任何權限或角色時,才會顯示這個選項。 |
--output-group-edges |
啟用這個選項後,查詢結果會輸出群組間的相關成員關係。 |
--output-resource-edges |
啟用這個選項後,查詢結果會輸出資源間的相關父項/子項關係。 |
REST
如要啟用任何選項,請先在分析查詢中新增 options
欄位。例如:
{ "analysisQuery": { "resourceSelector": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project" }, "accessSelector": { "permissions": [ "iam.roles.get", "iam.roles.list" ] }, "options": { OPTIONS } } }
將 OPTIONS
替換為要啟用的選項,格式為 "OPTION": true
。下表說明可用的選項:
選項 | 說明 |
---|---|
analyzeServiceAccountImpersonation |
如果啟用這個選項,Policy Analyzer 會執行額外的分析查詢,判斷哪些使用者可以模擬服務帳戶,並對指定資源擁有指定存取權。Policy Analyzer 會針對查詢結果中的每個服務帳戶執行一項查詢。這些查詢會分析誰對服務帳戶具有下列任一權限:
這項作業非常耗費資源,因為系統會自動執行許多查詢。強烈建議您使用 |
expandGroups |
啟用這個選項後,查詢結果中的所有群組都會展開為個別成員。如果您具備足夠的群組權限,系統也會展開巢狀群組。每個群組最多可擴充至 1,000 名成員。 只有在查詢中未指定主體時,這個選項才會生效。 |
expandResources |
啟用這個選項後,查詢結果會列出最多 1,000 個相關的子項資源,這些資源屬於查詢結果中的任何父項資源 (專案、資料夾和機構)。 |
expandRoles |
啟用這個選項後,查詢結果會列出每個角色中的所有權限,以及角色本身。 只有在查詢中未指定任何權限或角色時,才會顯示這個選項。 |
outputGroupEdges |
啟用這個選項後,查詢結果會輸出群組間的相關成員關係。 |
outputResourceEdges |
啟用這個選項後,查詢結果會輸出資源間的相關父項/子項關係。 |
後續步驟
- 瞭解如何使用
AnalyzeIamPolicyLongrunning
寫入 BigQuery 或寫入 Cloud Storage。 - 瞭解如何使用 REST API 儲存政策分析查詢。
- 請使用可用的存取權疑難排解工具,找出主體沒有特定類型存取權的原因。