使用 Feed 界面

支持:

本文档介绍了如何在 Feed 管理界面中创建、排查和管理 Feed,包括修改、启用和删除 Feed 的说明。

准备工作

每个数据 Feed 都需要满足特定的前提条件,然后才能在 Google Security Operations 中进行设置。如需了解 Feed 的要求,请参阅按来源类型配置,并搜索您的特定数据源。

支持的压缩格式和文件大小

Feed 提取支持的压缩格式包括 .gz、.tar.gz、.tar 和 solr.gz。 下表概述了 Google SecOps Feed 转换支持的不同文件大小:

操作 输入类型 推荐大小 预计时长 最大大小
数据建模 CSV < 5 GB < 7 分钟 10 GB
数据建模 CSV < 5 GB 约 30 分钟 10 GB
数据建模 CSV 待定 待定 2 GB
数据建模 XML / JSON < 1 GB < 10 分钟 2 GB
数据建模 XLS / XLSX < 50 MB 约 1 分钟 50 MB
合并文件 不限 < 1 GB 因文件数量而异 100 GB
解压缩文件 非 ZIP < 5 GB 因文件数量而异 10 GB(未压缩)
解压缩文件 ZIP - 因文件数量而异 4 GB(未压缩)

日志行限制和定界符

提取基于文本的日志(JSON、CSV 或 Syslog)时,请确保数据符合以下特定的提取限制:

  • 单行大小上限:单行日志不能超过 4MB。如果单行超出此限制,Feed 会失败并显示错误 MaxLogLineSize4MBExceeded。
  • 支持的分隔符:支持换行符 (\n) 和回车符 + 换行符 (\r\n)。

更改关联的云项目对数据 Feed 的影响

如果您要更新 Google Cloud 与 Google SecOps 实例关联的项目,则使用以下连接器注入数据的所有 Feed 都将停止,并且必须手动重新创建:

  • AMAZON_S3_V2
  • AMAZON_SQS_V2
  • GOOGLE_CLOUD_STORAGE_V2
  • AZURE_BLOBSTORE_V2
  • GOOGLE_CLOUD_STORAGE_EVENT_DRIVEN

对于未使用这些连接器的所有其他 Feed,提取过程将继续进行,不会受到任何干扰。客户无需采取任何行动。

迁移期间会发生什么

对于受影响的 Feed,您会看到以下变化:

  • Feed 状态:在迁移之前创建的 Feed 将立即停止提取实时数据,并变为只读状态。
  • 现有数据:迁移前已传输到 Google SecOps 的所有数据都将自动注入,不会丢失任何数据。
  • 出错提示:如果您尝试修改或删除旧 Feed,会收到以下消息:This feed is read-only because this SecOps has now moved to a new Google Cloud Project (BYOP). To continue ingesting data from this source, please create a new feed。

客户需要采取的行动

为确保数据注入不中断,您必须在新环境中手动重新创建 Feed。请按照以下步骤操作,尽可能减少中断:

  1. 重新创建新闻信息流:您必须创建新的新闻信息流,以替换迁移前存在的新闻信息流。
  2. 配置最长文件存在时间:设置新 Feed 时,请将最长文件存在时间设置为 BYOP 更新启动前大约 2 小时。此时间缓冲可确保顺利完成过渡。
  3. 管理重复数据:根据您选择的文件最长存在时间,您可能会遇到一些重复的数据传输。如需详细了解 Google SecOps 如何过滤这些冗余日志,请参阅防止重复信息删除。

  4. 记录并删除现有 Feed(迁移前):在开始 BYOP 迁移之前,请记录使用受影响连接器(例如 Amazon S3 V2)的所有现有 Feed 的配置设置,然后删除这些 Feed。如果您不删除迁移前创建的 Feed,它们将变得无法管理,并作为孤立设置保留在 Google SecOps 网页界面中。

设置 Feed 的方式

Google SecOps 客户可以通过两种方式在平台中设置 Feed。请使用最适合您环境的方法:

  • SIEM 设置 > Feed(标准)
  • Content Hub > 内容包(付费版)

设置 IP 许可清单

当 Google SecOps 从 S3、SQS、Azure 和第三方 API 拉取数据时,Google 基础架构会出站连接到客户的存储桶或第三方 API。

如需在存储桶或防火墙上设置入站流量许可清单,您必须根据 Feed 类型配置许可清单,如下表所述:

由于 Google 服务 IP 范围会动态变化,因此 Google 建议您将防火墙配置为定期提取和解析 Feed,如下所示:

  • V2 Feed(S3_V2、SQS_V2、Azure_Blobstore_V2):数据传输完全由 Storage Transfer Service 工作器执行。您只需定期提取和解析 ipranges.json 即可。
  • 旧版 Feed(S3、SQS、Azure_Blobstore、Azure 事件中心)和第三方 API:这些连接源自 Google 基础架构。您只需定期提取和解析 goog.json 和 cloud.json。

配置 Feed

本部分介绍了如何一般性地配置 Feed,首先介绍标准程序流程。Feed 页面上列出的数据 Feed 包括 Google 为您的账号配置的所有 Feed,以及您自己配置的 Feed。

添加 Feed

如需向 Google SecOps 账号添加 Feed,请完成以下步骤:

  1. 在 Google SecOps 菜单中,依次选择 SIEM 设置 > Feed。

  2. 点击添加新 Feed。

  3. 在下一页上,点击配置单个 Feed。注意:此步骤不适用于使用 Google SecOps SIEM 独立平台的客户。

  4. 添加 Feed 名称。

  5. 在来源类型列表中,选择用于将数据导入 Google SecOps 的来源类型。您可以从以下 Feed 来源类型中进行选择:

    • Amazon Data Firehose
    • Amazon S3(已弃用)
    • Amazon S3 (V2)
    • Amazon SQS(已弃用)
    • Amazon SQS (V2)
    • Azure Blob Storage(已弃用)
    • Azure Blob Storage (V2)
    • 自定义 API
    • Google Cloud Pub/Sub
    • Cloud Storage(已弃用)
    • Cloud Storage (V2)
    • Cloud Storage 事件驱动
    • 第三方 API
    • Webhook

    重要提示:

    • 使用 Amazon S3(已弃用)、Amazon SQS(已弃用)、Azure Blob Storage(已弃用)和 Google Cloud Cloud Storage(已弃用)Feed 时,请确保您有有效的目录路径。
    • 使用 Amazon SQS(已弃用)或 Amazon SQS (V2) 时,请明确授予 Google SecOps 从 Amazon SQS 队列中删除消息的权限。
    • 使用 Amazon SQS(已弃用)Feed 时,请确保只有一个 Feed 从队列中提取消息。其他应用或 Feed 读取的消息不会注入到当前 Feed 中。
    • 如需了解第三方 API 轮询 Feed 中的上游 API 索引编制延迟时间,请参阅轮询 Feed 中的延迟到达事件。
    • 只有 Amazon S3 存储桶中的日志才支持使用 Amazon SQS(已弃用)作为 Feed 来源类型。
  6. 在日志类型列表中,选择与您要注入的日志对应的日志类型。可用的日志因您之前选择的来源类型而异。

    如果您选择 Cloud Storage 作为来源类型,请使用获取服务账号选项获取唯一服务账号。请参阅 Google Cloud Storage Feed 设置示例。

  7. 点击下一步。

  8. 在输入参数标签页中指定所需的参数。此处显示的选项因在设置属性标签页上选择的来源和日志类型而异。将鼠标指针悬停在每个字段的问号图标上,即可详细了解您需要提供的信息。

  9. 可选:您可以在设置属性标签页中指定命名空间。如需详细了解命名空间,请参阅使用资产命名空间。

  10. 点击下一步。

  11. 在最终确定标签页上查看新的 Feed 配置。

  12. 点击提交。Google SecOps 会完成对新 Feed 的验证检查。如果 Feed 通过检查,系统会为该 Feed 生成一个名称,并将其提交到 Google SecOps,然后 Google SecOps 会开始尝试提取数据。

    完成 Feed 请求

