收集 Chronicle SOAR 审核日志

支持的平台:

本文档介绍了如何使用 Google Cloud Storage V2 将 Chronicle SOAR 审核日志注入到 Google Security Operations。

Google Security Operations SOAR(安全编排、Automation 和响应)使安全团队能够将威胁响应自动化,具体做法是注入、分组并确定检测工具发出的提醒的优先级,以自动执行 playbook 并协调切实可行的响应方法。SOAR 日志会捕获 ETL、Playbook 和 Python 函数中的重要数据,包括 Python 脚本执行、提醒提取和 playbook 性能。

准备工作

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

  • Google SecOps 实例
  • 启用了 Cloud Storage API 的 Google Cloud 项目
  • 创建和管理 GCS 存储分区的权限
  • 管理 GCS 存储分区的 IAM 政策的权限
  • 创建和管理 Cloud Logging 接收器的权限
  • 对部署了 Chronicle SOAR 的 Google Cloud 项目的访问权限
  • Google Cloud 项目的 Logs Viewer (roles/logging.viewer) IAM 角色
  • Logging Admin (roles/logging.admin) IAM 角色,用于创建日志接收器

创建 Google Cloud Storage 存储分区

  1. 转到 Google Cloud Console
  2. 选择您的项目或创建新项目。
  3. 在导航菜单中,依次前往 Cloud Storage > 存储分区
  4. 点击创建存储分区
  5. 提供以下配置详细信息:

    设置
    为存储桶命名 输入一个全局唯一的名称(例如 chronicle-soar-audit-logs
    位置类型 根据您的需求进行选择(区域级、双区域级、多区域级)
    位置 选择相应位置(例如 us-central1
    存储类别 标准(建议用于经常访问的日志)
    访问权限控制 统一(推荐)
    保护工具 可选:启用对象版本控制或保留政策
  6. 点击创建

启用 SOAR 日志收集(仅限独立部署)

如需为独立部署启用 SOAR 日志导出,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,转到 IAM 和管理 > 服务账号
  2. 点击创建服务账号
  3. 提供以下配置详细信息:
    • 服务账号名称:输入 soar-logs-export-sa
    • 服务账号说明:输入 Service account for exporting SOAR logs to Cloud Logging
  4. 点击创建并继续
  5. 向此服务账号授予对项目的访问权限部分:
    1. 点击选择角色
    2. 搜索并选择 Logs Writer
  6. 点击继续
  7. 点击完成
  8. 服务账号列表中,找到相应服务账号 (soar-logs-export-sa)。
  9. 依次点击 more_vert 更多 > 管理权限
  10. 权限部分中,点击授予访问权限
  11. 添加主账号字段中,输入以下主账号:

    gke-init-backgroundservices@{SOAR-GCP-Project-Id}.iam.gserviceaccount.com
    
  12. 分配角色部分中:

    1. 点击选择角色
    2. 搜索并选择 Service Account Token Creator
  13. 点击保存

  14. 复制服务账号的完整电子邮件地址 (soar-logs-export-sa@PROJECT_ID.iam.gserviceaccount.com)。

  15. 提交工单给 Google SecOps 支持团队,并附上服务账号电子邮件地址,以启用日志导出功能。

配置 Cloud Logging 接收器以将 SOAR 日志导出到 GCS

Chronicle SOAR 日志会写入 Google Cloud Logging 中的 chronicle-soar 命名空间。您必须创建日志接收器,才能将这些日志路由到您的 GCS 存储桶。

  1. 在 Google Cloud 控制台中,前往 Logging > 日志路由器
  2. 选择部署了 Chronicle SOAR 的 Google Cloud 项目。
  3. 点击创建接收器
  4. 接收器详情面板中,提供以下配置详细信息:
    • 接收器名称:输入 chronicle-soar-to-gcs
    • 接收器说明:输入 Export Chronicle SOAR audit logs to GCS for Chronicle SIEM ingestion
  5. 点击下一步
  6. 接收器目标位置面板中:
    1. 选择接收器服务菜单中,选择 Cloud Storage 存储桶
    2. 选择 Cloud Storage 存储桶菜单中,选择相应存储桶 (chronicle-soar-audit-logs)。
  7. 点击下一步
  8. 选择要包含在接收器中的日志面板中:

    1. 构建包含项过滤条件字段中,输入以下过滤条件:

      resource.labels.namespace_name="chronicle-soar"
      

      此过滤条件可匹配来自 ETL、Playbook 和 Python 服务的所有 SOAR 日志。

    2. 点击预览日志,验证过滤条件是否与预期的日志条目匹配。

  9. 点击下一步

  10. 可选:在选择要从接收器中过滤掉的日志面板中,您可以根据需要添加排除项过滤条件。对于大多数部署,无需排除任何内容。

  11. 点击创建接收器

验证日志导出到 GCS

  1. 等待 5-10 分钟,让日志导出到 GCS 存储桶。
  2. 在 Google Cloud 控制台中,前往 Cloud Storage > 存储分区
  3. 点击相应存储桶的名称 (chronicle-soar-audit-logs)。
  4. 验证日志文件是否正在存储桶中创建。文件按日期和时间整理:

    chronicle-soar/YYYY/MM/DD/HH:MM:SS_<unique-id>.json
    
  5. 点击日志文件可预览其内容。每个文件都包含 JSON 格式的日志条目。

检索 Google SecOps 服务账号

Google SecOps 使用唯一的服务账号从您的 GCS 存储桶中读取数据。您必须授予此服务账号对您的存储桶的访问权限。

获取服务账号电子邮件地址

  1. 依次前往 SIEM 设置> Feed
  2. 点击添加新 Feed
  3. 点击配置单个 Feed
  4. Feed 名称字段中,输入 Feed 的名称(例如 Chronicle SOAR Audit Logs)。
  5. 选择 Google Cloud Storage V2 作为来源类型
  6. 选择 CHRONICLE_SOAR_AUDIT 作为日志类型
  7. 点击获取服务账号
  8. 系统会显示一个唯一的服务账号电子邮件地址,例如:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. 复制此电子邮件地址,以便在下一步中使用。

  10. 点击下一步

  11. 为以下输入参数指定值:

    • 存储桶网址:输入带有前缀路径的 GCS 存储桶 URI:

      gs://chronicle-soar-audit-logs/chronicle-soar/
      
    • 来源删除选项:根据您的偏好选择删除选项:

      • 永不:转移后永不删除任何文件(建议用于测试)。
      • 删除已转移的文件:在成功转移后删除文件。
      • 删除已转移的文件和空目录:在成功转移后删除文件和空目录。
    • 文件存在时间上限:包含在过去指定天数内修改的文件(默认值为 180 天)

    • 资产命名空间资产命名空间

    • 注入标签:要应用于此 Feed 中事件的标签

  12. 点击下一步

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

向 Google SecOps 服务账号授予 IAM 权限

Google SecOps 服务账号需要对您的 GCS 存储桶具有 Storage Object Viewer 角色。

  1. 前往 Cloud Storage > 存储分区
  2. 点击相应存储桶的名称 (chronicle-soar-audit-logs)。
  3. 前往权限标签页。
  4. 点击授予访问权限
  5. 提供以下配置详细信息:
    • 添加主账号:粘贴 Google SecOps 服务账号电子邮件地址
    • 分配角色:选择 Storage Object Viewer
  6. 点击保存

按服务类型过滤 SOAR 日志

Chronicle SOAR 日志按生成日志的服务进行分类。您可以在 Cloud Logging 中过滤日志,也可以为不同的日志类型创建单独的接收器。

可用的日志服务

可用的服务类型如下:

  • playbook:playbook 执行的日志,包括块执行、操作结果和工作流状态
  • python:Python 脚本执行的日志,包括集成操作、连接器和作业
  • etl:来自提醒注入和数据转换流程的日志

在 Cloud Logging 中按服务过滤

如需查看特定服务的日志,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Logging > Logs Explorer
  2. 选择部署了 Chronicle SOAR 的 Google Cloud 项目。
  3. 输入以下过滤条件可查看来自特定服务的日志:

    resource.labels.namespace_name="chronicle-soar"
    resource.labels.container_name="playbook"
    

    playbook 替换为 pythonetl,以查看其他服务的日志。

为不同的日志类型创建单独的接收器

如需将不同类型的日志路由到不同的 GCS 存储分区或前缀,请创建具有特定于服务的过滤条件的额外接收器:

  1. 按照配置 Cloud Logging 接收器以将 SOAR 日志导出到 GCS 部分中的步骤操作。
  2. 构建包含项过滤条件字段中,使用以下过滤条件之一:

    仅限 Playbook 日志

    resource.labels.namespace_name="chronicle-soar"
    resource.labels.container_name="playbook"
    

    仅限 Python 日志

    resource.labels.namespace_name="chronicle-soar"
    resource.labels.container_name="python"
    

    仅 ETL 日志

    resource.labels.namespace_name="chronicle-soar"
    resource.labels.container_name="etl"
    

可用于过滤的日志标签

Chronicle SOAR 日志包含标签,可提供额外的过滤和分析背景信息。

Playbook 标签

以下标签可用于 playbook 日志:

  • playbook_definition:剧本定义的唯一标识符
  • playbook_name:playbook 的人类可读名称
  • block_name:正在执行的 playbook 块的名称
  • block_definition:块定义的唯一标识符
  • case_id:Chronicle SOAR 支持请求标识符
  • correlation_id:用于在整个服务中跟踪整个 playbook 执行情况的唯一标识符
  • integration_name:所用集成的名称
  • action_name:正在执行的操作的名称

Python 标签

以下标签适用于 Python 服务日志:

集成和连接器标签

  • integration_name:集成的名称
  • integration_version:集成版本
  • connector_name:连接器的名称
  • connector_instance:连接器的实例标识符

作业标签

  • integration_name:集成的名称
  • integration_version:集成版本
  • job_name:已安排的作业的名称

操作标签

  • integration_name:集成的名称
  • integration_version:集成版本
  • integration_instance:集成功能的实例标识符
  • correlation_id:用于跟踪执行情况的唯一标识符
  • action_name:正在执行的操作的名称

ETL 标签

以下标签适用于 ETL 服务日志:

  • correlation_id:用于跟踪提醒提取流程的唯一标识符

使用 correlation_id 进行完整跟踪

correlation_id 标签可在 playbook 和 Python 服务日志中找到。使用此标签可从整个 playbook 执行中检索所有关联的日志:

  1. 在 Google Cloud 控制台中,前往 Logging > Logs Explorer
  2. 输入以下过滤条件:

    resource.labels.namespace_name="chronicle-soar"
    labels.correlation_id="<correlation-id-value>"
    

    <correlation-id-value> 替换为日志条目中的实际相关 ID。

此过滤条件会返回 playbook 和 Python 服务中的所有日志,以获取完整的执行轨迹。

UDM 映射表

日志字段 UDM 映射 逻辑
模块、screenSize、activityItem、modificationTimeUnixTimeInMs additional.fields 根据每个字段(如果存在)创建的合并标签
用户、操作 extensions.auth.type 如果用户不为空且操作为“登录”,则设置为“AUTHTYPE_UNSPECIFIED”
creationTimeUnixTimeInMs metadata.event_timestamp 解析为 UNIX_MS 时间戳
用户、操作、地址 metadata.event_type 如果用户不为空且操作为“登录”,则设置为“USER_LOGIN”;如果用户不为空,则设置为“USER_RESOURCE_ACCESS”;如果地址为空,则设置为“STATUS_UNCATEGORIZED”;否则设置为“GENERIC_EVENT”
操作 metadata.product_event_type 直接复制值
id metadata.product_log_id 已转换为字符串
browser network.http.parsed_user_agent 已转换为已解析的用户代理
browser network.http.user_agent 直接复制值
地址 principal.hostname 设置地址是否与 IP 模式匹配
地址 principal.ip 使用 Grok 模式提取的 IP
来源 principal.resource.resource_subtype 直接复制值
用户 principal.user.userid 直接复制值
ContactEmails security_result.about.user.email_addresses 使用 Grok 模式提取的电子邮件地址
ContactPhone security_result.about.user.phone_numbers 直接复制值
ContactName security_result.about.user.user_display_name 直接复制值
名称 security_result.about.user.userid 直接复制值
currentActivity、previousActivity security_result.detection_fields 合并了来自 currentActivity 和 previousActivity(如果存在)的标签
userGuid target.user.product_object_id 直接复制值
metadata.product_name 设置为“CHRONICLE_SOAR_AUDIT”
metadata.vendor_name 设置为“CHRONICLE_SOAR_AUDIT”

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