本页面介绍如何创建、管理和运行已保存的政策分析器查询。您可以为一个资产创建最多 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
如需在父级项目、文件夹或组织中创建已保存的政策分析器查询,请使用 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
如需在父级项目、文件夹或组织中创建已保存的政策分析器查询,请使用 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
响应包含对指定资源运行已保存查询的结果。如需查看查询结果示例,请参阅分析 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
如需获取已保存的 Policy Analyzer 查询,请使用 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
如需更新已保存的 Policy Analyzer 查询,请使用 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 会返回一个空响应。