为一个产品系列配置多个 Feed(仅限 Google SecOps 客户)

您可以根据日志类型为每个产品系列配置多个 Feed。

  • 基准日志类型:标记为推荐。建议将这些日志类型用于核心平台功能。
  • 补充日志类型:标记为可选。这些日志类型可提供更多背景信息。

为简化设置,平台为每种配置提供了具体的设置说明和预定义参数。 例如,对于 CrowdStrike Falcon,您可以在推荐和可选日志类型下创建多个唯一 Feed,以确保有足够全面的数据覆盖范围。

为 CrowdStrike EDR 配置 Feed

请按照以下步骤为 CrowdStrike EDR 配置日志 Feed。

  1. 在设置 > 新闻信息流 中,点击添加新新闻信息流
    1. 点击 CrowdStrike Falcon 产品:
    2. 选择 CrowdStrike EDR 日志类型。
  2. 或者,在内容中心 > 内容包中,点击 CrowdStrike Falcon 产品:
    1. 点击开始使用。
    2. 选择 CrowdStrike EDR 日志类型。
  3. 为以下字段指定值:

    字段 说明
    Source Type Amazon SQS
    Region 与 URI 关联的 AWS S3 区域。
    Queue Name 要从中读取数据的 SQS 队列名称。
    Account Number SQS 账号。
    Source Deletion Option 指示是否在转移后删除文件和目录。
    Queue Access Key ID 账号的 20 字符字母数字访问密钥,例如 AKIAOSFOODNN7EXAMPLE。
    Queue Secret Access Key 账号的 40 个字符的字母数字私有访问密钥,例如 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY。

  4. 可选:配置以下参数:

    • Feed 名称:预填充的 Feed 唯一名称。
    • 素材资源命名空间:与 Feed 关联的命名空间。
    • 提取标签:应用于此 Feed 中事件的标签。
  5. 点击创建 Feed。

您可以重复此过程,为同一日志类型创建其他 Feed。您还可以直接从此页面为其他可用日志类型配置 Feed。完成后,前往Feed 管理页面,查看所有已配置日志类型的详细摘要。

删除源文件

借助来源删除选项,您可以在成功转移后从存储空间中删除 Feed 来源对象(文件和文件夹)。此选项仅适用于部分 Feed 来源类型,包括 Cloud Storage。这些 Feed 来源类型的添加新 Feed和修改 Feed 工作流中包含来源删除选项字段。

来源删除选项

  • 对于受支持的 Feed 来源类型(包括 Cloud Storage),SOURCE DELETION OPTION 字段提供以下选项:

    • 永不删除文件
    • 删除已转移的文件和空目录
    • 删除已传输的文件
  • Microsoft Azure Blob Storage (AZURE_BLOBSTORE) 不支持删除源文件。对于来源删除选项字段,请仅选择一律不删除文件选项。

  • 对于以下 Feed 来源 ("feedSourceType"):GOOGLE_CLOUD_STORAGE_V2、GOOGLE_CLOUD_STORAGE_EVENT_DRIVEN、AMAZON_S3_V2、AMAZON_SQS_V2 和 AZURE_BLOBSTORE_V2,SOURCE DELETION OPTION 字段提供两个选项:

    • 永不:转移后永不删除任何文件。
    • ON_SUCCESS:转移后删除所有文件和空目录。

特定于来源的设置和权限

不同的来源类型需要特定的身份验证和网络配置才能与 Google SecOps 通信。本部分介绍了如何配置权限和设置服务账号。概述的设置侧重于 Cloud Storage 提取(基于拉取)、多云提取(跨云拉取)和基于推送的提取(API 或实时)。

Google Cloud Storage Feed 设置示例

  1. 从 Google SecOps 菜单中,选择设置,然后点击 Feed。
  2. 点击添加新 Feed。
  3. 在下一页上,点击配置单个 Feed。如果您使用的是 Google SecOps SIEM 独立平台,则此步骤不适用。
  4. 选择 Cloud Storage v2 作为来源类型。
  5. 选择日志类型。例如,如需为 Google Kubernetes Engine 审核日志创建 Feed,请选择 Google Kubernetes Engine 审核日志作为日志类型。
  6. 点击获取服务账号。Google SecOps 提供了一个唯一的服务账号,Google SecOps 使用该账号来注入数据。或者,您也可以使用 API 以编程方式获取此服务账号。请参阅提取服务账号。
  7. 可选:配置服务账号。如需了解详情,请参阅向 Google SecOps 服务账号授予访问权限。
  8. 点击下一步。
  9. 根据您创建的 Cloud Storage 配置,为以下字段指定值:

    • 存储桶 URI

    • 来源删除选项

    如需详细了解如何设置 Cloud Storage 存储桶,请参阅创建存储桶。

  10. 点击下一步,然后点击提交。

