Cloud Asset Inventory 使用入门

本快速入门介绍如何使用 Cloud Asset Inventory 和 Cloud SDK gcloud asset 命令导出某个时间点的资产元数据。

准备工作

您必须先启用 Cloud Asset Inventory API、Cloud SDK 并分配权限,然后才能开始使用 Cloud Asset Inventory。Cloud SDK 提供 gcloud 命令行工具,用于与 Cloud Asset Inventory 和其他 Google Cloud 服务进行交互。详细了解 gcloud 工具

启用 Cloud Asset Inventory API 和 Cloud SDK

  1. 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  3. 启用所需的 API。

    启用 API

  4. 安装并初始化 Cloud SDK

配置权限

如需调用 Cloud Asset Inventory API,您必须先配置权限

搜索资产

  1. 如需搜索资源元数据,请运行以下 gcloud asset search-all-resources 命令。

     gcloud asset search-all-resources \
        --scope SCOPE \
        --query QUERY \
        --asset-types ASSET_TYPES,… \
        --order-by ORDER_BY
    

    以下所有标志都是可选的:

    • (可选)SCOPE:范围可以是项目、文件夹或组织。只搜索此范围内的 Google Cloud 资源。调用者必须被授予所需范围的 cloudasset.assets.searchAllResources 权限。如果未指定,将使用已配置的项目属性。如需查找已配置的项目,请运行 gcloud config get-value project。如需更改此设置,请运行 gcloud config set project PROJECT_ID

      允许使用的值包括:

      • projects/PROJECT_ID(例如,“projects/foo-bar”)
      • projects/PROJECT_NUMBER(例如,“projects/12345678”)
      • folders/FOLDER_NUMBER(例如,“folders/1234567”)
      • organizations/ORGANIZATION_NUMBER(例如,“organizations/123456”)
    • (可选)QUERY:查询语句。如需了解详情,请参阅如何构建查询。如果未指定或为空,它将搜索指定 scope 中的所有资源。

      示例:

      • name:Important,查找名称包含“Important”一词的 Google Cloud 资源。
      • name=Important,查找名称正好为“Important”的 Google Cloud 资源。
      • displayName:Impor*,查找显示名包含前缀“Impor”的 Google Cloud 资源。
      • location:us-west*,用于查找位置同时包含“us”和“west”为前缀的 Google Cloud 资源。
      • labels:prod,查找标签包含“prod”作为键或值的 Google Cloud 资源。
      • labels.env:prod,查找具有标签“env”且其值为“prod”的 Google Cloud 资源。
      • labels.env:*,查找具有标签“env”的 Google Cloud 资源。
      • kmsKey:key,查找使用名称包含“key”这个词、由客户管理的加密密钥加密的 Google Cloud 资源。
      • state:ACTIVE,查找状态包含“ACTIVE”这个词的 Google Cloud 资源。
      • NOT state:ACTIVE,查找状态包含“ACTIVE”这个词的 Google Cloud 资源。
      • createTime<1609459200createTime<2021-01-01createTime<"2021-01-01T00:00:00",查找在“2021-01-01 00:00:00 UTC”之前创建的 Google Cloud 资源。1609459200 是“2021-01-01 00:00:00 UTC”的纪元时间戳(以秒为单位)。
      • updateTime>1609459200updateTime>2021-01-01updateTime>"2021-01-01T00:00:00",查找在“2021-01-01 00:00:00 UTC”后更新的 Google Cloud 资源。1609459200 是“2021-01-01 00:00:00 UTC”的纪元时间戳(以秒为单位)。
      • project:12345,查找属于编号为 12345 的 Google Cloud 项目的 Google Cloud 资源。项目 ID 不受支持。
      • folders:(123 or 456),查找属于编号为 123 或 456 的 Google Cloud 文件夹后代的 Google Cloud 资源。
      • organization:123,查找属于编号为 123 的 Google Cloud 组织后代的 Google Cloud 资源。
      • parentFullResourceName:ImportantName,查找其父级名称中包含 ImportantName 的 Google Cloud 资源。
      • parentAssetType:Project,查找其父级资源类型包含 Project 的 Google Cloud 资源。
      • Important,查找任何可搜索字段中包含“Important”一词的 Google Cloud 资源。
      • Impor*,查找任何可搜索字段中包含前缀“Impor”的 Google Cloud 资源。
      • Important location:(us-west1 OR global),查找任何可搜索字段中包含“Important”一词且还位于“us-west1”区域或“全球”位置中的 Google Cloud 资源。
    • (可选)ASSET_TYPES:要搜索的资产类型列表。如果未指定或为空,它将搜索所有可搜索的资源类型。例如,"cloudresourcemanager.googleapis.com/Project,compute.googleapis.com/Instance" 会搜索项目和虚拟机实例资源。 此外,还支持正则表达式。例如,其资源类型以 "compute.googleapis.com" 开头的 "compute.googleapis.com.*" 快照资源。如需查看所有支持的正则表达式语法,请参阅 RE2。如果正则表达式与任何支持的资源类型均不匹配,则将返回 INVALID_ARGUMENT 错误。

    • (可选)ORDER_BY:指定结果排序顺序的以逗号分隔的字段列表。默认顺序是升序。在字段名称后添加 " DESC" 可指示降序顺序。多余空格会被忽略。示例:"location DESC, name"。响应中只有字符串字段可以排序,包括 namedisplayNamedescriptionlocation

    如需详细了解如何搜索资源,请参阅搜索资源

  2. 如需搜索 IAM 政策,请运行以下 gcloud asset search-all-iam-policies 命令。

     gcloud asset search-all-iam-policies \
        --scope SCOPE \
        --query QUERY \
    

    其中:

    • (可选)SCOPE:范围可以是项目、文件夹或组织。只搜索此范围内的 Identity and Access Management (IAM) 政策。调用者必须被授予所需范围的 cloudasset.assets.searchAllIamPolicies 权限。如果未指定,将使用已配置的项目属性。如需查找已配置的项目,请运行 gcloud config get-value project。如需更改此设置,请运行 gcloud config set project PROJECT_ID

      允许使用的值包括:

      • projects/PROJECT_ID(例如,“projects/foo-bar”)
      • projects/PROJECT_NUMBER(例如,“projects/12345678”)
      • folders/FOLDER_NUMBER(例如,“folders/1234567”)
      • organizations/ORGANIZATION_NUMBER(例如,“organizations/123456”)
    • (可选)QUERY:查询语句。如需了解详情,请参阅如何构建查询。如果未指定或为空,它将搜索指定 scope 中的所有 IAM 政策。请注意,查询字符串会与每个 IAM 政策绑定进行比较,包括其成员、角色和 IAM 条件。返回的 IAM 政策将仅包含与查询匹配的绑定。如需详细了解 IAM 政策结构,请参阅 IAM 政策文档

      示例:

      • policy:amy@gmail.com,查找指定用户“amy@gmail.com”的 IAM 政策绑定。
      • policy:roles/compute.admin,查找指定 Compute Admin 角色的 IAM 政策绑定。
      • policy:comp*,以查找包含“comp”作为绑定中任何字词的前缀的 IAM 政策绑定。
      • policy.role.permissions:storage.buckets.update,查找指定包含“storage.buckets.update”权限的角色的 Cloud IAM 政策绑定。请注意,如果调用者对角色包含的权限没有 iam.roles.get 访问权限,则指定此角色的政策绑定会从搜索结果中删除。
      • policy.role.permissions:upd* 以查找 IAM,政策绑定将包含“upd”的角色用作角色权限中的任何字词的前缀。请注意,如果调用者对角色包含的权限没有 iam.roles.get 访问权限,则指定此角色的政策绑定会从搜索结果中删除。
      • resource:organizations/123456,查找设置在“organizations/123456”上的 IAM 政策绑定。
      • resource=//cloudresourcemanager.googleapis.com/projects/myproject,查找在名为“myproject”的项目上设置的 IAM 政策绑定。
      • Important,查找任何可搜索字段(包含的权限除外)中包含“Important”一词的 IAM 政策绑定。
      • resource:(instance1 OR instance2) policy:amy,查找设置在资源“instance1”或“instance2”上并指定用户“amy”的 IAM 政策绑定。

    如需详细了解如何搜索 IAM 政策,请参阅搜索 IAM 政策

