收集 Datadog 日志

支持的平台:

概览

此解析器会从 Datadog 日志中提取字段,执行几项更改和 Grok 匹配以对数据进行结构化,并将提取的字段映射到 UDM。它会处理 message 字段中的不同日志格式,包括键值对和 JSON 对象,并将特定字段转换为符合 UDM 要求的标签和其他字段。

准备工作

  • 确保您拥有 Google SecOps 实例。
  • 确保您拥有 Google Cloud IAM 的特权访问权限。
  • 确保您拥有对 Google Cloud Storage 的特权访问权限。
  • 确保您拥有对 Datadog 的 logs_write_archive 用户访问权限。

方案 1:通过 Cloud Storage 配置共享 Datadog 日志

配置 Datadog 与 Google Cloud Platform 的集成

创建 Google Cloud Storage 存储分区

  1. 登录 Google Cloud 控制台。
  2. 前往 Cloud Storage 存储分区页面。

    进入“存储桶”

  3. 点击创建

  4. 创建存储桶页面上,输入您的存储桶信息。完成以下每个步骤后,点击继续以进入下一步:

    1. 开始使用部分中,执行以下操作:

      1. 输入一个符合存储分区名称要求的唯一名称(例如 datadog-data)。
      2. 如需启用分层命名空间,请点击展开箭头以展开 Optimize for file oriented and data-intensive workloads 部分,然后选择 Enable Hierarchical namespace on this bucket

      3. 如需添加存储分区标签,请点击展开箭头以展开标签部分。

      4. 点击添加标签,然后为标签指定键和值。

    2. 选择数据存储位置部分中,执行以下操作:

      1. 选择位置类型
      2. 使用位置类型下拉菜单选择一个位置,用于永久存储存储分区中的对象数据。
        • 如果您选择双区域位置类型,还可以使用相关复选框选择启用增强型复制
      3. 如需设置跨存储分区复制,请展开设置跨存储分区复制部分。
    3. 为数据选择一个存储类别部分中,为存储分区选择默认存储类别,或者选择 Autoclass 对存储分区数据进行自动存储类别管理。

    4. 选择如何控制对对象的访问权限部分中,选择以强制执行禁止公开访问,然后为存储分区对象选择访问权限控制模型

    5. 选择如何保护对象数据部分中,执行以下操作:

      1. 数据保护下,选择您要为存储分区设置的任何选项。
      2. 如需选择对象数据的加密方式,请点击标有数据加密的展开箭头,然后选择数据加密方法
  5. 点击创建

创建 Google Cloud 服务账号

  1. 依次前往 IAM 和管理 > 服务账号
  2. 创建新的服务账号。
  3. 为其指定一个描述性名称(例如 datadog-user)。
  4. 向服务账号授予您在上一步中创建的 Cloud Storage 存储分区的 Storage Object Admin 角色。
  5. 为服务账号创建 SSH 密钥
  6. 下载服务账号的 JSON 密钥文件。请妥善保管此文件。

配置 Datadog 以将日志发送到 Cloud Storage

  1. 使用特权账号登录 Datadog。
  2. 依次前往日志 > 日志转发
  3. 点击 + 创建新的归档文件
  4. 选择 Google Cloud Storage
  5. 输入所需参数,然后点击保存

方案 2:通过 Webhook 配置共享 Datadog 日志

在 Google SecOps 中配置 Feed 以提取 Datadog 日志

  1. 依次前往 SIEM 设置 > Feed
  2. 点击新增
  3. Feed 名称字段中,输入 Feed 的名称(例如 Datadog 日志)。
  4. 选择 Webhook 作为来源类型
  5. 选择 Datadog 作为日志类型
  6. 点击下一步
  7. 可选:为以下输入参数指定值:
    • 分隔符:用于分隔日志行(例如 \n)的分隔符。
    • 资源命名空间资源命名空间
    • 提取标签:应用于此 Feed 中的事件的标签。
  8. 点击下一步
  9. 最终确定界面中查看 Feed 配置,然后点击提交
  10. 点击生成 Secret 密钥,生成用于对此 Feed 进行身份验证的 Secret 密钥。
  11. 复制并存储密钥。您将无法再查看此密钥。如有必要,您可以重新生成新的 Secret 密钥,但此操作会使之前的 Secret 密钥过时。
  12. 详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。
  13. 点击完成

为该 Webhook Feed 创建 API 密钥

  1. 依次前往 Google Cloud 控制台 > 凭据

    转到“凭据”页面

  2. 点击创建凭据,然后选择 API 密钥

  3. 限制 API 密钥对 Chronicle API 的访问权限。

指定端点网址

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

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    建议:将 API 密钥作为标头指定,而不是在网址中指定。

  3. 如果您的 webhook 客户端不支持自定义标头,您可以使用以下格式的查询参数指定 API 密钥和密钥:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    替换以下内容:

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

