您可以列出 Google Cloud 项目、文件夹或组织中的资产。
准备工作
在您运行 Cloud Asset Inventory 命令的项目中启用 Cloud Asset Inventory API。
确保您的账号拥有调用 Cloud Asset Inventory API 的正确角色。如需了解每种通话类型的各项权限,请参阅权限。
限制
列出 BigQuery 表数据时,并非所有字段都受支持。
BigQuery 元数据中经常更改的资产字段(例如
numBytes
、numLongTermBytes
、numPhysicalBytes
和numRows
)会被分配null
值。
列出您的资产
控制台
您只能在 Google Cloud 控制台中查看内容类型为 RESOURCE
的资产。如需查看其他类型的内容,或按更精确的条件进行过滤,请改用 gcloud CLI、REST 或客户端库。
如需列出项目、文件夹或组织的资源元数据,请完成以下步骤:
-
在 Google Cloud 控制台中,前往资产库存页面。
- 切换到您要列出资源的相应项目、文件夹或组织。
- 点击资源标签页。
- 在过滤结果面板中,选择要按资源类型、项目或位置过滤结果。
- 如需查看资源的元数据,请在结果面板中点击资源的显示名称。
gcloud
gcloud asset list \ --SCOPE \ --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \ --content-type=CONTENT_TYPE \ --relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \ --snapshot-time="SNAPSHOT_TIME"
请提供以下值:
-
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
您可以使用以下命令检索组织级层文件夹的 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
-
-
organization=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))"
-
-
ASSET_TYPE_#
:可选。以英文逗号分隔的 可搜索资产类型列表。 支持 RE2 兼容的正则表达式。如果正则表达式与任何支持的资源类型均不匹配,则会返回INVALID_ARGUMENT
错误。如果未指定--asset-types
,则返回所有资产类型。CONTENT_TYPE
:可选。您要检索的元数据的 内容类型。如果未指定--content-type
,则仅返回基本信息,例如资产名称、资产上次更新时间以及资产所属的项目、文件夹和组织。-
RELATIONSHIP_TYPE_#
:可选。需要有权访问 Security Command Center 高级方案或 Enterprise 方案,或者 Gemini Cloud Assist。以英文逗号分隔的资产关系类型列表,用于指定要检索的关系类型。您必须将CONTENT_TYPE
设置为RELATIONSHIP
, 才能使此功能正常运行。 -
SNAPSHOT_TIME
:可选。您希望截取资源快照的时间,采用 gcloud topic datetime 格式。该值必须是过去不超过 35 天的时间。如果未指定--snapshot-time
,则在当前时间截取快照。
如需查看所有选项,请参阅 gcloud CLI 参考文档。
示例
以下命令会获取 my-project
项目中截至 2024 年 1 月 30 日 (2024-01-30
) 的 Compute Engine 实例的 resource
元数据快照。
在运行此命令之前,请务必将快照时间更改为过去 35 天内的某个时间,并更改项目名称。
gcloud asset list \ --project=my-project \ --asset-types=compute.googleapis.com/Instance \ --content-type=resource \ --snapshot-time="2024-01-30"
示例响应
--- ancestors: - projects/000000000000 - folders/000000000000 - organizations/000000000000 assetType: compute.googleapis.com/Instance name: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-name resource: data: ASSET_METADATA updateTime: '2024-01-30T00:00:00.000000Z'
REST
HTTP 方法和网址:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH/assets
请求 JSON 正文:
{ "assetTypes": [ "ASSET_TYPE_1", "ASSET_TYPE_2", "..." ], "contentType": "CONTENT_TYPE", "relationshipTypes": [ "RELATIONSHIP_TYPE_1", "RELATIONSHIP_TYPE_2", "..." ], "readTime": "SNAPSHOT_TIME", "pageSize": "PAGE_SIZE", "pageToken": "PAGE_TOKEN" }
请提供以下值:
-
SCOPE_PATH
:请使用以下某个值:允许使用的值包括:
-
projects/PROJECT_ID
,其中PROJECT_ID
是包含您要检索的资产的项目的 ID。 -
projects/PROJECT_NUMBER
,其中PROJECT_NUMBER
是包含您要检索的资产的项目的编号。如何查找 Google Cloud 项目编号
Google Cloud 控制台
如需查找 Google Cloud 项目编号,请完成以下步骤:
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 控制台。
- 点击菜单栏中的切换器列表框。
- 从列表框中选择您的组织。
- 搜索您的文件夹名称。文件夹 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
是包含您要检索的资产的组织的 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))"
-
-
ASSET_TYPE_#
:可选。 可搜索的资产类型数组。 支持 RE2 兼容的正则表达式。如果正则表达式与任何支持的资源类型均不匹配,则会返回INVALID_ARGUMENT
错误。如果未指定assetTypes
,则返回所有资产类型。CONTENT_TYPE
:可选。您要检索的元数据的 内容类型。如果未指定contentType
,则仅返回基本信息,例如资产名称、资产上次更新时间以及资产所属的项目、文件夹和组织。-
RELATIONSHIP_TYPE_#
:可选。需要有权访问 Security Command Center 高级方案或 Enterprise 方案,或者 Gemini Cloud Assist。以英文逗号分隔的资产关系类型列表,用于指定要检索的关系类型。您必须将CONTENT_TYPE
设置为RELATIONSHIP
, 才能使此功能正常运行。 -
SNAPSHOT_TIME
:可选。您希望截取资源快照的时间,采用 RFC 3339 格式。该值必须是过去不超过 35 天的时间。如果未指定readTime
,则在当前时间截取快照。 -
PAGE_SIZE
:可选。每页返回的结果数。最大值是 500。如果该值设为0
或负值,系统会选择适当的默认值。系统会返回nextPageToken
以检索后续结果。 -
PAGE_TOKEN
:可选。较长的请求响应会分布在多个页面上。如果未指定pageToken
,则返回第一页。 后续页面可以通过使用上一个响应的nextPageToken
作为pageToken
值来调用。
如需了解所有选项,请参阅 REST 参考文档。
命令示例
以下命令会获取 my-project
项目中截至 2024 年 1 月 30 日 (2024-01-30T00:00:00Z
) 的 Compute Engine 实例的 resource
元数据快照。
在运行这些命令之前,请务必将快照时间更改为过去 35 天内的某个时间,并更改项目名称。
curl(Linux、macOS 或 Cloud Shell)
curl -X POST \ -H "X-HTTP-Method-Override: GET" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "assetTypes": ["compute.googleapis.com/Instance"], "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z" }' \ https://cloudasset.googleapis.com/v1/projects/my-project/assets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-HTTP-Method-Override" = "GET"; "Authorization" = "Bearer $cred" } $body = @" { "assetTypes": ["compute.googleapis.com/Instance"], "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/assets" | Select-Object -Expand Content
示例响应
{ "readTime": "2024-01-30T00:00:00Z", "assets": [ { "name": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-name", "assetType": "compute.googleapis.com/Instance", "resource": { "version": "v1", "discoveryDocumentUri": "https://www.googleapis.com/discovery/v1/apis/compute/v1/rest", "discoveryName": "Instance", "parent": "//cloudresourcemanager.googleapis.com/projects/000000000000", "data": { ASSET_METADATA }, "location": "us-central1-a" }, "ancestors": [ "projects/000000000000", "folders/000000000000", "organizations/000000000000" ], "updateTime": "2024-01-30T00:00:00.000000Z" } ] }
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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。