收集 IBM OpenPages 日志
本文档介绍了如何配置 IBM OpenPages 以使用 Webhook 将日志推送到 Google Security Operations。
IBM OpenPages 是一个由 AI 驱动的治理、风险和合规性 (GRC) 平台,可提供集中式解决方案来管理风险、监管合规、内部审计、IT 治理和政策管理。OpenPages 支持 Webhook(版本 9.1.2 及更高版本),可在创建、更新、删除、关联或取消关联 GRC 对象时发送实时事件通知。
准备工作
确保您满足以下前提条件:
- Google SecOps 实例
- IBM OpenPages 支持使用 webhook 或 HTTP POST 传送日志
- 对 Google Cloud Console 的访问权限(用于创建 API 密钥)
- IBM OpenPages 9.1.2 版或更高版本,且具有管理员访问权限
- 对于本地部署和 Cloud Pak for Data 部署,RabbitMQ 已安装并配置,并且已设置 OpenPages 与 RabbitMQ 的连接
- 对于 SaaS 部署,Google SecOps Webhook 端点网域必须位于已获批准的许可名单中
在 Google SecOps 中创建 Webhook Feed
创建 Feed
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
IBM OpenPages Events)。 - 选择 Webhook 作为来源类型。
- 选择 IBM OpenPages 作为日志类型。
- 点击下一步。
- 为以下输入参数指定值:
- 拆分定界符(可选):输入
\n以拆分多行事件 - 资产命名空间:资产命名空间
- 注入标签:要应用于此 Feed 中事件的标签
- 拆分定界符(可选):输入
- 点击下一步。
- 在最终确定界面中查看新的 Feed 配置,然后点击提交。
生成并保存密钥
创建 Feed 后,您必须生成用于身份验证的密钥:
- 在 Feed 详情页面上,点击生成密钥。
- 系统会显示一个对话框,其中包含密钥。
- 复制并妥善保存此密钥。
获取 Feed 端点网址
- 前往相应 Feed 的详细信息标签页。
- 在端点信息部分,复制 Feed 端点网址。
网址格式为:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate或
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate保存此网址以供后续步骤使用。
点击完成。
创建 Google Cloud API 密钥
Google SecOps 需要使用 API 密钥进行身份验证。在 Google Cloud Console 中创建受限 API 密钥。
创建 API 密钥
- 前往 Google Cloud 控制台的“凭据”页面。
- 选择您的项目(与您的 Google SecOps 实例关联的项目)。
- 依次点击创建凭据> API 密钥。
- 系统会创建一个 API 密钥,并在对话框中显示该密钥。
- 点击修改 API 密钥以限制密钥。
限制 API 密钥
- 在 API 密钥设置页面中:
- 名称:输入一个描述性名称(例如
Google SecOps Webhook API Key)
- 名称:输入一个描述性名称(例如
- 在 API 限制下:
- 选择限制密钥。
- 在选择 API 下拉菜单中,搜索并选择 Google SecOps API(或 Chronicle API)。
- 点击保存。
- 从页面顶部的 API 密钥字段复制 API 密钥值。
- 安全地保存 API 密钥。
配置 IBM OpenPages webhook
构建网络钩子网址
将 Chronicle 端点网址和 API 密钥组合在一起:
<ENDPOINT_URL>?key=<API_KEY>示例:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
在 IBM OpenPages 中创建 webhook
- 以管理员身份登录 IBM OpenPages 管理控制台。
- 依次前往管理 > 集成 > Webhook。
- 点击创建 Webhook。
提供以下配置详细信息:
端点网址:粘贴包含 API 密钥的完整端点网址(例如
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...)。身份验证方法:选择不记名令牌。
不记名令牌:粘贴在 Google SecOps Feed 创建步骤中生成的密钥。
在事件订阅部分,选择要监控的对象类型和事件:
- 对象类型:选择要监控的 GRC 对象类型(例如
SOXRisk、SOXIssue、SOXBusEntity、SOXControl、SOXProcess、SOXTask)。 - 事件类型:选择要发送到 Google SecOps 的事件:
- create - 在创建订阅类型的对象时发布
- update - 在订阅类型的对象更新时发布(包括哪些字段发生了变化)
- delete - 在订阅类型的对象被删除时发布
- associate - 当对象与父对象关联时发布
- disassociate - 当对象从父对象中移除时发布
- 对象类型:选择要监控的 GRC 对象类型(例如
测试并启用网络钩子
对于 SaaS 部署:
- 先将启用开关切换为开启,以启用网络钩子。
- 等待出站连接打开,大约需要 1-2 分钟。
- 点击测试连接,验证端点是否可访问。
- 验证测试是否返回成功响应。
对于本地部署:
- 点击测试连接,验证端点是否可访问。
- 验证测试是否返回成功响应。
- 将启用开关切换为开启,以启用 Webhook。
- 等待大约 5 分钟,让事件代理选取配置。
网络钩子载荷格式
IBM OpenPages 通过 HTTP POST 将 webhook 事件作为 JSON 载荷发送。以下是风险对象更新的 Webhook 载荷示例:
{ "action": "update", "type": "GRC_OBJECT", "objectType": "SOXRisk", "message": { "event": "update", "publishedDate": "2025-09-25 02:14:26.797Z", "details": { "object_id": "9032", "object_name": "RB-01-Risk00190", "object_path": "/_op_sox/Project/Default/ICDocumentation/Risks/Global Financial Services/North America/Retail Banking/RB-01-Risk00190.txt", "updated_fields": [ "OPSS-Risk-Qual:Inherent Likelihood", "OPSS-Risk-Qual:Inherent Risk Rating", "OPSS-Risk-Quant:Inherent Frequency", "OPSS-Risk-Quant:Inherent Risk Exposure" ], "last_modification": "2025-08-30 08:58:48.000Z" }, "actor": { "iam_id": "user1@ibm.com", "user_id": "2087", "user_name": "user1" } }, "version": "9.1.2" }
网络钩子系统限制
| 限制条件 | 值 |
|---|---|
| 已启用的 webhook 数量上限 | 50(默认值),可通过 /Platform/Messaging/Webhooks Limit 注册表设置配置为最多 100 |
| 唯一端点网址 | 每个 Webhook 都必须使用唯一的端点网址 |
| 队列中的事件 TTL | 1 天(未在此期限内调度的事件会被移除) |
| 经纪人取件延迟 | 启用网络钩子 5 分钟后 |
身份验证方法参考
Google SecOps Webhook Feed 支持多种身份验证方法。选择供应商支持的方法。
方法 1:自定义标头(推荐)
如果您的供应商支持自定义 HTTP 标头,请使用此方法以提高安全性。
请求格式:
POST <ENDPOINT_URL> HTTP/1.1 Content-Type: application/json x-goog-chronicle-auth: <API_KEY> x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
优点:
- API 密钥和密文在网址中不可见
- 更安全(标头不会记录在 Web 服务器访问日志中)
- 供应商支持时的首选方法
方法 2:查询参数
如果您的供应商不支持自定义标头,请将凭据附加到网址。
网址格式:
<ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>示例:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...请求格式:
POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1 Content-Type: application/json { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
缺点:
- 网址中显示的凭据
- 可能会记录在 Web 服务器访问日志中
- 安全性不如标头
方法 3:混合(网址 + 标头)
某些配置在网址中使用 API 密钥,在标头中使用密钥。
请求格式:
POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1 Content-Type: application/json x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
身份验证标头名称
Google SecOps 接受以下用于身份验证的 HTTP 标头名称:
对于 API 密钥:
x-goog-chronicle-auth(推荐)X-Goog-Chronicle-Auth(不区分大小写)
对于密钥:
x-chronicle-auth(推荐)X-Chronicle-Auth(不区分大小写)
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
| column5 | metadata.description | 事件的说明 |
| has_principal_user | metadata.event_type | 事件类型(例如 USER_LOGIN、NETWORK_CONNECTION) |
| 第 1 列 | metadata.product_event_type | 特定于产品的事件类型 |
| metadata.product_name | metadata.product_name | 产品名称 |
| metadata.vendor_name | metadata.vendor_name | 供应商/公司名称 |
| column6 | principal.user.userid | 主账号的用户 ID |
| is_successful | security_result.action | 执行的操作 |
| is_successful | security_result.action_details | 操作的详细信息 |
| column4 | security_result.detection_fields | 其他检测字段 |
| column5 | security_result.detection_fields | |
| 计数器 | security_result.detection_fields | |
| column4 | security_result.description | 安全结果的说明 |
| 第 2 列 | security_result.summary | 安全性结果摘要 |
| column4 | target.user.attribute.roles | 与目标用户相关联的角色 |
| column4 | target.user.userid | 目标的相应用户 ID |
target_user |
target.user.userid |
从变更日志映射 |
IBM_OPENPAGES |
metadata.vendor_name |
从变更日志映射 |
IBM_OPENPAGES |
metadata.product_name |
从变更日志映射 |
OpenPages |
metadata.product_name |
从变更日志映射 |
更新日志
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。