本頁說明如何建立、管理及執行已儲存的政策分析器查詢。您最多可以在資產上建立 200 個已儲存的查詢。這項限制不包括子項的已儲存查詢。舉例來說,如果您在機構下有 10 個專案,每個專案最多可有 200 個已儲存的查詢,而機構最多可有 200 個已儲存的查詢。
事前準備
-
Enable the Cloud Asset API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
必要的角色
如要取得建立及管理已儲存查詢所需的權限,請要求管理員授予您專案、資料夾或機構的Cloud Asset Owner (roles/cloudasset.owner) IAM 角色,以便將查詢儲存至該處。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這個預先定義的角色具備建立及管理已儲存查詢所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要建立及管理已儲存的查詢,必須具備下列權限:
-
cloudasset.savedqueries.create -
cloudasset.savedqueries.delete -
cloudasset.savedqueries.get -
cloudasset.savedqueries.list -
cloudasset.savedqueries.update
建立已儲存的查詢
gcloud
如要在父項專案、資料夾或機構中建立已儲存的政策分析工具查詢,請使用
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。如需主體類型的完整清單,請參閱「主體 ID」。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。如需主體類型的完整清單,請參閱「主體 ID」。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
回應包含在指定資源上執行已儲存查詢的結果。如需查詢結果範例,請參閱「分析 IAM 政策」。
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"
}
如要傳送要求,請展開以下其中一個選項:
回應包含在指定資源上執行已儲存查詢的結果。如需查詢結果範例,請參閱「分析 IAM 政策」。
取得已儲存的查詢
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
如要列出專案、資料夾或機構中所有已儲存的政策分析器查詢,請使用 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:選用。您要儲存的更新版政策分析工具查詢。如要瞭解如何設定查詢格式,請參閱「建立已儲存的查詢」。-
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:選用。您要儲存的更新版政策分析工具查詢。如要瞭解如何設定查詢格式,請參閱「建立已儲存的查詢」。-
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
如要刪除已儲存的 Policy Analyzer 查詢,請使用 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 會傳回空白的回應。