将资源快照导出到 Cloud Storage

要将给定时间戳的所有资产元数据导出到 Cloud Storage 文件,请完成以下步骤。

  1. 如果您的项目还没有可用于存储导出数据的 Cloud Storage 存储分区,请创建新存储分区

  2. 如需导出项目中的资产元数据,请运行以下命令。此命令会将导出的快照存储在 Cloud Storage 存储分区中,存储位置为 gs://YOUR_BUCKET/NEW_FILE

    gcloud asset export \
       --content-type resource \
       --project PROJECT_ID \
       --snapshot-time SNAPSHOT_TIME \
       --output-path "gs://YOUR_BUCKET/NEW_FILE"
    

    其中:

    • PROJECT_ID:导出其元数据的项目的 ID。此项目可以是已启用 Cloud Asset Inventory API 并且您正在从中运行导出的项目,也可以是其他项目。
    • (可选)SNAPSHOT_TIME:值必须为当前时间或您要截取资源快照的过去时间。默认情况下,截取当前时间的快照。如需了解时间格式,请参阅 gcloud topic datetimes
  3. 如需导出组织或文件夹的资源,您可以使用以下标志之一,而不是使用 --project 标志:

    • --organization=ORGANIZATION_ID
    • --folder=FOLDER_ID
  4. (可选)要查看导出的状态,请运行以下命令。运行导出命令后,它会显示在 gcloud 工具中。

    gcloud asset operations describe projects/PROJECT_ID/operations/ExportAssets/CONTENT_TYPE/OPERATION_NUMBER
    

查看资产快照

要在将资产快照导出到 Cloud Storage 后进行查看,请完成以下步骤。

  1. 转到“Cloud Storage 浏览器”页面
    打开“Cloud Storage 浏览器”页面

  2. 打开元数据导出到的文件。

导出文件列出了资产及其资源名称

后续步骤