收集 Sysdig 日志
此解析器会从 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
设置 Feed
如需配置 Feed,请按以下步骤操作:
- 依次前往设置 > 数据管理 > Feed。如果您使用的是仅 SIEM 平台,请依次前往设置 > Feed。
- 点击添加新新闻信息流。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称,例如 Sysdig Logs。
- 选择 Webhook 作为来源类型。
- 选择 Sysdig 作为日志类型。
- 点击下一步。
可选:为以下输入参数指定值:
- 拆分定界符:用于分隔日志行的定界符,例如
\n。
- 拆分定界符:用于分隔日志行的定界符,例如
点击下一步。
在最终确定界面中查看 Feed 配置,然后点击提交。
点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
复制并存储密钥。您无法再次查看此密钥。如有需要,您可以重新生成新的密钥,但此操作会使之前的密钥失效。
在详细信息标签页中,从端点信息字段复制 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。
为以下输入参数指定值:
- Integration Name(集成名称):为 Webhook 提供一个描述性名称(例如 Google SecOps Webhook)。
- 端点:输入 Webhook
<ENDPOINT_URL>,后跟<API_KEY和<SECRET>。 要发送的数据:从下拉列表中选择应转发的 Sysdig 数据类型。
测试集成,然后切换已启用以将其激活。
点击保存。
选项 2
直接将数据转发到 Google SecOps
- 使用管理员凭证登录 Sysdig Secure。
- 前往设置 > 事件转发。
- 点击 +Add Integration(+添加集成),然后从下拉菜单中选择 Google Chronicle。
- 为以下输入参数指定值:
- 集成名称:为集成提供一个描述性名称(例如 Google SecOps 集成)。
- 客户 ID:与您的 Google Cloud 账号关联的 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 = HIGH、>3 且 <6 = MEDIUM、6 = LOW、7 = INFORMATIONAL。 |
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 字段。 |
| (解析器逻辑) | read_only_udm.metadata.product_name |
硬编码为“SYSDIG”。 |
| (解析器逻辑) | read_only_udm.metadata.vendor_name |
硬编码为“SYSDIG”。 |
| (解析器逻辑) | read_only_udm.metadata.event_type |
默认设置为“PROCESS_UNCATEGORIZED”,如果 labels.host.hostName 为空,则设置为“GENERIC_EVENT”。 |
| (解析器逻辑) | read_only_udm.metadata.log_type |
硬编码为“SYSDIG”。 |
| (解析器逻辑) | read_only_udm.target.resource.resource_type |
如果 labels.aws.instanceId 存在,则设置为“CLOUD_PROJECT”。 |