收集 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 控制台 (用於建立 API 金鑰)
- IBM OpenPages 9.1.2 以上版本,且具備管理員存取權
- 如果是地端部署和 Cloud Pak for Data 部署作業,請安裝並設定 RabbitMQ,並設定 OpenPages 與 RabbitMQ 的連線
- 如果是 SaaS 部署作業,Google SecOps Webhook 端點網域必須在核准的許可清單中
在 Google SecOps 中建立 Webhook 動態饋給
建立動態饋給
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
IBM OpenPages Events)。 - 選取「Webhook」做為「來源類型」。
- 選取「IBM OpenPages」做為「記錄類型」。
- 點選「下一步」。
- 指定下列輸入參數的值:
- 分割分隔符號 (選用):輸入
\n即可分割多行事件 - 資產命名空間:資產命名空間
- 擷取標籤:要套用至這個動態饋給事件的標籤
- 分割分隔符號 (選用):輸入
- 點選「下一步」。
- 在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
產生並儲存密鑰
建立動態饋給後,您必須產生驗證用的密鑰:
- 在動態饋給詳細資料頁面中,按一下「產生密鑰」。
- 對話方塊會顯示密鑰。
- 複製並妥善儲存密鑰。
取得動態消息端點網址
- 前往動態消息的「詳細資料」分頁。
- 在「端點資訊」部分,複製「動態消息端點網址」。
網址格式為:
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 控制台中建立受限制的 API 金鑰。
建立 API 金鑰
- 前往 Google Cloud 控制台的「憑證」頁面。
- 選取專案 (與 Google SecOps 執行個體相關聯的專案)。
- 依序按一下「建立憑證」>「API 金鑰」。
- 系統會建立 API 金鑰,並顯示在對話方塊中。
- 按一下「編輯 API 金鑰」即可限制金鑰。
限制 API 金鑰
- 在「API 金鑰」設定頁面中:
- 名稱:輸入描述性名稱 (例如
Google SecOps Webhook API Key)
- 名稱:輸入描述性名稱 (例如
- 在「API 限制」下方:
- 選取「Restrict key」(限制金鑰)。
- 在「選取 API」下拉式選單中,搜尋並選取「Google SecOps API」 (或「Chronicle API」)。
- 按一下 [儲存]。
- 從頁面頂端的「API key」(API 金鑰) 欄位複製 API 金鑰值。
- 安全地儲存 API 金鑰。
設定 IBM OpenPages Webhook
建構 Webhook 網址
合併 Chronicle 端點網址和 API 金鑰:
<ENDPOINT_URL>?key=<API_KEY>範例:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
在 IBM OpenPages 中建立 Webhook
- 以管理員身分登入 IBM OpenPages 管理控制台。
- 依序前往「Administration」>「Integrations」>「Webhooks」。
- 按一下「建立 Webhook」。
請提供下列設定詳細資料:
端點網址:貼上包含上述 API 金鑰的完整端點網址 (例如
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...)。驗證方式:選取「Bearer Token」。
Bearer Token:貼上在 Google SecOps 動態饋給建立步驟中產生的密鑰。
在「Event Subscriptions」(事件訂閱) 部分,選取要監控的物件類型和事件:
- 物件類型:選取要監控的 GRC 物件類型 (例如
SOXRisk、SOXIssue、SOXBusEntity、SOXControl、SOXProcess、SOXTask)。 - 事件類型:選取要傳送至 Google SecOps 的事件:
- 「create」:建立訂閱類型的物件時發布
- 「update」:訂閱類型的物件更新時發布 (包括變更的欄位)
- 「delete」:刪除訂閱類型的物件時發布
- associate:物件與父項物件建立關聯時發布
- disassociate:從父項物件移除物件時發布
- 物件類型:選取要監控的 GRC 物件類型 (例如
測試並啟用 Webhook
軟體即服務 (SaaS) 部署:
- 請先將「Enabled」(啟用)切換為「On」(開啟),啟用 Webhook。
- 等待約 1 到 2 分鐘,讓輸出連線開啟。
- 按一下「測試連線」,確認端點可連線。
- 確認測試傳回成功的回應。
適用於地端部署:
- 按一下「測試連線」,確認端點可連線。
- 確認測試傳回成功的回應。
- 將「Enabled」(啟用狀態)切換為「On」(開啟),即可啟用 Webhook。
- 請等待約 5 分鐘,讓事件代理程式擷取設定。
Webhook 酬載格式
IBM OpenPages 會透過 HTTP POST,以 JSON 酬載形式傳送 Webhook 事件。以下是風險物件更新的 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 系統限制
| 限制 | 值 |
|---|---|
| 已啟用 Webhook 數量上限 | 50 (預設值),透過 /Platform/Messaging/Webhooks Limit 登錄檔設定最多可設為 100 |
| 不重複的端點網址 | 每個 Webhook 都必須使用專屬端點網址 |
| 佇列中的事件 TTL | 1 天 (系統會移除這段時間內未傳送的事件) |
| 經紀人延遲取貨 | 啟用 Webhook 後 5 分鐘 |
驗證方法參考資料
Google SecOps 網頁掛鉤動態消息支援多種驗證方法。選擇供應商支援的方法。
方法 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 金鑰和密鑰
- 更安全 (標頭不會記錄在網路伺服器存取記錄中)
- 如果供應商支援,則為首選方法
方法 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" }
缺點:
- 網址中顯示憑證
- 可能會記錄在網路伺服器存取記錄中
- 安全性不如標頭
方法 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 接受下列驗證標頭名稱:
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 專業人員尋求答案。