配置 Datadog 以将日志发送到 webhook

  1. 使用特权账号登录 Datadog。
  2. 依次前往日志 > 日志转发
  3. 选择自定义目标平台
  4. 点击 + 创建新目标
  5. 为以下输入参数指定值:
    1. 选择目标类型:选择 HTTP
    2. 为目标位置命名:为该网络钩子提供一个描述性名称(例如 Google SecOps Webhook)。
    3. 配置目标位置:依次输入 ENDPOINT_网址API_KEYSECRET
    4. 配置身份验证设置:添加一个常规标头(如下所示),这样不会破坏 HTTP 请求,并允许 Datadog 完成网络钩子创建。
      • 标题名称:Accept
      • 标头值:application/json
    5. 点击保存

UDM 映射表

日志字段 UDM 映射 逻辑
_id read_only_udm.metadata.product_log_id 直接从 _id 字段映射。
alert read_only_udm.security_result.about.resource.attribute.labels alert 字段中提取,并作为标签添加到 security_result 对象中。
attributes.@timestamp read_only_udm.metadata.event_timestamp 系统会从 attributes.@timestamp 字段中提取事件时间戳,并将其转换为秒和纳秒。
attributes.@version read_only_udm.metadata.product_version 直接从 attributes.@version 字段映射。
attributes.level_value read_only_udm.security_result.about.resource.attribute.labels attributes.level_value 字段中提取,并作为标签添加到 security_result 对象中。
attributes.logger_name read_only_udm.principal.application 直接从 attributes.logger_name 字段映射。
attributes._trace.baggage._sli_service read_only_udm.additional.fields 直接从 attributes._trace.baggage._sli_service 字段映射,并添加为其他字段。
attributes._trace.baggage.device_id read_only_udm.principal.asset.asset_id 直接从 attributes._trace.baggage.device_id 字段映射,前缀为“Device Id:”。
attributes._trace.origin.operation read_only_udm.metadata.product_event_type 直接从 attributes._trace.origin.operation 字段映射。
caller read_only_udm.security_result.about.resource.attribute.labels caller 字段中提取,并作为标签添加到 security_result 对象中。
component read_only_udm.security_result.about.resource.attribute.labels component 字段中提取,并作为标签添加到 security_result 对象中。
context.AlertName read_only_udm.security_result.threat_name 直接从 context.AlertName 字段映射。
context.BusArch read_only_udm.security_result.about.resource.attribute.labels context.BusArch 字段中提取,并作为标签添加到 security_result 对象中。
context.CANDBVersion read_only_udm.security_result.about.resource.attribute.labels context.CANDBVersion 字段中提取,并作为标签添加到 security_result 对象中。
context.esn read_only_udm.security_result.about.resource.attribute.labels context.esn 字段中提取,并作为标签添加到 security_result 对象中。
context.ftcpVersion read_only_udm.security_result.about.resource.attribute.labels context.ftcpVersion 字段中提取,并作为标签添加到 security_result 对象中。
context.ingestMessageId read_only_udm.security_result.about.resource.attribute.labels context.ingestMessageId 字段中提取,并作为标签添加到 security_result 对象中。
context.redactedVin read_only_udm.security_result.about.resource.attribute.labels context.redactedVin 字段中提取,并作为标签添加到 security_result 对象中。
context.vehicleId read_only_udm.security_result.about.resource.attribute.labels context.vehicleId 字段中提取,并作为标签添加到 security_result 对象中。
date read_only_udm.metadata.collected_timestamp 系统会从 date 字段(在解析器中重命名为 date1)中提取收集的时间戳,并将其转换为秒和纳秒。
host read_only_udm.principal.hostname 直接从 host 字段映射。
message read_only_udm.security_result.about.resource.attribute.labels 系统会解析 message 字段,并使用其中的部分内容来填充 summaryjson_data 字段。其余部分会被视为键值对,并作为标签添加到 security_result 对象中。
msg read_only_udm.security_result.about.resource.attribute.labels msg 字段中提取,并作为标签添加到 security_result 对象中。
service read_only_udm.metadata.product_name 直接从 service 字段映射。
status read_only_udm.security_result.severity 严重程度取决于 status 字段。“INFO”“DEBUG”“debug”和“info”映射到“LOW”“WARN”映射到“MEDIUM”,其他值在提供的代码段中未明确映射。
tags read_only_udm.additional.fields 系统会将 tags 数组中的每个标记解析为键值对,并将其添加为其他字段。
不适用 read_only_udm.metadata.event_type 如果存在 host 字段,则设置为“STATUS_UPDATE”;否则,设置为“GENERIC_EVENT”。

更改

2023-07-21

  • 已创建解析器。