使用本地机器调用 Cloud Asset API

本页面介绍了如何通过本地机器调用 Cloud Asset API。

准备工作

  1. 在本地机器上安装 oauth2l,以便与 Google OAuth 系统进行交互。
  2. 确认您可以使用 Unix curl 命令。
  3. 确保您的帐户针对项目、文件夹或组织具有以下角色之一。
    • roles/owner
    • roles/cloudasset.viewer
  4. 设置 Cloud Storage 存储分区,以存储导出的快照。

下载凭据文件

调用 Cloud Asset API 需要 JSON 凭据文件。请按照以下流程下载该文件。

  1. 转到“凭据”页面

  2. 打开创建凭据下拉列表,然后选择 OAuth 客户端 ID

  3. 要为新项目创建客户端 ID,您必须设置 OAuth 同意屏幕。当使用您的客户端 ID 的某个应用请求访问私有数据时,就会显示同意屏幕。如果出现提示,请执行以下操作:

    1. 点击配置同意屏幕,并为同意屏幕输入所需信息。

    2. 保存更改并返回到创建客户端 ID 的页面。

  4. 创建客户端 ID 页面中的应用类型下,选择其他

  5. 输入凭据名称,然后点击创建。此时将出现一个包含客户端 ID 和客户端密钥的确认对话框。

  6. 关闭确认对话框,然后点击右侧的下载图标,以保存新的客户端 ID JSON 文件。

  7. 命名并移动已下载的 JSON 文件,使其路径为 ~/credentials.json

准备环境

请按照以下流程为调用 Cloud Asset API 准备环境。

  1. 使用以下命令验证初始设置。

    oauth2l header --json ~/credentials.json cloud-platform
    

    您应该会看到类似于如下内容的输出:

    Authorization: Bearer y29.xxxxxxx
    
  2. 使用以下命令定义 shell 别名,以从其调用 Google REST API。

    alias gcurl='curl -H "$(oauth2l header --json ~/credentials.json \
    cloud-platform)" -H "Content-Type: application/json" '
    

导出资产快照

根据您希望导出的快照所具有的详细程度,选择一条支持的命令。以下命令会将导出的快照存储在 Cloud Storage 存储分区中,存储位置为 gs://YOUR_BUCKET/NEW_FILE

要导出组织的资产快照,请在以下 gcurl 命令中使用 https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_NUMBER:exportAssets REST 方法。

要导出文件夹的资产快照,请使用 https://cloudasset.googleapis.com/v1/folders/FOLDER_NUMBER:exportAssets REST 方法。

导出项目中的所有资源名称(不包含元数据)

gcurl -d '{"outputConfig":{"gcsDestination": \
          {"uri":"gs://YOUR_BUCKET/NEW_FILE"}}}' \
           https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:exportAssets

导出项目中的所有资源元数据

gcurl -d '{"contentType":"RESOURCE", "outputConfig":{"gcsDestination": \
          {"uri":"gs://YOUR_BUCKET/NEW_FILE"}}}' \
           https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:exportAssets

导出项目中的 Cloud IAM 政策

gcurl -d '{"contentType":"IAM_POLICY", "outputConfig":{\
           "gcsDestination": {"uri":"gs://YOUR_BUCKET/NEW_FILE"}}}' \
           https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:exportAssets

查看资产快照

要查看导出的资产,请转到 Cloud Storage 浏览器页面,并打开新文件。导出结果列出了资产及其资源名称

检查导出作业的状态

资产导出是一个长期持续运行的流程。对于大多数项目、文件夹和组织来说,导出过程只需要几秒钟。而对于拥有众多项目和资源的大型文件夹和组织,该过程可能需要花费更长时间。您可以使用某项导出作业的操作编号来检查导出请求的状态。

要检查某项导出作业的状态,请执行以下操作:

  1. 从响应的 name 字段中获取操作编号。

    "name": "projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_NUMBER"
    

  2. 在以下命令中输入操作编号。

    gcurl https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_NUMBER

系统将返回一条类似于以下内容的响应:

{
  "name": "projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_NUMBER",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.asset.v1.ExportAssetsRequest",
    "parent": "projects/PROJECT_NUMBER",
    "outputConfig": {
      "gcsDestination": {
        "uri": "gs://YOUR_BUCKET/NEW_FILE"
      }
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.asset.v1.ExportAssetsResponse",
    "readTime": [timestamp],
    "outputConfig": {
      "gcsDestination": {
        "uri": "gs://YOUR_BUCKET/NEW_FILE"
      }
    }
  }
}

针对整个文件夹或组织,您还可以调用 ExportAssets。如需了解详情,请参阅 Cloud Asset API 参考

获取资产的历史记录

要使用 batchGetAssetsHistory 方法获取项目中指定资产在给定时间范围内的创建、删除和更新历史记录,请按照以下流程操作。

要获取组织的历史记录,请在 https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_NUMBER:batchGetAssetsHistory 命令中使用 gcurl REST 方法。

  1. 确保可以通过准备环境来调用 Cloud Asset API。
  2. 确定要查找其历史记录的资产的完整资源名称。以下示例使用的是 //compute.googleapis.com/projects/my_project_id/global/firewalls/default-firewall
  3. 确定时间范围的开始时间和结束时间(采用 RFC 3339 UTC 格式)。只有开始时间是必需的。如需了解更多信息,请参阅 TimeWindow
  4. 根据您希望资源所具有的详细程度,选择一条支持的命令。

获取项目中指定资产的历史记录,包括所有资源元数据

gcurl -d '{"contentType":"RESOURCE", \
           "assetNames": \
             "//compute.googleapis.com/projects/my_project_id/global/firewalls/default-firewall", \
           "readTimeWindow": {"startTime": "2014-10-02T15:01:23.045123456Z"}}' \
      https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:batchGetAssetsHistory

获取项目中指定资产的历史记录,不包括资源元数据

gcurl -d '{"assetNames": \
             "//compute.googleapis.com/projects/my_project_id/global/firewalls/default-firewall", \
           "readTimeWindow": {"startTime": "2014-10-02T15:01:23.045123456Z"}}' \
      https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:batchGetAssetsHistory

获取项目中指定资产的所有 Cloud IAM 政策的历史记录

gcurl -d '{"contentType":"IAM_POLICY", \
           "assetNames": \
             "//compute.googleapis.com/projects/my_project_id/global/firewalls/default-firewall", \
           "readTimeWindow": {"startTime": "2014-10-02T15:01:23.045123456Z"}}' \
      https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:batchGetAssetsHistory

系统将返回以下格式的历史记录:

{
  "assets": [
    {
      "window": {
        "startTime": 
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Resource Manager 文档