Cloud Asset Inventory 数据分析有助于检测资产配置中的潜在风险,并帮助您改进安全态势。它是 Recommender 服务的一部分,并作为 google.cloudasset.asset.Insight
数据分析类型提供。
数据分析是一种特殊的异常值,需要进一步分析才能确定适当的操作。系统会根据存储在 Cloud Asset Inventory 中的数据的快照每天生成这些数据。
Cloud Asset Inventory 提供的数据分析基于与贵组织资源关联的 IAM 政策。
准备工作
在开始使用 Asset Insights 之前,您必须完成以下步骤。
请确保您的账号具有以下权限:
recommender.cloudAssetInsights.get
recommender.cloudAssetInsights.list
recommender.cloudAssetInsights.update
您可以单独授予这些权限,也可以授予以下角色之一。
Cloud Asset Insights Viewer (
roles/recommender.cloudAssetInsightsViewer
) 角色Cloud Asset Insights Admin (
roles/recommender.cloudAssetInsightsAdmin
) 角色
限制
这些数据分析不会将群组成员资格或服务账号视为其发现结果的一部分,不应被视为匹配漏洞的详尽列表。
单个数据分析包括匹配 IAM 政策采样(最多 100 项不同的政策)。您可以通过搜索资源的 IAM 允许政策来检索所有匹配政策。
请求素材资源数据分析
如需请求资产数据分析,最简单的方法是列出这些数据分析,如以下步骤所示。对于其他类型的数据分析互动,请参阅使用 API - 数据分析。
gcloud
gcloud recommender insights list \ --SCOPE \ --location=global \ --insight-type=google.cloudasset.asset.Insight \ --filter="insightSubtype:SUBTYPE" \
请提供以下值:
-
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
您可以使用以下命令检索组织的 ID: Google Cloud
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,该项目 ID 具有管理您的结算和配额的权限。 详细了解如何设置结算项目。 -
SUBTYPE
:资产数据分析子类型。可采用下列任一值:-
EXTERNAL_MEMBER
:检测包含属于组织网域外部网域的用户或群组的 IAM 政策。 -
EXTERNAL_POLICY_EDITOR
:检测包含组织网域外部的用户或群组(拥有修改 IAM 政策的权限)的 IAM 政策。 -
EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER
:检测包含组织网域外部的用户或群组(拥有获取或列出存储对象的权限 [storage.objects.list
或storage.objects.get
权限])的 IAM 政策。 -
EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR
:检测包含组织网域外部的用户或群组(拥有模拟服务账号的权限)的 IAM 政策。 -
TERMINATED_MEMBER
:检测包含用户或群组(拥有已停用、已删除或已清除账号)的 IAM 政策。 -
PUBLIC_IAM_POLICY
:检测包含所有用户或所有经过身份验证的用户的 IAM 政策。 -
OWNER_TERMINATED_PROJECT
:检测项目的 IAM 政策中不包含任何活跃用户或群组的项目。
-
如果未指定,则返回所有子类型。
如需了解所有选项,请参阅 gcloud CLI 参考文档。
示例
运行以下命令,列出 my-project
项目的数据分析。
gcloud recommender insights list \ --project=my-project \ --location=global \ --insight-type=google.cloudasset.asset.Insight
示例响应
INSIGHT_ID: 00000000-0000-0000-0000-000000000000 CATEGORY: SECURITY INSIGHT_STATE: ACTIVE LAST_REFRESH_TIME: 2024-01-30T00:00:00Z SEVERITY: LOW INSIGHT_SUBTYPE: EXTERNAL_MEMBER DESCRIPTION: Domain example.com detected in 1 IAM policies
REST
HTTP 方法和网址:
GET https://recommender.googleapis.com/v1/SCOPE_PATH/locations/global/insightTypes/google.cloudasset.asset.Insight/insights
标头:
X-Goog-User-Project: BILLING_PROJECT_ID
请提供以下值:
-
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
您可以使用以下命令检索组织的 ID: Google Cloud
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
:默认 Cloud Asset Inventory 服务代理所在的项目 ID,该项目 ID 具有管理您的结算和配额的权限。 详细了解如何设置结算项目。
命令示例
运行以下任一命令,列出 my-project
项目的数据分析。
curl(Linux、macOS 或 Cloud Shell)
curl -X GET \ -H "X-Goog-User-Project: BILLING_PROJECT_ID" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://recommender.googleapis.com/v1/projects/my-project/locations/global/insightTypes/google.cloudasset.asset.Insight/insights
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://recommender.googleapis.com/v1/projects/my-project/locations/global/insightTypes/google.cloudasset.asset.Insight/insights" | Select-Object -Expand Content
示例响应
{ "name": "organizations/000000000000/locations/global/insightTypes/google.cloudasset.asset.Insight/insights/00000000-0000-0000-0000-000000000000", "description": "Domain example.com detected in 1 IAM policies", "content": { "domain": "example.com", "policyCount": 1, "policySearchQuery": "policy: example.com", "matchedPolicies" :[ { "resource" :"//cloudresourcemanager.googleapis.com/projects/000000000000", "project" :"projects/000000000000", "matchedBindings" :[ { "role" :"roles/viewer", "matchedMembers" :[ "user:example@example.com" ] } ] } ] }, "lastRefreshTime": "2024-01-30T00:00:00Z", "observationPeriod": "0s", "stateInfo": { "state": "ACTIVE" }, "category": "SECURITY", "targetResources": [ "//cloudresourcemanager.googleapis.com/organizations/000000000000" ], "insightSubtype": "EXTERNAL_MEMBER", "etag": "\"00000000000\"", "initialRefreshTime": "2024-01-30T00:00:00Z" }
解读数据分析响应
除了标准数据分析属性之外,Asset Insights 还提供了多个专用子类型和字段。
数据分析子类型
Asset Insight 子类型如下:
EXTERNAL_MEMBER
:检测包含属于组织网域外部网域的用户或群组的 IAM 政策。EXTERNAL_POLICY_EDITOR
:检测包含组织网域外部的用户或群组(拥有修改 IAM 政策的权限)的 IAM 政策。EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER
:检测包含组织网域外部的用户或群组(拥有获取或列出存储对象的权限(storage.objects.list
或storage.objects.get permission
))的 IAM 政策。EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR
:检测包含组织网域外部的用户或群组(拥有模拟服务账号的权限)的 IAM 政策。TERMINATED_MEMBER
:检测包含用户或群组(拥有已停用、已删除或已清除账号)的 IAM 政策。PUBLIC_IAM_POLICY
:检测包含所有用户或所有经过身份验证的用户的 IAM 政策。OWNER_TERMINATED_PROJECT
:检测项目的 IAM 政策中不包含任何活跃用户或群组的项目。
其他内容字段
除了响应中的标准字段外,Asset Insights 还在 content
字段中提供了多个专用字段。
user
:在此数据分析的政策绑定中检测到的用户电子邮件地址。此字段包含在TERMINATED_MEMBER
子类型中。domain
:在此数据分析的政策绑定中检测到的网域。此字段包含在EXTERNAL_MEMBER
、EXTERNAL_POLICY_EDITOR
、EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER
和EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR
子类型中。assetName
:检测到此数据分析的访问权限的资源名称。此字段包含在OWNER_TERMINATED_PROJECT
和PUBLIC_IAM_POLICY
子类型中。policyCount
:针对此数据分析中检测到匹配成员的不同 IAM 政策的总数。所有 Asset Insights 子类型都包括此字段。matchedPolicies
:与检测到的数据分析匹配的 IAM 政策样本。匹配政策将仅包含与检测到的数据分析相匹配的绑定和绑定成员的子集。所有资产数据分析子类型都包括此字段。policySearchQuery
:可与 Cloud Asset Inventory IAM Policy Search API 搭配使用以实时检索相关政策的查询。