您可以搜索项目、文件夹或组织中资源的 IAM 允许政策,并使用查询过滤返回的结果。
准备工作
在您运行 Cloud Asset Inventory 命令的项目中启用 Cloud Asset Inventory API。
确保您的账号拥有调用 Cloud Asset Inventory API 的正确角色。如需了解每种通话类型的各项权限,请参阅权限。
构建查询
在构建查询之前,最好先从未指定查询的搜索请求开始。使用完整响应中的字段和值,通过搜索查询语法创建查询,并对其进行优化,直到返回所需的结果。
如需详细了解可在查询中使用的字段,请参阅 IamPolicySearchResult 参考文档。
在构建查询时,请注意以下限制:
您还可以使用以下其他字段将结果限制为特定主账号类型、权限或角色:
| 字段 | 说明 |
|---|---|
memberTypes |
包含以下 IAM 主账号类型之一:
示例memberTypes=user |
policy.role.permissions |
包含特定的 IAM 权限。 示例policy.role.permissions=storage.buckets.create |
roles |
包含特定 IAM 角色。 示例roles=roles/storage.objectAdmin |
搜索 IAM 允许政策
在构建查询之前,最好先从未指定查询的搜索请求开始。使用完整响应中的字段和值,通过搜索查询语法创建查询,并对其进行优化,直到返回所需的结果。
控制台
如需搜索 IAM 允许政策元数据,请完成以下步骤。
-
前往 Google Cloud 控制台中的 Asset Inventory 页面。
- 切换到要搜索的项目、文件夹或组织。
- 点击 IAM 政策标签页。
-
如需搜索允许政策,请在过滤条件字段中输入查询。如需了解如何编写搜索查询,请参阅 搜索查询语法。
为方便您构建查询,您可以点击过滤条件字段,以显示可供搜索的字段并将其添加到查询中。
执行搜索后,与查询匹配的允许政策会列在结果表中。双击查询即可修改,或者使用过滤结果窗格应用快速查询预设,或按特定条件限制搜索结果。
如需以 Google Cloud CLI 命令的形式来查看查询,请点击查看查询。
如需导出结果,请点击下载 CSV。
gcloud
gcloud asset search-all-iam-policies \ --scope=SCOPE_PATH \ --query="QUERY" \ --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \ --order-by="ORDER_BY"
请提供以下值:
-
SCOPE_PATH:请使用以下某个值:允许使用的值包括:
-
projects/PROJECT_ID,其中PROJECT_ID是具有您要搜索的 IAM 允许政策的资产所在项目的 ID。 -
projects/PROJECT_NUMBER,其中PROJECT_NUMBER是具有您要搜索的 IAM 允许政策的项目的编号。如何查找 Google Cloud 项目编号
Google Cloud 控制台
如需查找 Google Cloud 项目编号,请完成以下步骤:
gcloud CLI
您可以使用以下命令检索 Google Cloud 项目编号:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
folders/FOLDER_ID,其中FOLDER_ID是包含您要搜索的具有 IAM 允许政策的资产的文件夹的 ID。如何查找 Google Cloud 文件夹的 ID
Google Cloud 控制台
如需查找 Google Cloud 文件夹的 ID,请完成以下步骤:
-
前往 Google Cloud 控制台。
- 点击菜单栏中的切换器列表框。
- 从列表框中选择您的组织。
- 搜索文件夹名称。文件夹 ID 会显示在文件夹名称旁边。
gcloud CLI
您可以使用以下命令检索组织级层文件夹的 ID: Google Cloud
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
其中,TOP_LEVEL_FOLDER_NAME 是文件夹名称的部分或完整字符串匹配项。移除
--format标志即可查看有关已找到文件夹的更多信息。上一个命令不会返回文件夹中子文件夹的 ID。为此,请使用顶级文件夹的 ID 运行以下命令:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID,其中ORGANIZATION_ID是具有您要搜索的 IAM 允许政策的资产所属组织的 ID。如何查找 Google Cloud 组织的 ID
Google Cloud 控制台
如需查找 Google Cloud 组织的 ID,请完成以下步骤:
-
前往 Google Cloud 控制台。
- 点击菜单栏中的切换器列表框。
- 从列表框中选择您的组织。
- 点击全部标签页。组织 ID 显示在组织名称旁边。
gcloud CLI
您可以使用以下命令检索 Google Cloud 组织的 ID:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
QUERY:可选。查询表达式。如果未指定或为空,则在指定范围内搜索所有资源。如需了解如何编写搜索查询,请参阅搜索查询语法。 ASSET_TYPE_#:可选。以英文逗号分隔的 可搜索资产类型列表。 支持 RE2 兼容的正则表达式。如果正则表达式与任何支持的资源类型均不匹配,则会返回INVALID_ARGUMENT错误。如果未指定--asset-types,则返回所有资源类型。-
ORDER_BY:可选。指定结果排序顺序的以逗号分隔的字段列表。默认顺序是升序。 在字段名称后添加DESC可指示降序顺序。如需了解哪些字段可用于排序,请参阅 参考文档。
您可以使用 --format 和 --flatten 标志来设置 gcloud CLI 输出的格式。
如需了解所有选项,请参阅 gcloud CLI 参考文档。
示例
运行以下命令,以获取 my-project 项目中所有 Compute Engine 实例 (compute.googleapis.com/Instance) 的列表,这些实例通过 IAM 允许政策与用户 alex@example.com 绑定。结果按资源 (resource DESC) 降序排列。
gcloud asset search-all-iam-policies \ --scope=projects/my-project \ --query="policy:\"user:alex@example.com\"" \ --asset-types=compute.googleapis.com/Instance \ --order-by="resource DESC"
示例响应
---
assetType: compute.googleapis.com/Instance
folders:
- folders/0000000000000
organization: organizations/0000000000000
policy:
bindings:
- members:
- user:alex@example.com
role: roles/compute.viewer
- members:
- user:alex@example.com
role: roles/editor
- members:
- user:alex@example.com
role: roles/owner
project: projects/0000000000000
resource: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/debian
REST
HTTP 方法和网址:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:searchAllIamPolicies
请求 JSON 正文:
{ "query": "QUERY", "assetTypes": [ "ASSET_TYPE_1", "ASSET_TYPE_2", "..." ],