向 Google SecOps 服务账号授予访问权限

  1. 在 Google Cloud 控制台中,转到 Cloud Storage 存储桶页面。

    进入“存储桶”

  2. 向服务账号授予对相关 Cloud Storage 对象的访问权限。

    • 如需向特定文件授予读取权限,请完成以下步骤:

      1. 选择相应文件,然后点击修改权限。
      2. 点击添加主账号。
      3. 在新的主账号字段中,输入 Google SecOps 服务账号的名称。
      4. 为 Google SecOps 服务账号分配包含读取权限的角色。例如,Storage Object Viewer (roles/storage.objectViewer)。只有在您未启用统一存储桶级访问权限的情况下,才能执行此操作。
      5. 点击保存。
    • 如需向多个文件授予读取权限,请在存储桶级别授予访问权限,如下所示:

      • 对于 "feedSourceType": "GOOGLE_CLOUD_STORAGE":

        1. 将 Google SecOps 服务账号作为主账号添加到存储桶,并向其授予 IAM Storage Object Viewer (roles/storage.objectViewer) 角色。
        2. 如果您将 Feed 配置为删除源文件,则必须将 Google SecOps 服务账号作为主账号添加到存储桶中,并为其授予 IAM Storage Object Admin (roles/storage.objectAdmin) 角色。
      • 对于 "feedSourceType": "GOOGLE_CLOUD_STORAGE_V2",授予以下角色:

        1. 授予以下角色:

          • Storage Object Viewer (roles/storage.objectViewer)(如果要转移到其他 Cloud Storage 存储桶)。
        2. 根据您为来源删除选项选择的内容,授予以下一个角色。如果您选择成功时,请授予 Storage Legacy Bucket Writer 角色。如果您选择从不,请授予 Storage Legacy Bucket Reader 角色:

          • Storage Legacy Bucket Writer (roles/storage.legacyBucketWriter)(如果需要对象删除权限)。
          • Storage Legacy Bucket Reader (roles/storage.legacyBucketReader)(如果不需要对象删除权限)。
      • 对于 "feedSourceType": "GOOGLE_CLOUD_STORAGE_EVENT_DRIVEN":

        1. 授予以下任一角色:

          • Storage Object Viewer (roles/storage.objectViewer)(如果要转移到其他 Cloud Storage 存储桶)。
          • Storage Object Creator (roles/storage.objectCreator)(如果要转移到文件系统)。
        2. 授予以下任一角色:

          • Storage Legacy Bucket Writer (roles/storage.legacyBucketWriter)(如果需要对象删除权限)。
          • Storage Legacy Bucket Reader (roles/storage.legacyBucketReader)(如果不需要对象删除权限)。

为 Amazon S3 和 Azure Storage 启用 STS 访问权限

以下 Google Cloud Storage Feed 使用 STS 将数据从 Amazon S3 和 Azure Storage Blob 存储区转移到 Google SecOps:

  • Amazon S3 (V2)
  • Amazon SQS (V2)
  • Azure Blob Storage (V2)

STS 会从一组定义的 STS IP 地址范围向 Amazon S3 和 Azure 存储服务发送数据传输请求。这些 STS IP 地址范围发布在以下 JSON 文件中:IP 范围。

如需使用这些 STS Feed 来源类型,您可能需要调整 IP 访问限制,以便 STS 能够访问您的 Amazon S3 和 Azure 存储服务:

  1. 从 JSON 文件中提取最新的 IP 范围。

    我们建议您至少每周从该 JSON 文件中读取一次数据,以确保您的安全配置保持最新。向文件添加新范围后,系统至少会等待 7 天,之后才会使用该范围处理来自 STS 的请求。

    如需查看从 JSON 文件提取 IP 范围的示例 Python 脚本,请参阅默认网域的 IP 地址。

  2. 将当前 IP 范围 creationTime 与从上一个 JSON 文件中读取的 IP 范围 creationTime 进行比较。如果这些 IP 地址不同,请更新 Amazon S3 和 Azure Storage Blob 存储区中的 IP 访问限制。

    • 对于 Amazon S3

      如需更新 Amazon S3 blobstore 中的 IP 访问限制,请执行以下操作:

      如果您的 AWS 项目通过 IP 来限制对存储空间的访问权限,您必须将 STS 工作器使用的 IP 范围添加到允许的 IP 列表。

      如需将这些范围添加为允许的 IP,请在 bucket policy 中使用 Condition 字段,详情请参阅 AWS S3 文档:基于特定 IP 地址管理访问权限。

    • 对于 Azure Storage

      如需更新 Azure Storage blobstore 中的 IP 访问限制,请执行以下操作:

      如果您使用 Azure Storage 防火墙限制对 Azure 资源的访问,则必须将 STS 工作器使用的 IP 范围添加到允许的 IP 列表。

      如需将这些范围添加为允许的 IP,请按照以下说明操作:配置 Azure Storage 防火墙和虚拟网络。

设置 Pub/Sub 推送 Feed

如需设置 Pub/Sub 推送 Feed,请执行以下操作:

  1. 创建 Pub/Sub 推送 Feed。
  2. 在 Pub/Sub 订阅中指定端点网址。

创建 Pub/Sub 推送 Feed

  1. 在 Google SecOps 菜单中,选择设置,然后点击 Feed。
  2. 点击新增。
  3. 在 Feed 名称字段中,输入 Feed 的名称。
  4. 在来源类型列表中,选择 Google Cloud Pub/Sub 推送。
  5. 选择日志类型。例如,如需为 Open Cybersecurity Schema Framework 创建 Feed,请选择 Open Cybersecurity Schema Framework (OCSF) 作为日志类型。
  6. 点击下一步。
  7. 可选:为以下输入参数指定值:
    • 拆分定界符:用于分隔日志行的定界符。您只能使用 \n。
    • 资产命名空间:资产命名空间。
    • 注入标签:要应用于此 Feed 中事件的标签。
  8. 点击下一步。
  9. 在最终确定界面中查看新的新闻信息流配置,然后点击提交。
  10. 在详细信息标签页中,从端点信息字段复制 Feed 端点网址。 您需要使用此端点网址在 Pub/Sub 中创建推送订阅。
  11. 可选:点击 Feed Enabled(Feed 已启用)切换开关以停用 Feed。该 Feed 默认处于启用状态。
  12. 点击完成。

指定端点网址

创建 Pub/Sub 推送 Feed 后,请按如下方式指定端点网址:

  1. 在 Pub/Sub 中,创建推送订阅。如需详细了解如何创建推送订阅,请参阅创建推送订阅。
  2. 指定端点网址,该网址可在 Google Cloud Pub/Sub 推送 Feed 中找到。
  3. 选择启用身份验证,然后选择一个服务账号。
  4. 停用推送载荷解封和推送载荷解封写入消息元数据选项。

设置 Amazon Data Firehose Feed

如需设置 Amazon Data Firehose Feed,请执行以下操作:

  1. 创建 Amazon Data Firehose Feed,然后复制端点网址和密钥。
  2. 创建 API 密钥,以便向 Google SecOps 进行身份验证。您还可以重复使用现有 API 密钥向 Google SecOps 进行身份验证。
  3. 在 Amazon Data Firehose 中指定端点网址。

创建 Amazon Data Firehose Feed

  1. 在 Google SecOps 菜单中,选择设置,然后点击 Feed。
  2. 点击新增。
  3. 在 Feed 名称字段中,输入 Feed 的名称。
  4. 在来源类型列表中,选择 Amazon Data Firehose。
  5. 选择日志类型。例如,如需为 Open Cybersecurity Schema Framework 创建 Feed,请选择 Open Cybersecurity Schema Framework (OCSF) 作为日志类型。
  6. 点击下一步。
  7. 可选:为以下输入参数指定值:
    • 拆分定界符:用于分隔日志行的定界符。您只能使用 \n。
    • 资产命名空间:资产命名空间。
    • 注入标签:要应用于此 Feed 中事件的标签。
  8. 点击下一步。
  9. 在最终确定界面中查看新的新闻信息流配置,然后点击提交。
  10. 点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
  11. 复制并存储密钥,因为您无法再次查看此密钥。您可以再次生成新的密钥,但重新生成密钥会使之前的密钥失效。
  12. 在详细信息标签页中,从端点信息字段复制 Feed 端点网址。 在 Amazon Data Firehose 中为传送流指定目标设置时,您需要此端点网址。
  13. 可选:点击 Feed Enabled(Feed 已启用)切换开关以停用 Feed。该 Feed 默认处于启用状态。
  14. 点击完成。

