收集 Jenkins 日志

支持的语言:

概览

此解析器可从 JSON 和 SYSLOG 格式的日志中提取时间戳、用户 ID、源 IP、操作和对象 ID 等关键信息。它使用 Grok 模式来匹配各种日志消息格式,处理结构变化,并使用提取的字段填充统一数据模型 (UDM)。解析器还会根据是否存在用户或 IP 信息对事件进行分类。

准备工作

确保您满足以下前提条件:

  • Google SecOps 实例。
  • 对 Google Cloud IAM 的特权访问权限。
  • 对 Google Cloud 存储空间的特权访问权限。
  • 对 Jenkins 的特权访问权限。

创建 Google Cloud 存储分区

  1. 前往 Cloud Storage
  2. 创建新存储桶。选择一个独一无二的名称和适当的区域。
  3. 确保存储桶具有适当的访问权限控制机制(例如,只有已获授权的服务账号可以向其中写入数据)。

创建 Google Cloud 服务账号

  1. 前往 IAM 和管理 > 服务账号
  2. 创建新的服务账号。为其指定一个描述性名称(例如,jenkins-logs)。
  3. 向服务账号授予您在上一步中创建的 GCS 存储桶的 Storage Object Creator 角色。
  4. 为服务账号创建 SSH 密钥:创建和删除服务账号密钥
  5. 下载服务账号的 JSON 密钥文件。

在 Jenkins 中安装 Google Cloud 存储插件

  1. 依次前往管理 Jenkins > 插件
  2. 选择可用插件
  3. 搜索 Google Cloud Storage 插件。
  4. 安装插件,并在需要时重启 Jenkins。

在 Jenkins 中安装 Google OAuth 凭据插件

  1. 依次前往管理 Jenkins > 插件
  2. 选择可用插件
  3. 搜索 Google OAuth Credentials 插件。
  4. 安装插件,并在需要时重启 Jenkins。

配置 Jenkins 以使用 Google Cloud进行身份验证

  1. 依次前往管理 Jenkins > 凭据 > 系统

  2. 点击 添加 添加凭据

  3. 种类:选择私钥中的 Google 服务账号

  4. 项目名称:为凭据设置名称。

  5. 上传您在 Google Cloud 创建服务账号期间获得的 JSON 密钥文件。

  6. 点击创建

配置 Jenkins 日志以上传 Google SecOps

  1. 在 Jenkins 作业配置中,在构建后操作中添加 Google Storage Build Log Upload,并使用以下参数:
    • Google 凭据:您在上一步中创建的 Google 凭据的名称。
    • 日志名称:用于存储 Jenkins 构建日志的文件名称,位于指定的存储路径下。
    • 存储位置:您要将日志上传到的存储桶的名称。存储桶必须可供您创建的服务账号访问。
  2. 测试日志上传。

设置 Feed

您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:

  • SIEM 设置 > Feed
  • 内容中心 > 内容包

通过“SIEM 设置”>“Feed”设置 Feed

如需配置 Feed,请按以下步骤操作:

  1. 依次前往 SIEM 设置 > Feed
  2. 点击添加新 Feed
  3. 在下一页上,点击配置单个 Feed
  4. Feed 名称字段中,输入 Feed 的名称,例如 Jenkins 日志
  5. 选择 Google Cloud Storage 作为来源类型
  6. 选择 Jenkins 作为日志类型
  7. 点击获取服务账号作为 Chronicle 服务账号
  8. 点击下一步
  9. 为以下输入参数指定值:

    • 存储桶 URIgs://my-bucket/<value> 格式的 Google Cloud 存储桶网址。
    • URI is a(URI 是一个):选择目录(包括子目录)
    • 来源删除选项:根据您的偏好设置选择删除选项。
  10. 点击下一步

  11. 最终确定界面中查看新的 Feed 配置,然后点击提交

设置来自内容中心的 Feed

为以下字段指定值:

  • 存储桶 URIgs://my-bucket/<value> 格式的 Google Cloud 存储桶网址。
  • URI is a(URI 是一个):选择目录(包括子目录)
  • 来源删除选项:根据您的偏好设置选择删除选项。

高级选项

  • Feed 名称:用于标识 Feed 的预填充值。
  • 来源类型:用于将日志收集到 Google SecOps 中的方法。
  • 资源命名空间:与 Feed 关联的命名空间。
  • 提取标签:应用于相应 Feed 中所有事件的标签。

UDM 映射表

日志字段 UDM 映射 逻辑
act security_result.action_details 提取自 msg1msg2 字段。表示执行的操作。前导空格会被移除。
数据 principal.user.useridprincipal.ipmetadata.description 如果数据与 IP 地址模式匹配,则会映射到 principal.ip。如果与用户名模式匹配,则映射到 principal.user.userid。否则,它会映射到 metadata.description
msg1 target.asset.product_object_idsecurity_result.action_details 用于提取 objectact。如果存在 /,则将其拆分为 objectact。如果存在 »,则将其拆分为 objectact。否则,将其视为 act 并可能进一步解析。
msg2 metadata.descriptionsecurity_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 专业人士那里获得解答。