本页面介绍如何创建、管理和运行已保存的政策分析器查询。您可以为一个资产创建最多 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
如需在父项目、文件夹或组织中创建已保存的 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 中使用字母、数字和连字符。 -
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
如需在父项目、文件夹或组织中创建已保存的政策分析器查询,请使用 Cloud Asset Inventory API 的 savedQueries.create 方法。
在使用任何请求数据之前,请先进行以下替换:
-
RESOURCE_TYPE:要为其保存查询的资源类型。 使用值projects、folders或organizations。 -
RESOURCE_ID:您要为其保存查询的 Google Cloud 项目、文件夹或组织的 ID。项目 ID 可以是字母数字,也可以是数字。文件夹和组织 ID 是数字。 -
QUERY_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
响应包含在指定资源上运行已保存查询的结果。如需查看查询结果示例,请参阅分析 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
响应包含项目、文件夹或组织的所有已保存的政策分析器查询。 例如,它可能如下所示:
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
如需发送您的请求,请展开以下选项之一:
响应包含项目、文件夹或组织的所有已保存的政策分析器查询。 例如,它可能如下所示:
{
"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
如需删除已保存的政策分析器查询,请使用 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 会返回一个空响应。