收集 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 存储分区
- 转到 Google Cloud Console。
- 选择您的项目或创建新项目。
- 在导航菜单中,依次前往 Cloud Storage > 存储分区。
- 点击创建存储分区。
提供以下配置详细信息:
设置 值 为存储桶命名 输入一个全局唯一的名称(例如 chronicle-soar-audit-logs)位置类型 根据您的需求进行选择(区域级、双区域级、多区域级) 位置 选择相应位置(例如 us-central1)存储类别 标准(建议用于经常访问的日志) 访问权限控制 统一(推荐) 保护工具 可选:启用对象版本控制或保留政策 点击创建。
启用 SOAR 日志收集(仅限独立部署)
如需为独立部署启用 SOAR 日志导出,请按以下步骤操作:
- 在 Google Cloud 控制台中,转到 IAM 和管理 > 服务账号。
- 点击创建服务账号。
- 提供以下配置详细信息:
- 服务账号名称:输入
soar-logs-export-sa - 服务账号说明:输入
Service account for exporting SOAR logs to Cloud Logging
- 服务账号名称:输入
- 点击创建并继续。
- 在向此服务账号授予对项目的访问权限部分:
- 点击选择角色。
- 搜索并选择 Logs Writer。
- 点击继续。
- 点击完成。
- 在服务账号列表中,找到相应服务账号 (
soar-logs-export-sa)。 - 依次点击 more_vert 更多 > 管理权限。
- 在权限部分中,点击授予访问权限。
在添加主账号字段中,输入以下主账号:
gke-init-backgroundservices@{SOAR-GCP-Project-Id}.iam.gserviceaccount.com在分配角色部分中:
- 点击选择角色。
- 搜索并选择 Service Account Token Creator。
点击保存。
复制服务账号的完整电子邮件地址 (
soar-logs-export-sa@PROJECT_ID.iam.gserviceaccount.com)。提交工单给 Google SecOps 支持团队,并附上服务账号电子邮件地址,以启用日志导出功能。
配置 Cloud Logging 接收器以将 SOAR 日志导出到 GCS
Chronicle SOAR 日志会写入 Google Cloud Logging 中的 chronicle-soar 命名空间。您必须创建日志接收器,才能将这些日志路由到您的 GCS 存储桶。
- 在 Google Cloud 控制台中,前往 Logging > 日志路由器。
- 选择部署了 Chronicle SOAR 的 Google Cloud 项目。
- 点击创建接收器。
- 在接收器详情面板中,提供以下配置详细信息:
- 接收器名称:输入
chronicle-soar-to-gcs - 接收器说明:输入
Export Chronicle SOAR audit logs to GCS for Chronicle SIEM ingestion
- 接收器名称:输入
- 点击下一步。
- 在接收器目标位置面板中:
- 在选择接收器服务菜单中,选择 Cloud Storage 存储桶。
- 在选择 Cloud Storage 存储桶菜单中,选择相应存储桶 (
chronicle-soar-audit-logs)。
- 点击下一步。
在选择要包含在接收器中的日志面板中:
在构建包含项过滤条件字段中,输入以下过滤条件:
resource.labels.namespace_name="chronicle-soar"此过滤条件可匹配来自 ETL、Playbook 和 Python 服务的所有 SOAR 日志。
点击预览日志,验证过滤条件是否与预期的日志条目匹配。
点击下一步。
可选:在选择要从接收器中过滤掉的日志面板中,您可以根据需要添加排除项过滤条件。对于大多数部署,无需排除任何内容。
点击创建接收器。
验证日志导出到 GCS
- 等待 5-10 分钟,让日志导出到 GCS 存储桶。
- 在 Google Cloud 控制台中,前往 Cloud Storage > 存储分区。
- 点击相应存储桶的名称 (
chronicle-soar-audit-logs)。 验证日志文件是否正在存储桶中创建。文件按日期和时间整理:
chronicle-soar/YYYY/MM/DD/HH:MM:SS_<unique-id>.json点击日志文件可预览其内容。每个文件都包含 JSON 格式的日志条目。
检索 Google SecOps 服务账号
Google SecOps 使用唯一的服务账号从您的 GCS 存储桶中读取数据。您必须授予此服务账号对您的存储桶的访问权限。
获取服务账号电子邮件地址
- 依次前往 SIEM 设置> Feed。
- 点击添加新 Feed。
- 点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
Chronicle SOAR Audit Logs)。 - 选择 Google Cloud Storage V2 作为来源类型。
- 选择 CHRONICLE_SOAR_AUDIT 作为日志类型。
- 点击获取服务账号。
系统会显示一个唯一的服务账号电子邮件地址,例如:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com复制此电子邮件地址,以便在下一步中使用。
点击下一步。
为以下输入参数指定值:
存储桶网址:输入带有前缀路径的 GCS 存储桶 URI:
gs://chronicle-soar-audit-logs/chronicle-soar/来源删除选项:根据您的偏好选择删除选项:
- 永不:转移后永不删除任何文件(建议用于测试)。
- 删除已转移的文件:在成功转移后删除文件。
- 删除已转移的文件和空目录:在成功转移后删除文件和空目录。
文件存在时间上限:包含在过去指定天数内修改的文件(默认值为 180 天)
资产命名空间:资产命名空间
注入标签:要应用于此 Feed 中事件的标签
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
向 Google SecOps 服务账号授予 IAM 权限
Google SecOps 服务账号需要对您的 GCS 存储桶具有 Storage Object Viewer 角色。
- 前往 Cloud Storage > 存储分区。
- 点击相应存储桶的名称 (
chronicle-soar-audit-logs)。 - 前往权限标签页。
- 点击授予访问权限。
- 提供以下配置详细信息:
- 添加主账号:粘贴 Google SecOps 服务账号电子邮件地址
- 分配角色:选择 Storage Object Viewer
点击保存。
按服务类型过滤 SOAR 日志
Chronicle SOAR 日志按生成日志的服务进行分类。您可以在 Cloud Logging 中过滤日志,也可以为不同的日志类型创建单独的接收器。
可用的日志服务
可用的服务类型如下:
- playbook:playbook 执行的日志,包括块执行、操作结果和工作流状态
- python:Python 脚本执行的日志,包括集成操作、连接器和作业
- etl:来自提醒注入和数据转换流程的日志
在 Cloud Logging 中按服务过滤
如需查看特定服务的日志,请执行以下操作:
- 在 Google Cloud 控制台中,前往 Logging > Logs Explorer。
- 选择部署了 Chronicle SOAR 的 Google Cloud 项目。
输入以下过滤条件可查看来自特定服务的日志:
resource.labels.namespace_name="chronicle-soar" resource.labels.container_name="playbook"将
playbook替换为python或etl,以查看其他服务的日志。
为不同的日志类型创建单独的接收器
如需将不同类型的日志路由到不同的 GCS 存储分区或前缀,请创建具有特定于服务的过滤条件的额外接收器:
- 按照配置 Cloud Logging 接收器以将 SOAR 日志导出到 GCS 部分中的步骤操作。
在构建包含项过滤条件字段中,使用以下过滤条件之一:
仅限 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 执行中检索所有关联的日志:
- 在 Google Cloud 控制台中,前往 Logging > Logs Explorer。
输入以下过滤条件:
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 专业人士的解答。