收集 Google Cloud IoT 日志

支持的平台:

本指南介绍了如何使用 Cloud Storage 将 Google Cloud 物联网日志导出到 Google Security Operations。解析器从 JSON 格式的日志中提取字段,然后将这些字段映射到 Google SecOps UDM 架构中的相应字段,最终将原始日志数据转换为适合进行安全分析的结构化格式。

准备工作

确保您满足以下前提条件:

  • Google SecOps 实例。
  • IoT 已在您的 Google Cloud 环境中设置并处于有效状态。
  • 对 Google Cloud的特权访问权限。

创建 Google Cloud Storage 存储分区

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

    进入“存储桶”

  3. 点击创建。

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

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

      1. 输入符合存储桶名称要求的唯一名称,例如 cloudiot-logs。
      2. 如需启用分层命名空间,请点击展开箭头以展开优化文件导向型和数据密集型工作负载部分,然后选择在此存储桶上启用分层命名空间。

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

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

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

      1. 选择位置类型。
      2. 使用位置类型菜单选择一个位置,用于永久存储存储桶中的对象数据。

      3. 如需设置跨存储桶复制,请展开设置跨存储桶复制部分。

    3. 在为数据选择一个存储类别部分中,为存储桶选择默认存储类别,或者选择 Autoclass 对存储桶数据进行自动存储类别管理。

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

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

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

在 Google Cloud IoT 中配置日志导出

  1. 使用您的特权账号登录 Google Cloud 账号。
  2. 在搜索栏中搜索并选择日志记录。
  3. 在日志浏览器中,选择 Cloud IoT Core 过滤日志,然后点击应用。
  4. 点击更多操作。
  5. 点击创建接收器。
  6. 提供以下配置:
    1. 接收器详情:输入名称和说明。
    2. 点击下一步。
    3. 接收器目标位置:选择 Cloud Storage 存储分区。
    4. Cloud Storage 存储桶:选择之前创建的存储桶,或创建新存储桶。
    5. 点击下一步。
    6. 选择要包含在接收器中的日志:当您在 Cloud Storage 存储分区中选择一个选项时,系统会填充默认日志。
    7. 点击下一步。
    8. 可选:选择要从接收器中过滤掉的日志:选择您不想接收的日志。
  7. 点击创建接收器。

  8. 在 GCP 控制台中,前往 Logging > 日志路由器。

  9. 点击创建接收器。

设置 Feed

如需配置 Feed,请按以下步骤操作:

  1. 依次前往 SIEM 设置 > Feed。
  2. 点击添加新 Feed。
  3. 在下一页上,点击配置单个 Feed。
  4. 在 Feed name 字段中,输入 Feed 的名称,例如 GCP Cloud IoT Logs。
  5. 选择 Google Cloud Storage V2 作为来源类型。
  6. 选择 GCP Cloud IoT 作为日志类型。
  7. 点击获取服务账号作为 Chronicle 服务账号。
  8. 点击下一步。
  9. 为以下输入参数指定值:

    • 存储桶 URI:gs://my-bucket/<value>/ 格式的 Google Cloud 存储桶网址。
    • 源删除选项:根据您的偏好选择删除选项。

    • 文件存在时间上限:包含在过去指定天数内修改的文件。默认值为 180 天

  10. 点击下一步。

  11. 在最终确定界面中查看新的 Feed 配置,然后点击提交。

UDM 映射表

日志字段 UDM 映射 逻辑
insertId metadata.product_log_id 直接从 insertId 字段映射。
jsonPayload.eventType metadata.product_event_type 直接从 jsonPayload.eventType 字段映射。
jsonPayload.protocol network.application_protocol 直接从 jsonPayload.protocol 字段映射。
jsonPayload.serviceName target.application 直接从 jsonPayload.serviceName 字段映射。
jsonPayload.status.description metadata.description 直接从 jsonPayload.status.description 字段映射。
jsonPayload.status.message security_result.description 直接从 jsonPayload.status.message 字段映射。
labels.device_id principal.asset_id 值设置为 Device ID: 与 labels.device_id 字段的值串联而成。
receiveTimestamp metadata.event_timestamp 从 receiveTimestamp 字段解析,用于填充 events.timestamp 和 metadata.event_timestamp。
resource.labels.device_num_id target.resource.product_object_id 直接从 resource.labels.device_num_id 字段映射。
resource.labels.location target.location.name 直接从 resource.labels.location 字段映射。
resource.labels.project_id target.resource.name 直接从 resource.labels.project_id 字段映射。
resource.type target.resource.resource_subtype 直接从 resource.type 字段映射。
和程度上减少 security_result.severity 根据以下逻辑从 severity 字段映射而来:
- 如果 severity 为 DEFAULT、DEBUG、INFO 或 NOTICE,则将 security_result.severity 设置为 INFORMATIONAL。
- 如果 severity 为 WARNING 或 ERROR,则将 security_result.severity 设置为 MEDIUM。
- 如果 severity 为 CRITICAL、ALERT 或 EMERGENCY,则 security_result.severity 设置为 HIGH。
不适用 metadata.log_type 硬编码为 GCP_CLOUDIOT。
不适用 metadata.vendor_name 硬编码为 Google Cloud Platform。
不适用 metadata.event_type 硬编码为 GENERIC_EVENT。
不适用 metadata.product_name 硬编码为 GCP_CLOUDIOT。

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