本页面介绍如何创建、管理和运行已保存的政策分析器查询。您可以为一个资产创建最多 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 是数字。 -
LABEL_KEY
和LABEL_VALUE
:可选。 答 要附加到查询的键值对列表(以英文逗号分隔),可用于搜索和 list 操作。每个已保存的查询最多可包含 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 项目、文件夹或组织 。只有 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
列出项目、文件夹或文件夹中的所有已保存 Policy Analyzer 查询
使用
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
列出项目、文件夹或文件夹中的所有已保存 Policy Analyzer 查询
使用 Cloud Asset Inventory API
savedQueries.list
方法。
在使用任何请求数据之前,请先进行以下替换:
-
RESOURCE_TYPE
:保存查询的资源类型。 使用值projects
、folders
或organizations
。 -
RESOURCE_ID
:Google Cloud 项目、文件夹或 要为其列出已保存查询的组织。项目 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 将返回空响应。