为 Amazon Data Firehose Feed 创建 API 密钥

如需为 Amazon Data Firehose Feed 创建 API 密钥,请执行以下操作:

  1. 前往 Google Cloud 控制台凭证页面。
  2. 点击创建凭据,然后选择 API 密钥。
  3. 限制对 Chronicle API 的 API 密钥访问权限。

指定端点网址

在 Amazon Data Firehose 中,指定 HTTPS 端点和访问密钥,如下所示:

  1. 将 API 密钥附加到 Feed 端点网址,并将此网址指定为 HTTP 端点网址,格式如下:

      ENDPOINT_URL?key=API_KEY
    

    替换以下内容:

    • ENDPOINT_URL:Feed 端点网址。
    • API_KEY:用于向 Google SecOps 进行身份验证的 API 密钥。
  2. 对于访问密钥,请指定您在创建 Amazon Data Firehose Feed 时获取的密钥。

设置 HTTPS webhook Feed

准备工作:

如需设置 HTTPS webhook Feed,请执行以下操作:

  1. 创建 HTTPS 网络钩子 Feed,然后复制端点网址和密钥。
  2. 创建 API 密钥,该密钥使用端点网址指定。您还可以重复使用现有 API 密钥向 Google SecOps 进行身份验证。
  3. 在应用中指定端点网址。

在单个 webhook 请求中发送多个事件

以下代码示例展示了如何在 curl --location 项之后使用多个以换行符分隔的 JSON 对象设置单个请求正文的格式:

--header 'Content-Type: application/json' \
--header 'X-goog-api-key: API_KEY' \
--header 'X-Webhook-Access-Key: SECRET' \
--data '{"principal": {"asset_id": "asset 123"}, "metadata": {"event_type": "GENERIC_EVENT", "product_name": "Product Acme"}}
{"principal": {"asset_id": "asset 123"}, "metadata": {"event_type": "GENERIC_EVENT", "product_name": "Product Acme"}}'

创建 HTTPS webhook Feed

  1. 在 Google SecOps 菜单中,选择设置,然后点击 Feed。
  2. 点击新增。
  3. 在 Feed 名称字段中,输入 Feed 的名称。
  4. 在来源类型列表中,选择 Webhook。
  5. 选择日志类型。例如,如需为 Open Cybersecurity Schema Framework 创建 Feed,请选择 Open Cybersecurity Schema Framework (OCSF) 作为日志类型。
  6. 点击下一步。
  7. 可选:为以下输入参数指定值:
    • 拆分定界符:用于分隔日志行的定界符。您只能使用 \n。
    • 资产命名空间:资产命名空间。
    • 注入标签:要应用于此 Feed 中事件的标签。
  8. 点击下一步。
  9. 在最终确定界面中查看新的新闻信息流配置,然后点击提交。
  10. 点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
  11. 复制并存储密钥,因为您无法再次查看此密钥。您可以再次生成新的密钥,但重新生成密钥会使之前的密钥失效。
  12. 在详细信息标签页中,从端点信息字段复制 Feed 端点网址。 您需要在客户端应用中指定此端点网址。
  13. 可选:点击 Feed Enabled(Feed 已启用)切换开关以停用 Feed。该 Feed 默认处于启用状态。
  14. 点击完成。

为 webhook Feed 创建 API 密钥

  1. 前往 Google Cloud 控制台凭证页面。
  2. 点击创建凭据,然后选择 API 密钥。
  3. 限制对 Chronicle API 的 API 密钥访问权限。

指定端点网址

  1. 在客户端应用中,指定 HTTPS 端点,该端点可在 webhook Feed 中找到。
  2. 通过在自定义标头中指定 API 密钥和密钥(格式如下)来启用身份验证:

    X-goog-api-key = API_KEY

    X-Webhook-Access-Key = SECRET

    我们建议您将 API 密钥指定为标头,而不是在网址中指定。如果您的 webhook 客户端不支持自定义标头,您可以使用以下格式的查询参数指定 API 密钥和密钥:

      ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    替换以下内容:

    • ENDPOINT_URL:Feed 端点网址。
    • API_KEY:用于向 Google SecOps 进行身份验证的 API 密钥。
    • SECRET:您为验证 Feed 而生成的密钥。

设置自定义 API Feed

借助 Google Security Operations 自定义 API Feed(也称为无代码连接器),您可以使用灵活的基于配置的模型从第三方 REST API 注入遥测数据。您可以直接在控制台中定义端点、身份验证、分页策略和状态管理,从而配置数据拉取。

主要优势

  • 加速集成:通过引导式向导,在几分钟内即可完成新遥测来源的初始配置,无需等待后端更新。
  • 有状态检查点:确保在轮询周期内实现零数据重复和零日志丢失。
  • 父子扇出:支持两层发现工作流,例如列出资源并提取其关联的遥测数据。
  • 自动化弹性机制和速率限制:防止供应商限流和配额耗尽。为了实现可靠、不间断的数据注入,Custom API Feed 会自动使用指数退避算法处理 HTTP 429 响应,通过可配置的速率限制和任务延迟交错来控制请求节奏,并强制执行安全防护措施。如需了解详情,请参阅速率限制和限制护栏。

前提条件

