收集 ServiceNow Security 日志

支持的语言:

概览

此解析器从 ServiceNow JSON 日志中提取安全事件数据,并将相关字段映射到 UDM。它会处理各种事件类型,例如登录和权限更改,填充主账号/目标用户信息、IP 地址和元数据(例如供应商和产品详细信息)。

准备工作

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

  • Google SecOps 实例。
  • 对 ServiceNow Security 的特权访问权限。

设置 Feed

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

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

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

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

  1. 依次前往 SIEM 设置 > Feed
  2. 点击添加新 Feed
  3. 在下一页上,点击配置单个 Feed
  4. Feed 名称字段中,输入 Feed 的名称,例如 ServiceNow 安全日志
  5. 选择 Webhook 作为来源类型
  6. 选择 ServiceNow Security 作为日志类型
  7. 点击下一步
  8. 可选:为以下输入参数指定值:
    • 拆分分隔符:用于分隔日志行的分隔符,例如 \n
  9. 点击下一步
  10. 最终确定界面中检查 Feed 配置,然后点击提交
  11. 点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
  12. 复制并存储密钥。您将无法再次查看此密钥。如有需要,您可以重新生成新的 Secret 密钥,但此操作会使之前的 Secret 密钥失效。
  13. 详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。
  14. 点击完成

设置来自内容中心的 Feed

为以下字段指定值:

  • 拆分分隔符:用于分隔日志行的分隔符,例如 \n

高级选项

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

  • 点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。

  • 复制并存储密钥。您将无法再次查看此密钥。如有需要,您可以重新生成新的 Secret 密钥,但此操作会使之前的 Secret 密钥失效。

  • 详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。

为 Webhook Feed 创建 API 密钥

  1. 前往 Google Cloud 控制台 > 凭据

    转到“凭据”页面

  2. 点击创建凭据,然后选择 API 密钥

  3. 将 API 密钥访问权限限制为 Google Security Operations API

指定端点网址

  1. 在客户端应用中,指定 webhook Feed 中提供的 HTTPS 端点网址。
  2. 通过在自定义标头中指定 API 密钥和密钥来启用身份验证,格式如下:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    建议:将 API 密钥指定为标头,而不是在网址中指定。

  3. 如果您的 Webhook 客户端不支持自定义标头,您可以使用以下格式的查询参数指定 API 密钥和密钥:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    替换以下内容:

    • ENDPOINT_URL:Feed 端点网址。
    • API_KEY:用于向 Google SecOps 进行身份验证的 API 密钥。
    • SECRET:您生成的用于验证 Feed 的密钥。

在 ServiceNow 中配置 Webhook

  1. 使用具有管理员权限的账号登录 ServiceNow Security。
  2. 依次前往配置 > 监控 > 连接
  3. 点击 添加
  4. 选择 Webhook
  5. 为以下参数指定值:
    • 名称:为 Webhook 提供一个描述性名称(例如 Google SecOps)。
    • 网址:输入包含 API_KEYSECRET 的 Google SecOps ENDPOINT_网址
  6. 点击保存,完成网络钩子配置。

UDM 映射

日志字段 UDM 映射 逻辑
created_by target.user.userid 如果 snc_user 为空,则映射到 target.user.userid
事件 metadata.product_event_type 直接从原始日志字段“event”映射。
event_created metadata.event_timestamp.seconds 使用 date 过滤条件从原始日志字段“event_created”转换为秒。
ip_address principal.ip 如果原始日志字段“ip_address”不为空,则直接映射自该字段。
snc_user target.user.userid 如果非空,则直接从原始日志字段“snc_user”映射。
用户 principal.user.userid 如果原始日志字段“user”不为空或不为“null”,则直接映射自该字段。
extensions.auth.type 如果 event 字段为“登录失败”“SNC 登录”“管理员登录”或“模拟”,则设置为“MACHINE”。
metadata.event_type 如果 event 字段为“登录失败”“SNC 登录”“管理员登录”或“模拟”,则设置为“USER_LOGIN”。如果 event 字段为“安全权限提升”,则设置为“USER_CHANGE_PERMISSIONS”。
metadata.log_type 硬编码为“SERVICENOW_SECURITY”。
metadata.product_name 硬编码为“SERVICENOW_SECURITY”。
metadata.vendor_name 硬编码为“SERVICENOW”。
principal.user.userid 如果 user 字段为空或为“null”,则设置为“UNKNOWN”。

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。