收集 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
您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:
- SIEM 设置 > Feed
- 内容中心 > 内容包
通过“SIEM 设置”>“Feed”设置 Feed
如需配置 Feed,请按以下步骤操作:
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称,例如 Sysdig 日志。
- 选择 Webhook 作为来源类型。
- 选择 Sysdig 作为日志类型。
- 点击下一步。
可选:为以下输入参数指定值:
- 拆分分隔符:用于分隔日志行的分隔符,例如
\n
。
- 拆分分隔符:用于分隔日志行的分隔符,例如
点击下一步。
在最终确定界面中检查 Feed 配置,然后点击提交。
点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
复制并存储密钥。您将无法再次查看此密钥。如有需要,您可以重新生成新的 Secret 密钥,但此操作会使之前的 Secret 密钥失效。
在详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。
点击完成。
设置来自内容中心的 Feed
为以下字段指定值:
- 拆分分隔符:用于分隔日志行的分隔符,例如
\n
。
高级选项
- Feed 名称:用于标识 Feed 的预填充值。
- 来源类型:用于将日志收集到 Google SecOps 中的方法。
- 资源命名空间:与 Feed 关联的命名空间。
提取标签:应用于相应 Feed 中所有事件的标签。
点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
复制并存储密钥。您将无法再次查看此密钥。如有需要,您可以重新生成新的 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。
- 依次前往个人资料 > 设置 > 事件转发。
- 点击 + 添加集成,然后从下拉菜单中选择 Webhook。
为以下输入参数指定值:
- 集成名称:为 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”。 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。