在创建自定义 API Feed 之前,请先验证以下前提条件:

  • 权限:如需创建或修改 Feed,您必须拥有 Chronicle API Admin (roles/chronicle.admin) 或 Chronicle API Editor (roles/chronicle.editor) 角色。
  • 第三方 API 要求:
    • 有效的 API 基础网址(必须使用 https://)。
    • API 凭证(API 密钥、基本身份验证凭证或 OAuth 2.0 客户端 ID/密钥)。
    • 供应商 API 文档,详细说明了端点路径、请求参数、JSON 响应结构和速率限制。
  • Secret Manager 访问权限:凭证在 Secret Manager 中进行加密和安全管理。执行连接器的服务身份会自动与 Secret Manager(roles/secretmanager.secretAccessor 和 roles/secretmanager.admin)交互。

配置自定义 API Feed

如需配置自定义 API Feed,请执行以下操作:

  1. 前往 SIEM 设置 > Feed。
  2. 点击添加新 Feed。
  3. 点击配置单个 Feed。
  4. 在 Feed 名称字段中,输入一个唯一的描述性名称(例如 1Password-Audit-Events)。
  5. 在来源类型列表中,选择自定义 API。
  6. 在日志类型列表中,选择目标 Google SecOps 日志类型。
  7. 点击下一步。
  8. 在常规设置下,配置以下内容:

    • 基础网址:输入主主机(例如 https://events.1password.com)。该网址必须以 https:// 开头。请勿附加子路径或尾随斜杠。

    • 轮询频率:指定平台检查 API 以获取新遥测数据的频率(以分钟为单位)。支持的范围:5 到 2880 分钟(默认:15 分钟)。对于标准 API(依序) Feed,标准时间为 10-15 分钟;对于列表和详情(父子) Feed,建议设置为 30-60 分钟,以便在不重叠的情况下执行完整的扇出任务。

  9. 在身份验证下,选择一种受支持的身份验证方法,然后配置必填字段:

    • 基本身份验证:输入用户名(API 账号身份)和密钥(即密钥密码或令牌)。
    • OAuth 2.0 客户端凭证:使用 OAuth 2.0 客户端凭证授权流程进行身份验证。Google SecOps 会在每个提取周期之前自动请求、缓存和刷新不记名访问令牌。输入 OAuth 令牌端点(例如 https://auth.vendor.com/oauth/token)、OAuth 客户端 ID 和 OAuth 客户端密钥。
    • API 密钥请求标头:使用注入到请求标头中的自定义 API 密钥进行身份验证(最常见的企业 REST 模式)。输入标头名称(例如 Authorization 或 X-API-Key)和标头值(例如 Bearer <SECRET_TOKEN> 或 <SECRET_KEY>)。
    • API 密钥查询参数:使用注入到网址查询参数中的自定义 API 密钥进行身份验证。输入查询参数名称(例如 api_key)和查询参数值(例如 <SECRET_KEY>)。
  10. 选择自定义 API 使用的连接器模型:

    • 标准 API(依序):一种线性轮询流程,其中每次轮询都直接基于上一次轮询的状态。在此模型中,下一次轮询会使用从上一次轮询中提取的游标、令牌或时间戳,以便仅提取新数据。如果供应商提供的端点会直接返回遥测事件记录(例如 1Password、Okta、SentinelOne、GitHub 或 Slack),请选择此卡片。
    • 列表和详情(父级-子级):两层级发现流程。Feed 会发出初始调用(父级)来检索资源或对象列表(例如,用户 ID 或可用区列表)。然后,该 Feed 会自动生成依赖的后续调用(子调用),以获取所识别的每个资源的详细遥测数据。如果供应商 API 需要两层发现模式,请选择此卡片:首先调用端点以提取实体的动态列表(例如,可用区、账号、项目、设备),然后针对每个实体执行后续详细信息请求以检索遥测数据(例如,Cloudflare、AWS CloudWatch 或 Tenable)。
  11. 如果您选择了标准 API(依序),请执行以下操作:

    1. 在 API 端点下,配置以下参数,以定义请求的技术路由和速率调节:
      • 端点路径:附加到基础网址的特定 API 路由(例如 /api/v1/auditevents)。这会定义要查询的确切遥测资源。
      • HTTP 方法:选择 GET 可使用网址查询参数检索数据,选择 POST 可提交搜索载荷或过滤条件正文。
    2. 请求正文:对于 POST 请求,请提供 JSON 数据载荷。您可以嵌入动态检查点变量,例如 {"limit": 100, "start_time": "{{.last_timestamp}}"}。
    3. 每分钟请求数上限:输入每分钟可发送的请求数上限。这是一个客户端速率限制器,用于遵守供应商 API 速率限制(默认:5 RPM = 每 12 秒 1 个请求)。此设置可防止在多页分页期间配额耗尽。
    4. 可选:在自定义标头下,配置标头名称和值,然后点击添加,以定义目标 API 所需的专用 HTTP 标头(例如 Content-Type: application/json, Accept: application/json)。
    5. 可选:在查询参数下,配置键和值,然后点击添加,以指定附加到网址查询字符串的其他过滤条件或选项(例如 count=1000、status=active),或绑定动态模板变量(例如 start={{.last_run_time}})。
    6. 在分页策略下:选择第三方 API 处理多页结果集所需的分页机制,然后配置必填字段:
      • 无:在单个请求中提取数据,不进行分页。
      • 令牌分页:使用令牌(自定义键)获取下一页。输入下一页令牌 JSON 路径(例如 meta.next_cursor)和令牌分页查询参数名称(例如 cursor)。
      • 链接分页:按照响应中提供的网址获取更多数据。输入下一页链接 JSON 路径(例如 links.next 或 @odata.nextLink)。
      • 偏移分页:跳过一定数量的记录,以获取下一组记录。输入偏移量查询参数名称(例如 offset)。
      • 页码分页:前往下一个连续页码。输入页码查询参数名称(例如 page)。
    7. 在检查点下,配置相关设置,以便连接器记住在周期性轮询周期之间中断的位置:

      • 策略:选择以下策略之一,并配置必填字段:
        • 无:提取所有可用数据,而不跟踪各个周期的进度。
        • 最新时间戳:跟踪最新记录的时间戳。输入检查点值 JSON 路径(例如 timestamp 或 event_time)和检查点变量(例如 last_run_time,在后续轮询中引用为 {{.last_run_time}})。
        • 最新记录:跟踪最高记录 ID,以便仅提取新记录。输入检查点值 JSON 路径(例如 id 或 event_id)和检查点变量(例如 last_id,引用为 {{.last_id}})。
        • 迭代器令牌:使用 API 提供的永久性延续令牌。输入检查点值 JSON 路径和检查点变量(例如 iterator_token,引用为 {{.iterator_token}})。
    8. 在响应映射下,提供规则,告知平台如何查找和提取日志:

      • 目标数据 JSON 路径:输入 API 响应载荷中目标日志条目列表所在的确切路径。对于对象封装的数组(例如 {"items": [...]}),请输入 items。对于直接返回根 JSON 数组的 API(例如 [{...}, {...}]),请将此字段完全留空 ([])。
  12. 如果您选择了列表和详情(父级-子级),请执行以下操作:

    1. 父级请求(发现):配置用于返回项列表的端点:
      1. 在 API 端点下,配置以下参数,以定义请求的技术路由和速率调节:
        • 端点路径:附加到基础网址的特定 API 路由(例如 /api/v1/auditevents)。这会定义要查询的确切遥测资源。
        • HTTP 方法:选择 GET 可使用网址查询参数检索数据,选择 POST 可提交搜索载荷或过滤条件正文。
        • 请求正文:对于 POST 请求,请提供 JSON 数据载荷。您可以嵌入动态检查点变量,例如 {"limit": 100, "start_time": "{{.last_timestamp}}"}。
      2. 每分钟请求数上限:输入每分钟可发送的请求数上限。这是一个客户端速率限制器,用于遵守供应商 API 速率限制(默认:5 RPM = 每 12 秒 1 个请求)。此设置可防止在多页分页期间配额耗尽。
      3. 可选:在自定义标头下,配置标头名称和值,然后点击添加,以定义目标 API 所需的专用 HTTP 标头(例如 Content-Type: application/json, Accept: application/json)。
      4. 可选:在查询参数下,配置键和值,然后点击添加,以指定附加到网址查询字符串的其他过滤条件或选项(例如 count=1000、status=active),或绑定动态模板变量(例如 start={{.last_run_time}})。
      5. 在分页策略下:选择第三方 API 处理多页结果集所需的分页机制,然后配置必填字段:
        • 无:在单个请求中提取数据,不进行分页。
        • 令牌分页:使用令牌(自定义键)获取下一页。输入下一页令牌 JSON 路径(例如 meta.next_cursor)和令牌分页查询参数名称(例如 cursor)。
        • 链接分页:按照响应中提供的网址获取更多数据。输入下一页链接 JSON 路径(例如 links.next 或 @odata.nextLink)。
        • 偏移分页:跳过一定数量的记录,以获取下一组记录。输入偏移量查询参数名称(例如 offset)。
        • 页码分页:前往下一个连续页码。输入页码查询参数名称(例如 page)。
      6. 在检查点下,配置允许连接器记住其在周期性轮询周期之间中断的位置的设置:
        • 策略:选择以下策略之一,并配置必填字段:
          • 无:提取所有可用数据,而不跟踪各个周期的进度。
          • 最新时间戳:跟踪最新记录的时间戳。输入检查点值 JSON 路径(例如 timestamp 或 event_time)和检查点变量(例如 last_run_time,在后续轮询中引用为 {{.last_run_time}})。
          • 最新记录:跟踪最高记录 ID,以便仅提取新记录。输入检查点值 JSON 路径(例如 id 或 event_id)和检查点变量(例如 last_id,引用为 {{.last_id}})。
          • 迭代器令牌:使用 API 提供的永久性延续令牌。输入检查点值 JSON 路径和检查点变量(例如 iterator_token,引用为 {{.iterator_token}})。
    2. 数据提取(桥梁):配置以下内容:
      • 项标识符 JSON 路径:父级响应中唯一标识单个实体(例如 id 或 zone_id)的特定字段。连接器会从父级数组中的每个项中提取此标识符。
      • 模板变量名称:指定一个自定义变量名称,用于保存提取的 ID(例如 zone_id)。界面会显示一个动态标志:在下面的子请求中使用 {{.zone_id}}。
    3. 子级请求(详情):配置用于返回每项详细日志的端点:
      1. 在 API 端点下,配置以下参数,以定义请求的技术路由和速率调节:
        • 端点路径:附加到基础网址的特定 API 路由(例如 /client/v4/zones/{{.zone_id}}/logs/received)。这会定义要查询的确切遥测资源。
        • HTTP 方法:选择 GET 可使用网址查询参数检索数据,选择 POST 可提交搜索载荷或过滤条件正文。
        • 请求正文:对于 POST 请求,请提供 JSON 数据载荷。您可以嵌入动态检查点变量,例如 {"limit": 100, "start_time": "{{.last_timestamp}}"}。
      2. 每分钟请求数上限:输入每分钟可发送的请求数上限。这是一个客户端速率限制器,用于遵守供应商 API 速率限制(默认:5 RPM = 每 12 秒 1 个请求)。此设置可防止在多页分页期间配额耗尽。
      3. 可选:在自定义标头下,配置标头名称和值,然后点击添加,以定义目标 API 所需的专用 HTTP 标头(例如 Content-Type: application/json, Accept: application/json)。
      4. 可选:在查询参数下,配置键和值,然后点击添加,以指定附加到网址查询字符串的其他过滤条件或选项(例如 count=1000、status=active),或绑定动态模板变量(例如 start={{.last_run_time}})。
      5. 在分页策略下:选择第三方 API 处理多页结果集所需的分页机制,然后配置必填字段:
        • 无:在单个请求中提取数据,不进行分页。
        • 令牌分页:使用令牌(自定义键)获取下一页。输入下一页令牌 JSON 路径(例如 meta.next_cursor)和令牌分页查询参数名称(例如 cursor)。
        • 链接分页:按照响应中提供的网址获取更多数据。输入下一页链接 JSON 路径(例如 links.next 或 @odata.nextLink)。
        • 偏移分页:跳过一定数量的记录,以获取下一组记录。输入偏移量查询参数名称(例如 offset)。
        • 页码分页:前往下一个连续页码。输入页码查询参数名称(例如 page)。
      6. 在检查点下,配置允许连接器记住其在周期性轮询周期之间中断的位置的设置:
        • 策略:选择以下策略之一,并配置必填字段:
          • 无:提取所有可用数据,而不跟踪各个周期的进度。
          • 最新时间戳:跟踪最新记录的时间戳。输入检查点值 JSON 路径(例如 timestamp 或 event_time)和检查点变量(例如 last_run_time,在后续轮询中引用为 {{.last_run_time}})。
  13. 配置以下时间安排和标签设置:

    • 轮询频率:选择标准时间间隔(例如 5m、1h)。
    • 命名空间:可选的组织标记。
    • 注入标签:数据 RBAC 的键值对。
  14. 点击提交。Google SecOps 会执行自动凭证和端点验证检查。如果验证成功,Feed 会开始轮询。

示例配置 1:1Password 审核事件(标准 API [依序] 模型)

以下声明式 JSON 配置演示了 Standard API (Sequential) 模型,其中包含针对 1Password 的基于光标的检查点:

{
  "base_url": "https://events.1password.com",
  "polling_frequency": 15,
  "header_auth": {
    "header_key_values": [
      {
        "key": "Authorization",
        "value": "Bearer <SECRET_STORED_IN_SECRET_MANAGER>"
      }
    ]
  },
  "primary_request": {
    "request_settings": {
      "endpoint_path": "/api/v1/auditevents",
      "http_method": "POST",
      
      "request_body": "{\"limit\": 1000, \"start_time\": \"{{.last_run_time}}\"}",
      
      "custom_headers": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "max_requests_per_minute": 5
    },
    "pagination_strategy": {
      "token": {
        "next_page_token_json_path": "additional_items_url",
        "query_param": "cursor"
      }
    },
    "checkpointing": {
      "latest_timestamp_strategy": {
        "checkpoint_value_path": "timestamp",
        "checkpoint_variable": "last_run_time"
      }
    },
    "response_mapping": {
      "target_data_path": ["items"]
    }
  }
}

具体示例配置 2:Cloudflare 区域遥测(列表和详细信息 [父子] 模型)

以下声明式 JSON 配置演示了 Cloudflare 的列表和详细信息(父级-子级)扇出模型:

{
 "base_url": "https://api.cloudflare.com",
 "polling_frequency": 30,
 "header_auth": {
   "header_key_values": [
     {
       "key": "Authorization",
       "value": "Bearer <SECRET_STORED_IN_SECRET_MANAGER>"
     }
   ]
 },

 "primary_request": {
   "request_settings": {
     "endpoint_path": "/client/v4/zones",
     "http_method": "GET"
   },
   "response_mapping": {
     "target_data_path": ["result"]
   },
   "pagination_strategy": {
     "none": {}
   },
   "checkpointing": {
     "none_strategy": {}
   },
   "dependent_requests_config": {
     "item_id_json_path": "id",
     "item_id_variable": "zone_id",
     "dependent_requests": [
       {
         "request_settings": {
           "endpoint_path": "/client/v4/zones/{{.zone_id}}/logs/received",
           "http_method": "GET",
           "query_parameters": [
             {
               "key": "start",
               "value": "{{.last_run_time}}"
             },
             {
               "key": "count",
               "value": "1000"
             }
           ],
           "max_requests_per_minute": 5
         },

         "pagination_strategy": {
           "none": {}
         },
         "checkpointing": {
           "latest_timestamp_strategy": {
             "checkpoint_value_path": "EdgeStartTimestamp",
             "checkpoint_variable": "last_run_time"
           }
         },
         "response_mapping": {
           "target_data_path": []
         }
       }
     ]
   }
 }
}

自定义 API 最佳实践

  • 轮询频率指南:
    • 从适中的轮询间隔开始:对于高流量端点,将初始轮询间隔设置为 15 分钟或 30 分钟,以观察供应商 API 配额行为,然后再降低到 5 分钟。
    • 针对大批量扇出进行优化:对于发现数十或数百个资源的父级-子级(列表和详细信息) Feed,Google 强烈建议您将轮询频率设置为 30 到 60 分钟,以便在下一个发现周期开始之前,所有有节奏的子任务都能顺利完成。
  • 验证注入路径:在配置状态检查点之前,请使用供应商文档或 API 测试工具确认时间戳的确切 JSON 字段名称。
  • 分解多子级 API:如果第三方 API 需要为单个用户列表提取提醒和审核日志,请创建两个单独的单子级 Feed(一个用于提醒,一个用于审核日志),以保持最佳隔离状态。

速率限制和节流保护机制

为防止客户 Feed 配置超出第三方供应商配额或垄断系统资源,自定义 API Feed 类型实施了以下自动化保护措施:

  • 可配置的请求节奏(速率限制):系统会自动调整传出 HTTP 请求的节奏,以防止超出供应商速率限制。默认速率为每分钟 5 个请求(每 12 秒 1 个请求)。您可以使用端点设置中的每分钟请求数上限字段,针对每个端点调整此设置,以匹配供应商发布的 API 配额。
  • 子级请求上限:对于父子级(列表和详情) Feed,一个发现请求在每个轮询周期内最多可以分派 500 个子级请求。
  • 单级扇出深度:连接器严格执行 1 级的最大扇出深度(父级发现 → 子级详细信息)。不支持嵌套的依赖请求(孙级调用)。
  • 响应载荷大小上限:任何单个请求或网页允许的 HTTP 响应大小上限为 50 MB。如果未分页的 API 返回的响应超过 50 MB,则提取将失败,并显示资源耗尽错误。为防止出现这种情况,请始终配置分页查询参数(例如 limit 或 page_size),以便以较小的批次检索记录。
  • 自动 HTTP 429 退避:如果第三方供应商 API 响应 HTTP 429(请求过多),Google SecOps 会自动捕获状态并启动指数退避期,暂停任务执行,直到供应商配额窗口重新填充。

自定义 API 限制

在规划注入路径时,请注意自定义 API Feed 类型具有以下限制:

  • 严格的 JSON 支持:仅支持 JSON API 响应。不支持 XML、CSV、Parquet 和 Avro 等其他格式。
  • 不支持动态请求签名:不支持每个请求都需要动态加密签名的 API(例如 AWS SigV4、Akamai 或 Oracle OCI)。
  • 不支持多步身份验证:不支持在轮询前需要通过初始程序化登录调用来交换凭据以获取临时会话令牌的 API(例如 Saviynt)。
  • 不支持 WebSocket 或推送提取:自定义 API Feed 支持标准 HTTPS 拉取轮询。不支持持久流式连接 (WebSocket) 和传入网络钩子。
  • 无双向 TLS (mTLS):身份验证必须依赖 API 密钥、基本身份验证或标准 OAuth 2.0 客户端凭证。不支持客户端证书握手。

排查自定义 API Feed 问题

如需在 Cloud Logging Logs Explorer 中调查自定义 API Feed 的错误,请使用以下查询:

resource.type="gce_instance" OR resource.type="generic_task"
jsonPayload.service="gopher"
jsonPayload.feed_id="FEED_ID"

将 FEED_ID 替换为您的 Feed ID。

如需专门过滤失败的 HTTP 请求,请使用以下查询:

jsonPayload.service="gopher"
jsonPayload.feed_id="FEED_ID"
jsonPayload.http_status_code >= 400

将 FEED_ID 替换为您的 Feed ID。

常见故障模式和解决方案

症状 / 错误 根本原因 解决方案 / 补救措施
HTTP 401 未授权 / HTTP 403 禁止 API 密钥、密码或 OAuth 凭据已过期或无效。 修改 Feed,重新输入有效凭证,然后点击提交。
HTTP 404 未找到 基础网址或端点路径模板不正确。 在供应商 API 文档中检查端点。确保基础网址以干净的方式结尾,并且端点路径以 / 开头。
HTTP 429 请求过多 超出了供应商 API 速率限制。 提高轮询频率或减少查询参数中的 limit 参数。
JSON 提取错误(items_path 为空) 响应配置路径不匹配。 验证 API 响应载荷结构,并更新目标数据 JSON 路径。
重复数据注入 状态配置时间戳或 ID 提取器路径无效。 检查日志记录字段名称中的时间戳,并更新提取器路径。

管理 Feed

配置数据 Feed 后,您可以使用管理工具监控提取运行状况、修改现有参数以及管理 Feed 生命周期。本部分概述了如何解读 Feed 状态以及如何执行必要的维护任务,以确保数据持续可见。

Feed 页面提供了多种工具,可帮助您浏览和整理已配置的 Feed 列表:

  • 搜索:使用搜索栏,按 Feed 名称、Feed ID 或来源类型查找 Feed。

  • 过滤:点击过滤图标,根据特定 Feed 属性缩小列表范围。

  • 下载 CSV:点击下载为 CSV 文件,将当前 Feed 列表导出为 CSV 文件。

  • 分页:使用分页控件可执行以下操作:

    • 更改每页行数。

    • 使用页面标签页和箭头浏览多个 Feed 页面。

  • 上次刷新时间:查看时间戳,了解 Feed 列表的上次更新时间。

查看已配置的 Feed

Feed 页面会显示您已配置的所有 Feed。

  1. 前往 SIEM 设置 > Feed。主页面会显示您配置的所有 Feed。
  2. 将指针悬停在每行上,以显示 more_vert 更多菜单。
  3. 在菜单中,您可以查看 Feed 详情,以及修改、停用或删除 Feed。

监控 Feed 状态

您可以在初始Feed 页面上监控 Feed 的状态,Feed 可能具有以下状态:

  • 有效:Feed 已配置,可随时将数据注入到您的 Google SecOps 账号。
  • InProgress:Google SecOps 尝试从配置的第三方拉取数据。
  • 已完成:此 Feed 已成功检索数据。
  • 已归档:已停用的 Feed。
  • 失败:Feed 无法成功提取数据。这很可能是因为配置出了问题。点击问题即可显示配置错误。更正错误并重新提交 Feed 后,请返回 Feed 页面,确定 Feed 现在是否正常运行。

修改现有 Feed

在 Feeds(Feed)页面上,您可以按如下方式修改现有 Feed:

  1. 将指针悬停在现有 Feed 上,然后点击右侧列中的 more_vert。

  2. 点击修改 Feed。现在,您可以修改 Feed 的输入参数,并将其重新提交到 Google SecOps,后者将尝试使用更新后的 Feed。

启用(恢复)和停用(暂停)Feed

停用 Feed 后,Google SecOps 会停止从该来源提取新数据。如需立即停止数据注入,您应删除 Feed。现有活跃或受限的传输会继续进行,直到完成。重新启用 Feed 后,Google SecOps 可以检索在 Feed 停用期间丢失的数据。此功能称为“回填功能”。

在状态列中,已启用的 Feed 会标记为有效、正在进行、已完成或失败。已停用的字段会标记为已归档。如需了解相关说明,请参阅监控 Feed 状态。

在 Feed 页面上,您可以启用(恢复)或停用(暂停)任何现有 Feed:

  1. 将指针悬停在现有 Feed 上,然后点击右侧列中的 more_vert。

  2. 可选:点击已启用 Feed 切换开关以启用 Feed。

  3. 可选:点击停用 Feed 切换开关以停用 Feed。该 Feed 现在会标记为已归档。

重新启用 Feed 时的数据恢复(回填能力)

Google SecOps 能否回填数据取决于您的 Feed 是基于拉取(受支持)还是基于推送(不受支持)。

基于拉取的 Feed

通过这些 Feed,Google SecOps 可从外部来源拉取数据。拉取 Feed 包括:

  • 云存储桶,例如 Amazon S3、 Google Cloud Storage、Azure Blob Storage
  • SFTP 服务器
  • 第三方 API,例如 Microsoft 365、Okta、Proofpoint

    重新启用基于拉取的 Feed 后,Google SecOps 可以检索在 Feed 停用期间生成的数据。

基于推送的 Feed

通过这些 Feed,外部系统会将数据“推送”到 Google SecOps。推送 Feed 包括:

  • HTTPS webhook
  • Google Cloud Pub/Sub
  • Amazon Kinesis Data Firehose
  • 直接 API/代理提取,例如 Bindplane

Google SecOps 无法自动从基于推送的 Feed 启动数据回填。当 Feed 处于停用状态且您的系统推送数据时,Google SecOps 会发送 HTTP 403 Forbidden 错误或一般 4xx 错误。

如果您的系统不存储数据,也不重试将数据发送到 Google SecOps,则数据将会丢失。此外,如果您的系统设置为“失败时丢弃”或清除其缓冲区,则相应时间段内的数据将永久丢失。为避免数据丢失,您应将系统配置为在 Feed 重新启用后缓冲并重新发送数据。然后,Google SecOps 可以在 Feed 恢复后注入缺失的数据。

回填注意事项

  • 来源系统限制:Google SecOps 可从基于拉取的 Feed 中回填的历史数据量受限于来源系统保留数据的时间以及其 API 允许的数据量。例如,某些 API 仅提供对过去 7 天数据的访问权限。
  • Google SecOps 缓冲区:为了实现自动恢复,Google SecOps 的内部缓冲区会为基于拉取的 Feed 保留最多 90 天的数据,之后数据会被丢弃。
  • 租户限制:非付费租户(例如概念验证)在回填旧数据方面可能会受到限制。
  • 注入配额:为避免影响实时数据注入,回填数据的处理优先级低于实时数据。基于拉取的数据回填也受到速率限制,通常为租户每种日志类型的突发上限的三分之一 (33%)。这可确保关键的推送式 Feed(例如 EDR 代理)不会受到负面影响。
  • 动态速率限制:如果回填消耗了所有可用的拉取配额,则提取会在 5 分钟间隔的剩余时间内暂停,并在间隔重新开始时自动恢复。
  • 云端存储空间:您可以使用 Feed 设置来控制回填,例如针对新文件或更新后文件的过滤条件,或日期范围过滤条件(例如“文件存在时间上限”)。
  • 大量积压:如果拉取式 Feed 的大量积压在重新启用时导致问题,您可以联系 Google 支持团队来清除积压。这意味着,Feed 今后将仅开始提取新数据,而不会回填缺失的数据。
  • 修改已停用的 Feed:在 Feed 停用期间对其进行的任何配置更改都会在 Feed 重新启用后立即生效。

删除 Feed

在 Feed 页面上,您还可以删除现有 Feed:

  1. 将指针悬停在现有 Feed 上,然后点击右侧列中的 more_vert。

  2. 点击删除 Feed。系统会打开删除 Feed 窗口。如需永久删除该 Feed,请点击是,删除。

对于自定义 API Feed,系统会显示一个对话框,其中包含一个可选复选框:删除待处理的积压数据:

  • 未选中(默认):Feed 配置和凭证会被删除,但排队的积压数据可以继续处理,直到完成提取。
  • 已勾选:Feed 配置、凭据和所有待处理的积压数据都会被永久移除。

控制注入速率

当租户的数据注入速率达到特定阈值时,Google Security Operations 会限制新数据 Feed 的注入速率,以防止注入速率较高的来源影响其他数据源的注入速率。在这种情况下,会出现延迟,但不会丢失数据。注入量和租户的使用记录决定了阈值。

您可以联系 Cloud Customer Care 来申请提高速率限制。

排查失败的 Feed 问题

在 Feed 页面上,您可以查看现有 Feed 的来源类型、日志类型、Feed ID 和状态等详细信息,如下所示:

  1. 将指针悬停在现有 Feed 上,然后点击右侧列中的 more_vert。

  2. 点击查看 Feed。系统会显示一个对话框,其中包含 Feed 详细信息。对于失败的 Feed,您可以在详细信息 > 状态下找到错误详细信息。

对于失败的 Feed,详细信息包括错误原因和修复步骤。

请参阅来源和提取出错提示表,了解使用数据 Feed 时可能会遇到的出错提示。

如需详细分析和排查 Feed 活动问题,您可以在 Cloud Logging 中查看日志。请参阅使用 Cloud Logging 分析 Feed 活动。

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。