收集 ServiceNow Security 日志
概览
此解析器从 ServiceNow JSON 日志中提取安全事件数据,并将相关字段映射到 UDM。它会处理各种事件类型,例如登录和权限更改,填充主账号/目标用户信息、IP 地址和元数据(例如供应商和产品详细信息)。
准备工作
确保您满足以下前提条件:
- Google SecOps 实例。
- 对 ServiceNow Security 的特权访问权限。
设置 Feed
您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:
- SIEM 设置 > Feed
- 内容中心 > 内容包
通过“SIEM 设置”>“Feed”设置 Feed
如需配置 Feed,请按以下步骤操作:
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称,例如 ServiceNow 安全日志。
- 选择 Webhook 作为来源类型。
- 选择 ServiceNow Security 作为日志类型。
- 点击下一步。
- 可选:为以下输入参数指定值:
- 拆分分隔符:用于分隔日志行的分隔符,例如
\n
。
- 拆分分隔符:用于分隔日志行的分隔符,例如
- 点击下一步。
- 在最终确定界面中检查 Feed 配置,然后点击提交。
- 点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
- 复制并存储密钥。您将无法再次查看此密钥。如有需要,您可以重新生成新的 Secret 密钥,但此操作会使之前的 Secret 密钥失效。
- 在详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。
- 点击完成。
设置来自内容中心的 Feed
为以下字段指定值:
- 拆分分隔符:用于分隔日志行的分隔符,例如
\n
。
高级选项
- Feed 名称:用于标识 Feed 的预填充值。
- 来源类型:用于将日志收集到 Google SecOps 中的方法。
- 资源命名空间:与 Feed 关联的命名空间。
提取标签:应用于相应 Feed 中所有事件的标签。
点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
复制并存储密钥。您将无法再次查看此密钥。如有需要,您可以重新生成新的 Secret 密钥,但此操作会使之前的 Secret 密钥失效。
在详情标签页中,从端点信息字段复制 Feed 端点网址。您需要在客户端应用中指定此端点网址。
为 Webhook Feed 创建 API 密钥
前往 Google Cloud 控制台 > 凭据。
点击创建凭据,然后选择 API 密钥。
将 API 密钥访问权限限制为 Google Security Operations API。
指定端点网址
- 在客户端应用中,指定 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 的密钥。
在 ServiceNow 中配置 Webhook
- 使用具有管理员权限的账号登录 ServiceNow Security。
- 依次前往配置 > 监控 > 连接。
- 点击 添加 。
- 选择 Webhook。
- 为以下参数指定值:
- 名称:为 Webhook 提供一个描述性名称(例如 Google SecOps)。
- 网址:输入包含 API_KEY 和 SECRET 的 Google SecOps ENDPOINT_网址。
- 点击保存,完成网络钩子配置。
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 专业人士那里获得解答。