本文档介绍了如何将项目的资产元数据导出到 Cloud Storage 存储桶。
准备工作
在运行 Cloud Asset Inventory 命令的项目中启用 Cloud Asset Inventory API 。
确保您的账号具有调用 Cloud Asset Inventory API 的正确角色。如需了解每种通话类型的单独权限,请参阅 权限。
创建 Cloud Storage 存储桶(如果您尚未创建)。
限制
不支持使用自定义 Cloud Key Management Service (Cloud KMS) 密钥加密的 Cloud Storage 存储桶。
Cloud Storage 存储桶不能 保留政策设置完成的。
导出期间,操作可能会在输出中创建临时文件 文件夹中。操作正在进行时,请勿移除这些临时文件。 操作完成后,系统会自动移除临时文件。
ACCESS_POLICY
内容类型只能在组织级别导出。如果要导出到的文件已存在且正在导出,系统会返回
400
错误。为了测试权限,Cloud Asset Inventory 在导出 数据,这会发送一个额外的 Cloud Storage 触发器事件,
google.cloud.storage.object.v1.finalized
。
将资产快照导出到 Cloud Storage
gcloud
gcloud asset export \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \ --content-type=CONTENT_TYPE \ --relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \ --snapshot-time="SNAPSHOT_TIME" \ --output-path="gs://BUCKET_NAME/FILENAME"
请提供以下值:
-
SCOPE
:请使用以下某个值:-
project=PROJECT_ID
,其中PROJECT_ID
为 包含您要导出的资产元数据的项目的 ID。 -
folder=FOLDER_ID
,其中FOLDER_ID
为 包含您要导出的资产元数据的文件夹的 ID。如何查找 Google Cloud 文件夹的 ID
Google Cloud 控制台
如需查找 Google Cloud 文件夹的 ID,请完成以下步骤:
-
转到 Google Cloud 控制台。
- 点击菜单栏中的切换器列表框。
- 从列表框中选择您的组织。
- 搜索您的文件夹名称。文件夹 ID 显示在文件夹名称旁边。
gcloud CLI
您可以使用以下命令检索位于组织级别的 Google Cloud 文件夹的 ID:
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
-
-
organization=ORGANIZATION_ID
,其中ORGANIZATION_ID
是包含您要导出的资产元数据的组织的 ID。如何查找 Google Cloud 组织的 ID
Google Cloud 控制台
如需查找 Google Cloud 组织的 ID,请完成以下步骤:
-
转到 Google Cloud 控制台。
<ph type="x-smartling-placeholder"></ph> 前往 Google Cloud 控制台
- 点击菜单栏中的切换器列表框。
- 从列表框中选择您的组织。
- 点击全部标签页。组织 ID 显示在组织名称旁边。
gcloud CLI
您可以使用以下命令检索 Google Cloud 组织的 ID:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,该代理具有管理您的 BigQuery 数据集和表的权限。 <ph type="x-smartling-placeholder"></ph> 详细了解如何设置结算项目。 ASSET_TYPE_#
:可选。可搜索的素材资源类型以英文逗号分隔的列表。 <ph type="x-smartling-placeholder"></ph> 支持与 RE2 兼容的正则表达式。如果正则表达式不匹配 任何受支持的素材资源类型都会返回INVALID_ARGUMENT
错误。时间 未指定--asset-types
,则返回所有素材资源类型。CONTENT_TYPE
:可选。您要检索的元数据的内容类型。如果未指定--content-type
,则只会返回基本信息,例如素材资源名称、上次更新素材资源的时间,以及素材资源所属的项目、文件夹和组织。-
RELATIONSHIP_TYPE_#
:可选。仅适用于 Security Command Center 高级层级和企业层级 位订阅者。您要检索的资产关系类型的英文逗号分隔列表。您必须将CONTENT_TYPE
设置为RELATIONSHIP
,此功能才能正常运行。 -
SNAPSHOT_TIME
:可选。您希望截取资源快照的时间,采用 gcloud topic datetime 格式。该值不得超过 35 天前。如果未指定--snapshot-time
,系统会截取当前时间的快照。 BUCKET_NAME
: 要向其写入数据的 Cloud Storage 存储桶。FILENAME
:要写入的 Cloud Storage 存储桶中的文件。
如需了解更多详情,请参阅 gcloud CLI 参考 所有选项
示例
运行以下命令,将 my-project
项目中 2024 年 1 月 30 日的 resource
元数据导出到 Cloud Storage 存储桶 my-bucket
中的 my-file.txt
文件。
gcloud asset export \ --project=my-project \ --billing-project=my-project \ --content-type=resource \ --snapshot-time="2024-01-30" \ --output-path="gs://my-bucket/my-file.txt"
示例响应
Export in progress for root asset [projects/my-project]. Use [gcloud asset operations describe projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000] to check the status of the operation.
REST
HTTP 方法和网址:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:exportAssets
标头:
X-Goog-User-Project: BILLING_PROJECT_ID
请求 JSON 正文:
{ "assetTypes": [ "ASSET_TYPE_1", "ASSET_TYPE_2", "..." ], "contentType": "CONTENT_TYPE", "relationshipTypes": [ "RELATIONSHIP_TYPE_1", "RELATIONSHIP_TYPE_2", "..." ], "readTime": "SNAPSHOT_TIME", "outputConfig": { "gcsDestination": { "uri": "gs://BUCKET_NAME/FILENAME" } } }
请提供以下值:
-
SCOPE_PATH
:请使用以下某个值:允许使用的值包括:
-
projects/PROJECT_ID
,其中PROJECT_ID
是包含要导出的资产元数据的项目的 ID。 -
projects/PROJECT_NUMBER
,其中PROJECT_NUMBER
是包含要导出的资产元数据的项目的编号。如何查找 Google Cloud 项目编号
Google Cloud 控制台
如需查找 Google Cloud 项目编号,请完成以下步骤:
-
前往 Google Cloud 控制台中的欢迎页面。
<ph type="x-smartling-placeholder"></ph> 前往“欢迎”
- 点击菜单栏中的切换器列表框。
-
从列表框中选择您的组织,然后搜索您的项目名称。 项目名称、项目编号和项目 ID 显示在欢迎标题附近。
最多显示 4,000 个资源。如果您没有看到要查找的项目,请前往管理资源页面,然后使用该项目的名称过滤列表。
gcloud CLI
您可以使用以下命令检索 Google Cloud 项目编号:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
,其中FOLDER_ID
为 包含您要导出的资产元数据的文件夹的 ID。如何查找 Google Cloud 文件夹的 ID
Google Cloud 控制台
如需查找 Google Cloud 文件夹的 ID,请完成以下步骤:
-
转到 Google Cloud 控制台。
<ph type="x-smartling-placeholder"></ph> 前往 Google Cloud 控制台
- 点击菜单栏中的切换器列表框。
- 从列表框中选择您的组织。
- 搜索您的文件夹名称。文件夹 ID 显示在文件夹名称旁边。
gcloud CLI
您可以使用以下命令检索位于组织级别的 Google Cloud 文件夹的 ID:
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
是包含您要导出的资产元数据的组织的 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))"
-
-
-
BILLING_PROJECT_ID
:项目 ID 默认 Cloud Asset Inventory 服务代理所在的,有权管理您的 BigQuery 数据集和表。 <ph type="x-smartling-placeholder"></ph> 详细了解如何设置结算项目。 ASSET_TYPE_#
:可选。可搜索资产类型的数组。 支持 与 RE2 兼容的正则表达式。如果正则表达式与任何支持的资源类型均不匹配,则会返回INVALID_ARGUMENT
错误。时间 未指定assetTypes
,则返回所有素材资源类型。CONTENT_TYPE
:可选。您要检索的元数据的内容类型。如果未指定contentType
,则只会返回基本信息,例如素材资源名称、上次更新素材资源的时间,以及素材资源所属的项目、文件夹和组织。-
RELATIONSHIP_TYPE_#
:可选。仅适用于 Security Command Center 高级层级和企业层级订阅者。您要检索的资产关系类型的英文逗号分隔列表。您必须将CONTENT_TYPE
设置为RELATIONSHIP
,此功能才能正常运行。 -
SNAPSHOT_TIME
:可选。您希望截取资源快照的时间,采用 RFC 3339 格式。该值不得超过 35 天前。如果未指定readTime
,系统会在当前时间截取快照。 BUCKET_NAME
:要写入的 Cloud Storage 存储桶的名称。FILENAME
: Cloud Storage 存储桶中要写入的文件。
如需了解详情,请参阅 REST 参考 选项。
命令示例
运行以下命令之一,按原样导出 resource
元数据
2024 年 1 月 30 日的 my-project
项目中,导出到 my-file.txt
中的
Cloud Storage 存储桶 my-bucket
。
curl(Linux、macOS 或 Cloud Shell)
<ph type="x-smartling-placeholder">curl -X POST \ -H "X-Goog-User-Project: BILLING_PROJECT_ID" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/my-file" } } }' \ https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/my-file" } } } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets" | Select-Object -Expand Content
示例响应
{ "name": "projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000", "metadata": { "@type": "type.googleapis.com/google.cloud.asset.v1.ExportAssetsRequest", "parent": "projects/000000000000", "readTime": "2024-01-30T00:00:00Z", "contentType": "RESOURCE", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/export.txt" } } } }
C#
如需了解如何安装和使用 Cloud Asset Inventory 客户端库,请参阅 Cloud Asset Inventory 客户端库。
如需向 Cloud Asset Inventory 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 Cloud Asset Inventory 的客户端库,请参阅 Cloud Asset Inventory 客户端库。
如需向 Cloud Asset Inventory 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Cloud Asset Inventory 的客户端库,请参阅 Cloud Asset Inventory 客户端库。
如需向 Cloud Asset Inventory 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Cloud Asset Inventory 的客户端库,请参阅 Cloud Asset Inventory 客户端库。
如需向 Cloud Asset Inventory 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用 Cloud Asset Inventory 客户端库,请参阅 Cloud Asset Inventory 客户端库。
如需向 Cloud Asset Inventory 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Cloud Asset Inventory 客户端库,请参阅 Cloud Asset Inventory 客户端库。
如需向 Cloud Asset Inventory 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用 Cloud Asset Inventory 客户端库,请参阅 Cloud Asset Inventory 客户端库。
如需向 Cloud Asset Inventory 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
查看导出作业的状态
导出需要一段时间才能完成。如需检查导出操作是否已完成,您可以使用操作 ID 查询该操作。
请注意,即使您已完成导出,其他人可能仍然 导出到与另一个操作相同的目标。在先前请求完成后,或在超过 15 分钟后,您可以向同一目标发出新的导出请求。在这些条件之外发出的导出请求将被 Cloud Asset Inventory 拒绝。
gcloud
如需查看导出状态,请按照以下说明操作:
获取包含操作的
OPERATION_PATH
ID。OPERATION_PATH
显示在导出响应中,其格式如下所示:projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
要检查导出状态,请使用
OPERATION_PATH
运行以下命令:gcloud asset operations describe OPERATION_PATH
REST
如需查看导出状态,请按照以下说明操作:
获取包含操作的
OPERATION_PATH
ID。OPERATION_PATH
显示为导出响应中name
字段的值,其格式如下所示:projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
如需检查导出状态,请发出以下请求。
REST
HTTP 方法和网址:
GET https://cloudasset.googleapis.com/v1/OPERATION_PATH
命令示例
curl(Linux、macOS 或 Cloud Shell)
<ph type="x-smartling-placeholder">curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://cloudasset.googleapis.com/v1/OPERATION_PATH
PowerShell (Windows)
<ph type="x-smartling-placeholder">$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://cloudasset.googleapis.com/v1/OPERATION_PATH" | Select-Object -Expand Content
示例响应
{ "name": "projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000", "metadata": { "@type": "type.googleapis.com/google.cloud.asset.v1.ExportAssetsRequest", "parent": "projects/000000000000", "readTime": "2024-01-30T00:00:00Z", "contentType": "RESOURCE", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/export.txt" } } } }
查看资产快照
要查看资产快照,请执行以下操作:
进入 Google Cloud 控制台中的 Cloud Storage 存储桶页面。
点击将资产快照导出到的存储桶的名称,然后点击 点击导出文件名。
点击下载以下载资产快照,然后在 文本编辑器。