收集 Sysdig 日志
支持的平台:
Google SecOps
SIEM
此解析器会从 Sysdig JSON 日志中提取安全事件数据,并将原始日志字段转换和映射为 Google Security Operations UDM 格式。它会处理各种字段,包括元数据、正文/目标信息、安全结果详情和 Kubernetes 相关上下文,从而丰富数据,以便在 Google SecOps 中进行分析。解析器还会根据字段值执行数据类型转换、错误处理和条件逻辑,以确保准确、全面地表示 UDM。
准备工作
- 确保您拥有 Google SecOps 实例。
- 确保您拥有对 Sysdig Secure 的特权访问权限。
为该 Webhook Feed 创建 API 密钥
依次前往 Google Cloud 控制台 > 凭据。
点击创建凭据,然后选择 API 密钥。
限制 API 密钥对 Google Security Operations API 的访问权限。
选项 1
在 Google SecOps 中配置 Webhook Feed 以提取 Sysdig 日志
- 依次前往 SIEM 设置 > Feed。
- 点击新增。
- 在Feed 名称字段中,输入 Feed 的名称(例如 Sysdig 日志)。
- 选择 Webhook 作为来源类型。
- 选择 Sysdig 作为日志类型。
- 点击下一步。
- 可选:为以下输入参数指定值:
- 分隔符:用于分隔日志行(例如
\n
)的分隔符。 - 资源命名空间:资源命名空间。
- 提取标签:应用于此 Feed 中的事件的标签。
- 分隔符:用于分隔日志行(例如
- 点击下一步。
- 在最终确定界面中查看 Feed 配置,然后点击提交。
- 点击生成 Secret 密钥,生成用于对此 Feed 进行身份验证的 Secret 密钥。
- 复制并存储密钥。您将无法再查看此密钥。如有必要,您可以重新生成新的 Secret 密钥,但此操作会使之前的 Secret 密钥过时。
- 在详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。
- 点击完成。
指定端点网址
- 在客户端应用中,指定 webhook Feed 中提供的 HTTPS 端点网址。
通过在自定义标头中指定 API 密钥和密钥(格式如下)来启用身份验证:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
建议:将 API 密钥作为标头指定,而不是在网址中指定。
如果您的 webhook 客户端不支持自定义标头,您可以使用以下格式的查询参数指定 API 密钥和密钥:
ENDPOINT_URL?key=API_KEY&secret=SECRET
替换以下内容:
ENDPOINT_URL
:Feed 端点网址。API_KEY
:用于对 Google SecOps 进行身份验证的 API 密钥。SECRET
:您为对 Feed 进行身份验证而生成的密钥。
在 Sysdig 中配置 Webhook
- 使用管理员权限登录 Sysdig Secure。
- 依次前往配置文件 > 设置 > 事件转发。
- 点击 +Add Integration,然后从下拉菜单中选择 Webhook。
为以下输入参数指定值:
- 集成名称:为该 Webhook 提供一个描述性名称(例如“Google SecOps Webhook”)。
- 端点:输入 Webhook
<ENDPOINT_URL>
,后跟<API_KEY
和<SECRET>
。 要发送的数据:从下拉菜单中选择应转发的 Sysdig 数据类型。
测试集成,然后切换已启用以启用集成。
点击保存。
选项 2
将数据直接转发到 Google SecOps
- 使用您的管理员凭据登录 Sysdig Secure。
- 依次前往设置 > 事件转发。
- 点击 +Add Integration(添加集成),然后从下拉菜单中选择 Google Chronicle。
- 为以下输入参数指定值:
- 集成名称:为集成提供一个描述性名称(例如“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.ip 或 read_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
- 新创建的解析器。