利用资产数据分析改善安全状况

Cloud Asset Inventory 数据分析有助于检测资产中的潜在风险 配置,并帮助您改善安全状况。它是 Recommender 服务的一部分,并作为 google.cloudasset.asset.Insight 数据分析类型提供。

数据分析是指需要进一步分析才能确定的具体异常情况 适当的操作。系统每天都会根据数据快照生成这类报告 存储在 Cloud Asset Inventory 中。

Cloud Asset Inventory 提供的数据分析基于与贵组织资源关联的 IAM 政策。

准备工作

您必须先完成以下操作,然后才能开始使用素材资源数据分析 步骤。

  1. 启用 Recommender API

  2. 请确保您的账号具有以下权限:

    • 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,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        <ph type="x-smartling-placeholder"></ph> 前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器列表框。
      3. 从列表框中选择您的组织。
      4. 搜索您的文件夹名称。文件夹 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,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        <ph type="x-smartling-placeholder"></ph> 前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器列表框。
      3. 从列表框中选择您的组织。
      4. 点击全部标签页。组织 ID 会显示在组织名称旁边。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 组织的 ID:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,该项目 ID 具有管理您的结算和配额的权限。 <ph type="x-smartling-placeholder"></ph> 详细了解如何设置结算项目

  • SUBTYPE:素材资源数据分析子类型。其中一个 以下值:

    • EXTERNAL_MEMBER:检测包含属于组织网域外部网域的用户或群组的 IAM 政策。
    • EXTERNAL_POLICY_EDITOR:检测包含组织网域外部的用户或群组(拥有修改 IAM 政策的权限)的 IAM 政策。
    • EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER:检测包含组织网域外部的用户或群组(拥有获取或列出存储对象的权限 [storage.objects.liststorage.objects.get 权限])的 IAM 政策。
    • EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR:检测 IAM 政策 包含您组织网域外已被授予的用户或群组 模拟服务账号的权限。
    • TERMINATED_MEMBER:检测包含用户或 包含已停用、已删除或已完全清除账号的群组。
    • 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 项目编号,请完成以下步骤:

      1. 前往 Google Cloud 控制台中的欢迎页面。

        前往“欢迎”页面

      2. 点击菜单栏中的切换器列表框。
      3. 从列表框中选择您的组织,然后搜索您的项目名称。 项目名称、项目编号和项目 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,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        <ph type="x-smartling-placeholder"></ph> 前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器列表框。
      3. 从列表框中选择您的组织。
      4. 搜索您的文件夹名称。文件夹 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,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器列表框。
      3. 从列表框中选择您的组织。
      4. 点击全部标签页。组织 ID 会显示在组织名称旁边。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 组织的 ID:

      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)

<ph type="x-smartling-placeholder">
$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 还提供了多个专用子类型和字段。

数据分析子类型

素材资源数据分析子类型如下所示:

  • EXTERNAL_MEMBER:检测包含属于组织网域外部网域的用户或群组的 IAM 政策。

  • EXTERNAL_POLICY_EDITOR:检测包含组织网域外部的用户或群组(拥有修改 IAM 政策的权限)的 IAM 政策。

  • EXTERNAL_CLOUD_STORAGE_OBJECT_VIEWER:检测包含组织网域外部的用户或群组(拥有获取或列出存储对象的权限(storage.objects.liststorage.objects.get permission))的 IAM 政策。

  • EXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR:检测包含组织网域外部的用户或群组(拥有模拟服务账号的权限)的 IAM 政策。

  • TERMINATED_MEMBER:检测包含用户或群组(拥有已停用、已删除或已清除账号)的 IAM 政策。

  • PUBLIC_IAM_POLICY:检测包含所有用户或所有经过身份验证的用户的 IAM 政策。

  • OWNER_TERMINATED_PROJECT:检测不含任何活跃 build 的项目 用户或群组。

其他内容字段

除了响应中的标准字段之外,素材资源数据分析还提供 content 字段中的多个专业字段。

  • user:在此数据分析的政策绑定中检测到的用户电子邮件地址。此字段包含在 TERMINATED_MEMBER 子类型中。

  • domain:在此政策绑定的成员中检测到的网域 数据分析。此字段包含在 EXTERNAL_MEMBEREXTERNAL_POLICY_EDITOREXTERNAL_CLOUD_STORAGE_OBJECT_VIEWEREXTERNAL_SERVICE_ACCOUNT_IMPERSONATOR 子类型中。

  • assetName:在此数据分析中检测到访问权限的资产名称。 此字段包含在 OWNER_TERMINATED_PROJECTPUBLIC_IAM_POLICY 子类型中。

  • policyCount:针对此数据分析中检测到匹配成员的不同 IAM 政策的总数。所有 Asset Insights 子类型都包括此字段。

  • matchedPolicies:符合 检测到的数据分析。匹配政策仅包含部分绑定和 绑定成员(与检测到的数据分析匹配的成员)。包含此字段的适用范围是 所有素材资源数据分析子类型。

  • policySearchQuery:可与 Cloud Asset Inventory 搭配使用的查询 IAM Policy Search API,用于实际检索相关政策 。