收集 Sysdig 日志

支持的平台:

此解析器会从 Sysdig JSON 日志中提取安全事件数据,并将原始日志字段转换和映射为 Google Security Operations UDM 格式。它会处理各种字段,包括元数据、正文/目标信息、安全结果详情和 Kubernetes 相关上下文,从而丰富数据,以便在 Google SecOps 中进行分析。解析器还会根据字段值执行数据类型转换、错误处理和条件逻辑,以确保准确、全面地表示 UDM。

准备工作

  • 确保您拥有 Google SecOps 实例。
  • 确保您拥有对 Sysdig Secure 的特权访问权限。

为该 Webhook Feed 创建 API 密钥

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

    转到“凭据”页面

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

  3. 限制 API 密钥对 Google Security Operations API 的访问权限。

选项 1

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

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

指定端点网址

  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 进行身份验证而生成的密钥。

在 Sysdig 中配置 Webhook

  1. 使用管理员权限登录 Sysdig Secure。
  2. 依次前往配置文件 > 设置 > 事件转发
  3. 点击 +Add Integration,然后从下拉菜单中选择 Webhook
  4. 为以下输入参数指定值:

    • 集成名称:为该 Webhook 提供一个描述性名称(例如“Google SecOps Webhook”)。
    • 端点:输入 Webhook <ENDPOINT_URL>,后跟 <API_KEY<SECRET>
    • 要发送的数据:从下拉菜单中选择应转发的 Sysdig 数据类型。

    • 测试集成,然后切换已启用以启用集成。

    • 点击保存

选项 2

将数据直接转发到 Google SecOps

  1. 使用您的管理员凭据登录 Sysdig Secure。
  2. 依次前往设置 > 事件转发
  3. 点击 +Add Integration(添加集成),然后从下拉菜单中选择 Google Chronicle
  4. 为以下输入参数指定值:
    • 集成名称:为集成提供一个描述性名称(例如“Google SecOps 集成”)。
    • 客户 ID:与您的 GCP 账号关联的 Google 客户 ID。(在 Google SecOps 中,依次选择设置 > 个人资料即可找到此设置)。
    • 命名空间:可选:用作标记,用于标识要编入索引和丰富的适当数据领域。
    • JSON 凭据:上传您的 Google SecOps JSON 凭据。
    • 区域:选择您所在的区域,例如美国、欧洲或亚洲。
    • 要发送的数据:从下拉菜单中选择应转发的 Sysdig 数据类型。
    • 测试集成,然后切换已启用以启用集成。
    • 点击保存

UDM 映射表

