本頁面說明如何建立、管理及執行已儲存的政策分析工具查詢。您最多可為一項資產建立 200 個儲存的查詢。這項限制不包含子項的已儲存查詢。舉例來說,如果機構下有 10 個專案,每個專案最多可儲存 200 個查詢,而機構最多可儲存 200 個查詢。
事前準備
-
Enable the Cloud Asset API.
必要的角色
如要取得建立及管理儲存查詢所需的權限,請要求管理員在您要儲存查詢的專案、資料夾或機構中,授予您 Cloud Asset Owner (roles/cloudasset.owner
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這個預先定義的角色包含建立及管理儲存查詢所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
您必須具備下列權限,才能建立及管理儲存查詢:
-
cloudasset.savedqueries.create
-
cloudasset.savedqueries.delete
-
cloudasset.savedqueries.get
-
cloudasset.savedqueries.list
-
cloudasset.savedqueries.update
建立已儲存的查詢
gcloud
如要在父專案、資料夾或機構中建立已儲存的 Policy Analyzer 查詢,請使用 gcloud asset saved-queries create
指令。
使用下列任何指令資料之前,請先替換以下項目:
-
SCOPE_RESOURCE_TYPE_PLURAL
:您要將搜尋範圍限制在哪種資源上,以複數形式表示。系統只會分析這項資源及其子項附加的 IAM 允許政策。請使用projects
、folders
或organizations
值。 -
SCOPE_RESOURCE_ID
:您要將搜尋範圍限定為哪個 Google Cloud 專案、資料夾或機構的 ID。系統只會分析這項資源及其子項所附加的 IAM 允許政策。專案 ID 是英數字元字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。 -
FULL_RESOURCE_NAME
:選用。您要分析存取權的資源完整資源名稱。如需完整的資源名稱格式清單,請參閱「資源名稱格式」。 PRINCIPAL
:選用。您要分析存取權的使用者,格式為PRINCIPAL_TYPE:ID
,例如user:my-user@example.com
。如需主要類型的完整清單,請參閱「主要識別碼」。PERMISSION_1
、PERMISSION_2
...PERMISSION_N
:選填。您要檢查的權限,例如compute.instances.get
。如果您列出多個權限,政策分析工具會檢查所列的任何權限。-
QUERY_ID
:要用於儲存查詢的 ID,該 ID 必須在指定的父項資源 (專案、資料夾或機構) 中是唯一的。您可以在查詢 ID 中使用英文字母、數字和連字號。 -
RESOURCE_TYPE
:您要為其儲存查詢的資源類型。請使用project
、folder
或organization
值。 -
RESOURCE_ID
:您要儲存查詢的 Google Cloud 專案、資料夾或機構 ID。專案 ID 可以是英數字元或數字。資料夾和機構 ID 為數字。 -
LABEL_KEY
和LABEL_VALUE
:選用。以逗號分隔的鍵/值組合清單,可用於搜尋和清單作業。每個儲存的查詢最多可包含 10 個標籤。 DESCRIPTION
:選用。說明查詢的字串。
將下列內容儲存到名為 request.json
的檔案中:
{ "IamPolicyAnalysisQuery": { "scope": "SCOPE_RESOURCE_TYPE_PLURAL/SCOPE_RESOURCE_ID", "resourceSelector": { "fullResourceName": "FULL_RESOURCE_NAME" }, "identitySelector": { "identity": "PRINCIPAL" }, "accessSelector": { "permissions": [ "PERMISSION_1", "PERMISSION_2", "PERMISSION_N" ] } } }
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud asset saved-queries create \ QUERY_ID \ --RESOURCE_TYPE=RESOURCE_ID \ --query-file-path=request.json \ --labels="LABEL_KEY=LABEL_VALUE" \ --description="DESCRIPTION"
Windows (PowerShell)
gcloud asset saved-queries create ` QUERY_ID ` --RESOURCE_TYPE=RESOURCE_ID ` --query-file-path=request.json ` --labels="LABEL_KEY=LABEL_VALUE" ` --description="DESCRIPTION"
Windows (cmd.exe)
gcloud asset saved-queries create ^ QUERY_ID ^ --RESOURCE_TYPE=RESOURCE_ID ^ --query-file-path=request.json ^ --labels="LABEL_KEY=LABEL_VALUE" ^ --description="DESCRIPTION"
回應包含已儲存的查詢。例如,可能如下所示:
content: iamPolicyAnalysisQuery: resourceSelector: fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project identitySelector: identity: user:my-user@example.com scope: projects/scope-project createTime: '2022-04-18T22:47:25.640783Z' description: A query checking what permissions my-user@example.com has on my-project labels: user: my-user lastUpdateTime: '2022-04-18T22:47:25.640783Z' name: projects/12345678901/savedQueries/my-query
REST
如要在父項專案、資料夾或機構中建立已儲存的 Policy Analyzer 查詢,請使用 Cloud Asset Inventory API 的 savedQueries.create
方法。
使用任何要求資料之前,請先替換以下項目:
-
RESOURCE_TYPE
:您要為其儲存查詢的資源類型。請使用projects
、folders
或organizations
值。 -
RESOURCE_ID
:您要儲存查詢的 Google Cloud 專案、資料夾或機構 ID。專案 ID 可以是英數字元或數字。資料夾和機構 ID 為數字。 -
QUERY_ID
:要用於儲存查詢的 ID,該 ID 必須在指定的父項資源 (專案、資料夾或機構) 中是唯一的。您可以在查詢 ID 中使用英文字母、數字和連字號。 -
SCOPE_RESOURCE_TYPE
:您要將搜尋範圍限定在哪種資源上。系統只會分析這項資源及其子項附加的 IAM 允許政策。請使用projects
、folders
或organizations
值。 -
SCOPE_RESOURCE_ID
:您要將搜尋範圍限定為哪個 Google Cloud 專案、資料夾或機構的 ID。系統只會分析這項資源及其子項所附加的 IAM 允許政策。專案 ID 是英數字元字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。 -
FULL_RESOURCE_NAME
:選用。您要分析存取權的資源完整資源名稱。如需完整的資源名稱格式清單,請參閱「資源名稱格式」。 PRINCIPAL
:選用。您要分析存取權的使用者,格式為PRINCIPAL_TYPE:ID
,例如user:my-user@example.com
。如需主要類型的完整清單,請參閱「主要識別碼」。PERMISSION_1
、PERMISSION_2
...PERMISSION_N
:選填。您要檢查的權限,例如compute.instances.get
。如果您列出多個權限,政策分析工具會檢查所列的任何權限。-
LABEL_KEY
和LABEL_VALUE
:選用。要附加至查詢的鍵/值組合,可用於搜尋和清單作業。每個儲存的查詢最多可包含 10 個標籤。 DESCRIPTION
:選用。說明查詢的字串。
HTTP 方法和網址:
POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/savedQueries?savedQueryId=QUERY_ID
JSON 要求主體:
{ "content": { "iamPolicyAnalysisQuery": { "scope": "SCOPE_RESOURCE_TYPE/SCOPE_RESOURCE_ID", "resourceSelector": { "fullResourceName": "FULL_RESOURCE_NAME" }, "identitySelector": { "identity": "PRINCIPAL" }, "accessSelector": { "permissions": [ "PERMISSION_1", "PERMISSION_2", "PERMISSION_N" ] } } }, "labels": { "LABEL_KEY": "LABEL_VALUE" }, "description": "DESCRIPTION" }
如要傳送要求,請展開以下其中一個選項:
回應包含已儲存的查詢。例如,可能如下所示:
{ "name": "projects/12345678901/savedQueries/my-query", "description": "A query checking what permissions my-user@example.com has on my-project", "createTime": "2022-04-18T22:47:25.640783Z", "lastUpdateTime": "2022-04-18T22:47:25.640783Z", "labels": { "user": "my-user" }, "content": { "iamPolicyAnalysisQuery": { "scope": "projects/scope-project", "resourceSelector": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project" }, "identitySelector": { "identity": "user:my-user@example.com" } } } }
執行已儲存的查詢
gcloud
如要執行已儲存的分析查詢,請使用 gcloud asset analyze-iam-policy
指令。
使用下列任何指令資料之前,請先替換以下項目:
-
SCOPE_RESOURCE_TYPE
:您要將搜尋範圍限定在哪種資源上。系統只會分析這項資源及其子項附加的 IAM 允許政策。請使用project
、folder
或organization
值。 -
SCOPE_RESOURCE_ID
:您要將搜尋範圍限定為哪個 Google Cloud 專案、資料夾或機構的 ID。系統只會分析這項資源及其子項所附加的 IAM 允許政策。專案 ID 是英數字元字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。 -
RESOURCE_TYPE_PLURAL
:儲存查詢的資源類型。請使用projects
、folders
或organizations
值。 -
RESOURCE_NUM_ID
:儲存查詢的 Google Cloud 專案、資料夾或機構的數字 ID。您無法使用英數字元專案 ID 來識別專案,必須使用專案編號。 QUERY_ID
:要使用的已儲存查詢的 ID。
執行 gcloud asset analyze-iam-policy 指令:
Linux、macOS 或 Cloud Shell
gcloud asset analyze-iam-policy \ --SCOPE_RESOURCE_TYPE=SCOPE_RESOURCE_ID \ --saved-analysis-query=RESOURCE_TYPE_PLURAL/RESOURCE_NUM_ID/savedQueries/QUERY_ID
Windows (PowerShell)
gcloud asset analyze-iam-policy ` --SCOPE_RESOURCE_TYPE=SCOPE_RESOURCE_ID ` --saved-analysis-query=RESOURCE_TYPE_PLURAL/RESOURCE_NUM_ID/savedQueries/QUERY_ID
Windows (cmd.exe)
gcloud asset analyze-iam-policy ^ --SCOPE_RESOURCE_TYPE=SCOPE_RESOURCE_ID ^ --saved-analysis-query=RESOURCE_TYPE_PLURAL/RESOURCE_NUM_ID/savedQueries/QUERY_ID
回應包含對指定資源執行已儲存查詢的結果。如需查詢結果示例,請參閱「分析身分與存取權管理政策」。
REST
如要執行已儲存的分析查詢,請使用 Cloud Asset Inventory API 的 analyzeIamPolicy
方法。
使用任何要求資料之前,請先替換以下項目:
-
SCOPE_RESOURCE_TYPE
:您要將搜尋範圍限定在哪種資源上。系統只會分析這項資源及其子項附加的 IAM 允許政策。請使用projects
、folders
或organizations
值。 -
SCOPE_RESOURCE_ID
:您要將搜尋範圍限定為哪個 Google Cloud 專案、資料夾或機構的 ID。系統只會分析這項資源及其子項所附加的 IAM 允許政策。專案 ID 是英數字元字串,例如my-project
。資料夾和機構 ID 為數字,例如123456789012
。 -
RESOURCE_TYPE
:儲存查詢的資源類型。請使用projects
、folders
或organizations
值。 -
RESOURCE_NUM_ID
:儲存查詢的 Google Cloud 專案、資料夾或機構的數字 ID。您無法使用英數字元專案 ID 來識別專案,必須使用專案編號。 QUERY_ID
:要使用的已儲存查詢的 ID。
HTTP 方法和網址:
POST https://cloudasset.googleapis.com/v1/SCOPE_RESOURCE_TYPE/SCOPE_RESOURCE_ID:analyzeIamPolicy
JSON 要求主體:
{ "savedAnalysisQuery": "RESOURCE_TYPE/RESOURCE_NUM_ID/savedQueries/QUERY_ID" }
如要傳送要求,請展開以下其中一個選項:
回應包含對指定資源執行已儲存查詢的結果。如需查詢結果示例,請參閱「分析身分與存取權管理政策」。
取得已儲存的查詢
gcloud
如要取得已儲存的政策分析工具查詢,請使用 gcloud asset saved-queries get
指令。
使用下列任何指令資料之前,請先替換以下項目:
-
QUERY_ID
:您要取得的已儲存查詢 ID。 -
RESOURCE_TYPE
:儲存查詢的資源類型。請使用project
、folder
或organization
值。 -
RESOURCE_ID
:儲存查詢的 Google Cloud 專案、資料夾或機構 ID。專案 ID 可以是英數字元或數字。資料夾和機構 ID 為數字。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud asset saved-queries describe QUERY_ID --RESOURCE_TYPE=RESOURCE_NUM_ID
Windows (PowerShell)
gcloud asset saved-queries describe QUERY_ID --RESOURCE_TYPE=RESOURCE_NUM_ID
Windows (cmd.exe)
gcloud asset saved-queries describe QUERY_ID --RESOURCE_TYPE=RESOURCE_NUM_ID
回應包含已儲存的查詢。例如,可能如下所示:
content: iamPolicyAnalysisQuery: resourceSelector: fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project identitySelector: identity: user:my-user@example.com scope: projects/scope-project createTime: 2022-04-18T22:47:25.640783Z description: A query checking what permissions my-user@example.com has on my-project labels: user: my-user lastUpdateTime: 2022-04-18T22:47:25.640783Z name: projects/12345678901/savedQueries/my-query
REST
如要取得已儲存的政策分析工具查詢,請使用 Cloud Asset Inventory API 的 savedQueries.get
方法。
使用任何要求資料之前,請先替換以下項目:
-
RESOURCE_TYPE
:儲存查詢的資源類型。請使用projects
、folders
或organizations
值。 -
RESOURCE_NUM_ID
:儲存查詢的 Google Cloud 專案、資料夾或機構的數字 ID。您無法使用英數字元專案 ID 來識別專案,必須使用專案編號。 -
QUERY_ID
:您要取得的已儲存查詢 ID。
HTTP 方法和網址:
GET https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_NUM_ID/savedQueries/QUERY_ID
如要傳送要求,請展開以下其中一個選項:
回應包含已儲存的查詢。例如,可能如下所示:
{ "name": "projects/12345678901/savedQueries/my-query", "description": "A query checking what permissions my-user@example.com has on my-project", "createTime": "2022-04-18T22:47:25.640783Z", "lastUpdateTime": "2022-04-18T22:47:25.640783Z", "labels": { "user": "my-user" }, "content": { "iamPolicyAnalysisQuery": { "scope": "projects/scope-project", "resourceSelector": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project" }, "identitySelector": { "identity": "user:my-user@example.com" } } } }
列出已儲存的查詢
gcloud
如要列出專案、資料夾或機構中的所有已儲存的政策分析工具查詢,請使用 gcloud asset saved-queries list
指令。
使用下列任何指令資料之前,請先替換以下項目:
-
RESOURCE_TYPE
:儲存查詢的資源類型。請使用project
、folder
或organization
值。 -
RESOURCE_ID
:您要列出儲存查詢的 Google Cloud 專案、資料夾或機構 ID。專案 ID 可以是英數字元或數字。資料夾和機構 ID 為數字。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud asset saved-queries list --RESOURCE_TYPE=RESOURCE_ID
Windows (PowerShell)
gcloud asset saved-queries list --RESOURCE_TYPE=RESOURCE_ID
Windows (cmd.exe)
gcloud asset saved-queries list --RESOURCE_TYPE=RESOURCE_ID
回應會包含專案、資料夾或機構的所有已儲存 Policy Analyzer 查詢。例如,可能如下所示:
savedQueries: - content: iamPolicyAnalysisQuery: resourceSelector: fullResourceName: //cloudresourcemanager.googleapis.com/projects/my-project identitySelector: identity: user:my-user@example.com scope: projects/scope-project createTime: '2022-04-15T21:17:33.777212Z' description: A query checking what permissions my-user@example.com has on my-project labels: missing-info: permissions lastUpdateTime: '2022-04-15T21:17:33.777212Z' name: projects/12345678901/savedQueries/query-1 - content: iamPolicyAnalysisQuery: accessSelector: permissions: - iam.roles.get - iam.roles.list identitySelector: identity: user:my-user@example.com scope: projects/scope-project createTime: '2022-04-18T22:47:25.640783Z' description: A query checking what resources my-user@example.com has permission to view roles on labels: missing-info: resource lastUpdateTime: '2022-04-18T22:47:25.640783Z' name: projects/12345678901/savedQueries/query-2
REST
如要列出專案、資料夾或組織中所有已儲存的 Policy Analyzer 查詢,請使用 Cloud Asset Inventory API 的 savedQueries.list
方法。
使用任何要求資料之前,請先替換以下項目:
-
RESOURCE_TYPE
:儲存查詢的資源類型。請使用projects
、folders
或organizations
值。 -
RESOURCE_ID
:您要列出儲存查詢的 Google Cloud 專案、資料夾或機構 ID。專案 ID 可以是英數字元或數字。資料夾和機構 ID 為數字。
HTTP 方法和網址:
GET https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/savedQueries
如要傳送要求,請展開以下其中一個選項:
回應會包含專案、資料夾或機構的所有已儲存 Policy Analyzer 查詢。例如,可能如下所示:
{ "savedQueries": [ { "name": "projects/12345678901/savedQueries/query-1", "description": "A query checking what permissions my-user@example.com has on my-project", "createTime": "2022-04-15T21:17:33.777212Z", "lastUpdateTime": "2022-04-15T21:17:33.777212Z", "labels": { "missing-info": "permission" }, "content": { "iamPolicyAnalysisQuery": { "scope": "projects/scope-project", "resourceSelector": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project" }, "identitySelector": { "identity": "user:my-user@example.com" } } } }, { "name": "projects/12345678901/savedQueries/query-2", "description": "A query checking what resources my-user@example.com has permission to view roles on", "createTime": "2022-04-18T22:47:25.640783Z", "lastUpdateTime": "2022-04-18T22:47:25.640783Z", "labels": { "missing-info": "resource" }, "content": { "iamPolicyAnalysisQuery": { "scope": "projects/scope-project", "accessSelector": { "permissions": [ "iam.roles.get", "iam.roles.list" ] }, "identitySelector": { "identity": "user:my-user@example.com" } } } } ] }
更新已儲存的查詢
gcloud
如要更新已儲存的政策分析工具查詢,請使用 gcloud asset saved-queries update
指令。
使用下列任何指令資料之前,請先替換以下項目:
UPDATED_QUERY
:選用。您要儲存的更新版 Policy Analyzer 查詢。如要瞭解如何設定查詢格式,請參閱「建立已儲存的查詢」。-
RESOURCE_TYPE
:儲存查詢的資源類型。請使用project
、folder
或organization
值。 -
QUERY_ID
:要編輯的已儲存查詢 ID。 -
RESOURCE_ID
:儲存查詢的 Google Cloud 專案、資料夾或機構 ID。專案 ID 可以是英數字元或數字。資料夾和機構 ID 為數字。 -
UPDATED_LABELS
:選用。您要附加至已儲存查詢的更新標籤。您也可以使用--remove-labels="KEY_1,KEY_2"
標記移除標籤,或是使用--clear-labels
標記清除所有標籤。 UPDATED_DESCRIPTION
:選用。已儲存查詢的更新說明。
將下列內容儲存到名為 request.json
的檔案中:
{ "IamPolicyAnalysisQuery": { UPDATED_QUERY } }
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud asset saved-queries update \ QUERY_ID \ --RESOURCE_TYPE=RESOURCE_ID \ --query-file-path=request.json \ --update-labels="UPDATED_LABELS" \ --description="DESCRIPTION"
Windows (PowerShell)
gcloud asset saved-queries update ` QUERY_ID ` --RESOURCE_TYPE=RESOURCE_ID ` --query-file-path=request.json ` --update-labels="UPDATED_LABELS" ` --description="DESCRIPTION"
Windows (cmd.exe)
gcloud asset saved-queries update ^ QUERY_ID ^ --RESOURCE_TYPE=RESOURCE_ID ^ --query-file-path=request.json ^ --update-labels="UPDATED_LABELS" ^ --description="DESCRIPTION"
回應包含更新後的查詢。
REST
如要更新已儲存的政策分析器查詢,請使用 Cloud Asset Inventory API 的 savedQueries.patch
方法。
使用任何要求資料之前,請先替換以下項目:
-
RESOURCE_TYPE
:儲存查詢的資源類型。請使用projects
、folders
或organizations
值。 -
RESOURCE_NUM_ID
:儲存查詢的 Google Cloud 專案、資料夾或機構的數字 ID。您無法使用英數字元專案 ID 來識別專案,必須使用專案編號。 -
QUERY_ID
:要編輯的已儲存查詢 ID。 -
UPDATED_FIELDS
:以半形逗號分隔的清單,列出要更新的欄位。舉例來說,如果您要更新內容、標籤和說明欄位,請使用content,labels,description
值。 UPDATED_QUERY
:選用。您要儲存的更新版 Policy Analyzer 查詢。如要瞭解如何設定查詢格式,請參閱「建立已儲存的查詢」。-
UPDATED_LABELS
:選用。您要附加至已儲存查詢的更新標籤。 UPDATED_DESCRIPTION
:選用。已儲存查詢的更新說明。
HTTP 方法和網址:
POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_NUM_ID/savedQueries/QUERY_ID?update_mask=UPDATED_FIELDS
JSON 要求主體:
{ "content": { "iamPolicyAnalysisQuery": { UPDATED_QUERY }, "labels": { UPDATED_LABELS }, "description": "UPDATED_DESCRIPTION" }
如要傳送要求,請展開以下其中一個選項:
回應包含更新後的查詢。
刪除已儲存的查詢
gcloud
如要刪除已儲存的政策分析工具查詢,請使用 gcloud asset saved-queries delete
指令。
使用下列任何指令資料之前,請先替換以下項目:
-
QUERY_ID
:要刪除的已儲存查詢 ID。 -
RESOURCE_TYPE
:儲存查詢的資源類型。請使用project
、folder
或organization
值。 -
RESOURCE_NUM_ID
:儲存查詢的 Google Cloud 專案、資料夾或機構的數字 ID。您無法使用英數字元專案 ID 來識別專案,必須使用專案編號。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud asset saved-queries delete \ QUERY_ID \ --RESOURCE_TYPE=RESOURCE_NUM_ID
Windows (PowerShell)
gcloud asset saved-queries delete ` QUERY_ID ` --RESOURCE_TYPE=RESOURCE_NUM_ID
Windows (cmd.exe)
gcloud asset saved-queries delete ^ QUERY_ID ^ --RESOURCE_TYPE=RESOURCE_NUM_ID
REST
如要刪除已儲存的政策分析器查詢,請使用 Cloud Asset Inventory API 的 savedQueries.delete
方法。
使用任何要求資料之前,請先替換以下項目:
-
RESOURCE_TYPE
:儲存查詢的資源類型。請使用projects
、folders
或organizations
值。 -
RESOURCE_NUM_ID
:儲存查詢的 Google Cloud 專案、資料夾或機構的數字 ID。您無法使用英數字元專案 ID 來識別專案,必須使用專案編號。 -
QUERY_ID
:您要刪除的已儲存查詢 ID。
HTTP 方法和網址:
DELETE https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_NUM_ID/savedQueries/QUERY_ID
如要傳送要求,請展開以下其中一個選項:
如果查詢成功刪除,API 會傳回空白回應。