收集 Jenkins 日志
支持的语言:
Google SecOps
SIEM
概览
此解析器可从 JSON 和 SYSLOG 格式的日志中提取时间戳、用户 ID、源 IP、操作和对象 ID 等关键信息。它使用 Grok 模式来匹配各种日志消息格式,处理结构变化,并使用提取的字段填充统一数据模型 (UDM)。解析器还会根据是否存在用户或 IP 信息对事件进行分类。
准备工作
确保您满足以下前提条件:
- Google SecOps 实例。
- 对 Google Cloud IAM 的特权访问权限。
- 对 Google Cloud 存储空间的特权访问权限。
- 对 Jenkins 的特权访问权限。
创建 Google Cloud 存储分区
- 前往 Cloud Storage。
- 创建新存储桶。选择一个独一无二的名称和适当的区域。
- 确保存储桶具有适当的访问权限控制机制(例如,只有已获授权的服务账号可以向其中写入数据)。
创建 Google Cloud 服务账号
- 前往 IAM 和管理 > 服务账号。
- 创建新的服务账号。为其指定一个描述性名称(例如,jenkins-logs)。
- 向服务账号授予您在上一步中创建的 GCS 存储桶的 Storage Object Creator 角色。
- 为服务账号创建 SSH 密钥:创建和删除服务账号密钥。
下载服务账号的 JSON 密钥文件。
在 Jenkins 中安装 Google Cloud 存储插件
- 依次前往管理 Jenkins > 插件。
- 选择可用插件。
- 搜索 Google Cloud Storage 插件。
- 安装插件,并在需要时重启 Jenkins。
在 Jenkins 中安装 Google OAuth 凭据插件
- 依次前往管理 Jenkins > 插件。
- 选择可用插件
- 搜索 Google OAuth Credentials 插件。
- 安装插件,并在需要时重启 Jenkins。
配置 Jenkins 以使用 Google Cloud进行身份验证
依次前往管理 Jenkins > 凭据 > 系统。
点击 添加 添加凭据。
种类:选择私钥中的 Google 服务账号。
项目名称:为凭据设置名称。
上传您在 Google Cloud 创建服务账号期间获得的 JSON 密钥文件。
点击创建。
配置 Jenkins 日志以上传 Google SecOps
- 在 Jenkins 作业配置中,在构建后操作中添加 Google Storage Build Log Upload,并使用以下参数:
- Google 凭据:您在上一步中创建的 Google 凭据的名称。
- 日志名称:用于存储 Jenkins 构建日志的文件名称,位于指定的存储路径下。
- 存储位置:您要将日志上传到的存储桶的名称。存储桶必须可供您创建的服务账号访问。
- 测试日志上传。
设置 Feed
您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:
- SIEM 设置 > Feed
- 内容中心 > 内容包
通过“SIEM 设置”>“Feed”设置 Feed
如需配置 Feed,请按以下步骤操作:
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称,例如 Jenkins 日志。
- 选择 Google Cloud Storage 作为来源类型。
- 选择 Jenkins 作为日志类型。
- 点击获取服务账号作为 Chronicle 服务账号。
- 点击下一步。
为以下输入参数指定值:
- 存储桶 URI:
gs://my-bucket/<value>
格式的 Google Cloud 存储桶网址。 - URI is a(URI 是一个):选择目录(包括子目录)。
- 来源删除选项:根据您的偏好设置选择删除选项。
- 存储桶 URI:
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
设置来自内容中心的 Feed
为以下字段指定值:
- 存储桶 URI:
gs://my-bucket/<value>
格式的 Google Cloud 存储桶网址。 - URI is a(URI 是一个):选择目录(包括子目录)。
- 来源删除选项:根据您的偏好设置选择删除选项。
高级选项
- Feed 名称:用于标识 Feed 的预填充值。
- 来源类型:用于将日志收集到 Google SecOps 中的方法。
- 资源命名空间:与 Feed 关联的命名空间。
- 提取标签:应用于相应 Feed 中所有事件的标签。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
act | security_result.action_details | 提取自 msg1 或 msg2 字段。表示执行的操作。前导空格会被移除。 |
数据 | principal.user.userid 或 principal.ip 或 metadata.description | 如果数据与 IP 地址模式匹配,则会映射到 principal.ip。如果与用户名模式匹配,则映射到 principal.user.userid。否则,它会映射到 metadata.description。 |
msg1 | target.asset.product_object_id 或 security_result.action_details | 用于提取 object 和 act。如果存在 / ,则将其拆分为 object 和 act。如果存在 » ,则将其拆分为 object 和 act。否则,将其视为 act 并可能进一步解析。 |
msg2 | metadata.description 或 security_result.action_details | 如果存在,则最初映射到 metadata.description。如果包含“completed:”,则提取后面的值并将其映射到 security_result.action_details。 |
对象 | target.asset.product_object_id | 从 msg1 中提取。表示所操作的对象。 |
object_id | target.resource.attribute.labels.value | 如果存在 / ,则从 对象中提取。表示更具体的对象标识符。该键硬编码为“插件名称”。 |
src_ip | principal.ip | 从消息或数据中提取。表示源 IP 地址。 |
用户 | principal.user.userid | 从消息或数据中提取。表示与活动关联的用户。 |
metadata.event_timestamp | 从计算出的 @timestamp 字段复制。 | |
metadata.event_type | 由解析器逻辑决定。如果存在 user,则设置为 USER_UNCATEGORIZED;如果存在 src_ip,则设置为 STATUS_UNCATEGORIZED;否则,设置为 GENERIC_EVENT。 | |
metadata.product_name | 硬编码为 Jenkins。 | |
metadata.product_version | 硬编码为 Jenkins。 | |
metadata.vendor_name | 硬编码为 JENKINS。 | |
metadata.event_timestamp | 由年、月、日、时间和 ampm 字段构造而成。 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。