日志字段 UDM 映射 逻辑
agentId read_only_udm.metadata.product_deployment_id 原始日志中的 agentId 值会直接映射到此 UDM 字段。
category read_only_udm.security_result.category_details 原始日志中的 category 值会直接映射到此 UDM 字段。
content.fields.container.id read_only_udm.target.asset.asset_id 原始日志中的 content.fields.container.id 值会附加“container_id:”前缀,并映射到此 UDM 字段。如果 containerId 为空,则使用此值。
content.fields.container.image.repository read_only_udm.target.file.full_path 原始日志中的 content.fields.container.image.repository 值会直接映射到此 UDM 字段。
content.fields.container.image.tag read_only_udm.metadata.ingestion_labels.value,其中键为 tag 原始日志中的 content.fields.container.image.tag 值会直接映射到此 UDM 字段。
content.fields.evt.res read_only_udm.metadata.ingestion_labels.value,其中键为 evt_res 原始日志中的 content.fields.evt.res 值会直接映射到此 UDM 字段。
content.fields.evt.type read_only_udm.metadata.event_type 原始日志中的 content.fields.evt.type 值会直接映射到此 UDM 字段。
content.fields.falco.rule read_only_udm.security_result.rule_name 原始日志中的 content.fields.falco.rule 值会直接映射到此 UDM 字段。如果 content.ruleName 为空,则使用此值。
content.fields.group.gid read_only_udm.target.group.product_object_id 原始日志中的 content.fields.group.gid 值会直接映射到此 UDM 字段。
content.fields.group.name read_only_udm.target.group.group_display_name 原始日志中的 content.fields.group.name 值会直接映射到此 UDM 字段。
content.fields.proc.cmdline read_only_udm.target.process.command_line 原始日志中的 content.fields.proc.cmdline 值会直接映射到此 UDM 字段。
content.fields.proc.pcmdline read_only_udm.target.process.parent_process.command_line 原始日志中的 content.fields.proc.pcmdline 值会直接映射到此 UDM 字段。
content.fields.proc.pid read_only_udm.target.process.pid 原始日志中的 content.fields.proc.pid 值会直接映射到此 UDM 字段。
content.fields.proc.ppid read_only_udm.target.process.parent_process.pid 原始日志中的 content.fields.proc.ppid 值会直接映射到此 UDM 字段。
content.fields.proc.sid read_only_udm.metadata.ingestion_labels.value,其中键为 sid 原始日志中的 content.fields.proc.sid 值会直接映射到此 UDM 字段。
content.fields.user.loginname read_only_udm.principal.user.user_display_name 原始日志中的 content.fields.user.loginname 值会直接映射到此 UDM 字段。
content.fields.user.uid read_only_udm.principal.user.userid 原始日志中的 content.fields.user.uid 值会直接映射到此 UDM 字段。
content.output read_only_udm.additional.fields.value.string_value,其中键为 content_output 原始日志中的 content.output 值会直接映射到此 UDM 字段。
content.policyId read_only_udm.security_result.rule_id 原始日志中的 content.policyId 值会直接映射到此 UDM 字段。
content.policyOrigin read_only_udm.additional.fields.value.string_value,其中键为 content_policyOrigin 原始日志中的 content.policyOrigin 值会直接映射到此 UDM 字段。
content.policyVersion read_only_udm.additional.fields.value.string_value,其中键为 content_policyVersion 原始日志中的 content.policyVersion 值会直接映射到此 UDM 字段。
content.ruleName read_only_udm.security_result.rule_name 原始日志中的 content.ruleName 值会直接映射到此 UDM 字段。
content.ruleTags read_only_udm.security_result.rule_labels 原始日志中的 content.ruleTags 数组中的值会映射到此 UDM 字段,其中键会动态生成为“ruletag_index”。
content.ruleType read_only_udm.additional.fields.value.string_value,其中键为 content_ruleType 原始日志中的 content.ruleType 值会直接映射到此 UDM 字段。
containerId read_only_udm.target.asset.asset_id 原始日志中的 containerId 值会附加“container_id:”前缀,并映射到此 UDM 字段。
description read_only_udm.metadata.description 原始日志中的 description 值会直接映射到此 UDM 字段。
id read_only_udm.metadata.product_log_id 原始日志中的 id 值会直接映射到此 UDM 字段。
labels.container.label.io.kubernetes.container.name read_only_udm.additional.fields.value.string_value,其中键为 container_name 原始日志中的 labels.container.label.io.kubernetes.container.name 值会直接映射到此 UDM 字段。
labels.container.label.io.kubernetes.pod.name read_only_udm.additional.fields.value.string_value,其中键为 pod_name 原始日志中的 labels.container.label.io.kubernetes.pod.name 值会直接映射到此 UDM 字段。如果 labels.kubernetes.pod.name 为空,则使用此值。
labels.container.label.io.kubernetes.pod.namespace read_only_udm.principal.namespace 原始日志中的 labels.container.label.io.kubernetes.pod.namespace 值会直接映射到此 UDM 字段。如果 labels.kubernetes.namespace.name 为空,则使用此值。
labels.aws.instanceId read_only_udm.target.resource.product_object_id 原始日志中的 labels.aws.instanceId 值会直接映射到此 UDM 字段。
labels.aws.region read_only_udm.target.resource.attribute.cloud.availability_zone 原始日志中的 labels.aws.region 值会直接映射到此 UDM 字段。
labels.host.hostName read_only_udm.principal.ipread_only_udm.principal.hostname 如果值包含“ip”,则会解析为 IP 地址并映射到 principal.ip。否则,它会映射到 principal.hostname
labels.host.mac read_only_udm.principal.mac 原始日志中的 labels.host.mac 值会直接映射到此 UDM 字段。如果 machineId 为空,则使用此值。
labels.kubernetes.cluster.name read_only_udm.additional.fields.value.string_value,其中键为 kubernetes_cluster_name 原始日志中的 labels.kubernetes.cluster.name 值会直接映射到此 UDM 字段。
labels.kubernetes.deployment.name read_only_udm.additional.fields.value.string_value,其中键为 kubernetes_deployment_name 原始日志中的 labels.kubernetes.deployment.name 值会直接映射到此 UDM 字段。
labels.kubernetes.namespace.name read_only_udm.principal.namespace 原始日志中的 labels.kubernetes.namespace.name 值会直接映射到此 UDM 字段。
labels.kubernetes.node.name read_only_udm.additional.fields.value.string_value,其中键为 kubernetes_node_name 原始日志中的 labels.kubernetes.node.name 值会直接映射到此 UDM 字段。
labels.kubernetes.pod.name read_only_udm.additional.fields.value.string_value,其中键为 pod_name 原始日志中的 labels.kubernetes.pod.name 值会直接映射到此 UDM 字段。
labels.kubernetes.service.name read_only_udm.additional.fields.value.string_value,其中键为 kubernetes_service_name 原始日志中的 labels.kubernetes.service.name 值会直接映射到此 UDM 字段。
machineId read_only_udm.principal.mac 原始日志中的 machineId 值会直接映射到此 UDM 字段。
name read_only_udm.security_result.summary 原始日志中的 name 值会直接映射到此 UDM 字段。
severity read_only_udm.security_result.severity 原始日志中的 severity 值会根据以下范围映射到字符串值:<4 = 高、>3 且 <6 = 中、6 = 低、7 = 信息。
source read_only_udm.security_result.description 原始日志中的 source 值会直接映射到此 UDM 字段。
timestampRFC3339Nano read_only_udm.metadata.event_timestamp 系统会将原始日志中的 timestampRFC3339Nano 值解析为时间戳,并将其映射到此 UDM 字段。
type read_only_udm.metadata.product_event_type 原始日志中的 type 值会直接映射到此 UDM 字段。
(Parser Logic) read_only_udm.metadata.product_name 已硬编码为“SYSDIG”。
(Parser Logic) read_only_udm.metadata.vendor_name 已硬编码为“SYSDIG”。
(Parser Logic) read_only_udm.metadata.event_type 默认设置为“PROCESS_UNCATEGORIZED”,如果 labels.host.hostName 为空,则设置为“GENERIC_EVENT”。
(Parser Logic) read_only_udm.metadata.log_type 已硬编码为“SYSDIG”。
(Parser Logic) read_only_udm.target.resource.resource_type 如果 labels.aws.instanceId 存在,则设置为“CLOUD_PROJECT”。

更改

2024-01-05

  • 如果“severity”为 0、1、2、3,则将“security_result.severity”的映射从“LOW”更改为“HIGH”。
  • 当“severity”为 6 时,将“security_result.severity”的映射从“HIGH”更改为“LOW”。
  • 当“severity”为 7 时,将“security_result.severity”的映射从“HIGH”更改为“INFORMATIONAL”。
  • 为非 JSON 格式的日志添加了“drop”。
  • 向“timestampRFC3339Nano”日期映射添加了“on_error”。

2022-10-07

  • 新创建的解析器。