收集 Cisco Identity Intelligence 記錄
本文說明如何設定 Cisco Identity Intelligence,透過 Webhook 將記錄推送至 Google Security Operations。
Cisco Identity Intelligence (前身為 Oort Security) 是一個身分威脅偵測與回應平台,可持續監控身分提供者之間的使用者行為、驗證模式、裝置使用情況和存取權。這項服務會分析使用者活動、失敗的安全檢查、信任分數和高風險行為,偵測身分識別威脅、錯誤設定和違規事項。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- Cisco Identity Intelligence 租戶的特殊存取權
- 管理 Cisco Identity Intelligence 中整合項目的管理權限
- 存取 Google Cloud 控制台 (用於建立 API 金鑰)
在 Google SecOps 中建立 Webhook 動態饋給
建立動態饋給
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
Cisco Identity Intelligence Events)。 - 選取「Webhook」做為「來源類型」。
- 選取「Cisco Identity Intelligence」做為「記錄類型」。
- 點選「下一步」。
- 指定下列輸入參數的值:
- 分割分隔符號 (選用):輸入
\n即可分割多行事件。 - 資產命名空間:資產命名空間
- 擷取標籤:要套用至這個動態饋給事件的標籤
- 分割分隔符號 (選用):輸入
- 點選「下一步」。
- 在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
產生並儲存密鑰
建立動態饋給後,您必須產生驗證用的密鑰:
- 在動態饋給詳細資料頁面中,按一下「產生密鑰」。
- 對話方塊會顯示密鑰。
- 複製並妥善儲存密鑰。
取得動態消息端點網址
- 前往動態消息的「詳細資料」分頁。
- 在「端點資訊」部分,複製「動態消息端點網址」。
網址格式為:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate或
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate請儲存這個網址,以供後續步驟使用。
按一下 [完成]。
建立 Google Cloud API 金鑰
Chronicle 需要 API 金鑰才能進行驗證。在 Google Cloud 控制台中建立受限制的 API 金鑰。
建立 API 金鑰
- 前往 Google Cloud 控制台的「憑證」頁面。
- 選取專案 (與 Chronicle 執行個體相關聯的專案)。
- 依序按一下「建立憑證」>「API 金鑰」。
- 系統會建立 API 金鑰,並顯示在對話方塊中。
- 按一下「編輯 API 金鑰」即可限制金鑰。
限制 API 金鑰
- 在「API 金鑰」設定頁面中:
- 名稱:輸入描述性名稱 (例如
Chronicle Webhook API Key)
- 名稱:輸入描述性名稱 (例如
- 在「API 限制」下方:
- 選取「Restrict key」(限制金鑰)。
- 在「選取 API」下拉式選單中,搜尋並選取「Google SecOps API」 (或「Chronicle API」)。
- 按一下 [儲存]。
- 從頁面頂端的「API key」(API 金鑰) 欄位複製 API 金鑰值。
- 安全地儲存 API 金鑰。
設定 Cisco Identity Intelligence Webhook
建構 Webhook 網址
合併 Chronicle 端點網址和 API 金鑰:
<ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>範例:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...
更改下列內容:
<ENDPOINT_URL>:先前複製的 Chronicle 動態消息端點網址<API_KEY>:先前建立的 Google Cloud API 金鑰<SECRET_KEY>:先前產生的 Chronicle Webhook 密鑰
在 Cisco Identity Intelligence 中建立 Webhook 通知目標
- 登入 Cisco Identity Intelligence。
- 前往「整合」。
- 按一下「新增整合」。
- 向下捲動至「Webhook」部分。
- 按一下「新增 Webhook 目標」。
- 請提供下列設定詳細資料:
- 名稱:輸入描述性名稱 (例如
Chronicle SIEM Integration)。 - Webhook 網址:貼上包含 API 金鑰和密鑰的完整端點網址 (如上所述)。
- 授權類型:選取「API 金鑰」。
- API 金鑰名稱:輸入金鑰名稱 (例如
x-goog-chronicle-auth)。 - API 金鑰值:輸入 Google Cloud API 金鑰。
- 名稱:輸入描述性名稱 (例如
- 展開「Invocation HTTP Parameters」(呼叫 HTTP 參數) 專區。
- 新增下列類型為「Header」的參數:
- 鍵:
Content-Type,值:application/json - 鍵:
Accept,值:application/json
- 鍵:
- 在「Use this target for」(將這個目標用於) 部分中,選取「Failed Check」(檢查失敗),即可在身分檢查偵測到失敗結果時收到通知。
按一下 [儲存]。
測試 Webhook 連線
- 在「整合」頁面中,找到您建立的 Webhook 通知目標。
- 按一下資料列右側的三點選單。
- 選取「測試連線」。
- 確認測試訊息是否已順利送達。
啟用身分驗證的 Webhook
建立 Webhook 通知目標後,您必須為要監控的特定身分驗證啟用通知。
- 前往 Cisco Identity Intelligence 中所需的「檢查」詳細資料頁面。
- 展開頁面右上角的下拉式選單。
- 勾選您建立的 Webhook 通知目標核取方塊。
針對要傳送給 Google SecOps 的每項檢查重複執行上述步驟。
詳情請參閱「Cisco Identity Intelligence webhook 說明文件」。
驗證方法參考資料
Chronicle 網頁掛鉤動態消息支援多種驗證方法。選擇供應商支援的方法。
方法 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" }
驗證標頭名稱
Chronicle 接受下列驗證標頭名稱:
API 金鑰:
x-goog-chronicle-auth(建議)X-Goog-Chronicle-Auth(不區分大小寫)
密鑰:
x-chronicle-auth(建議)X-Chronicle-Auth(不區分大小寫)
Webhook 限制和最佳做法
要求限制
| 限制 | 值 |
|---|---|
| 要求大小上限 | 4 MB |
| 每秒查詢次數 (QPS) 上限 | 15,000 |
| 要求逾時 | 30 秒 |
| 重試行為 | 自動執行指數輪詢 |
UDM 對應表
| 記錄欄位 | UDM 對應 | 邏輯 |
|---|---|---|
| 帳戶 | account_label.value | 直接複製值 |
| 帳戶 | account_label.key | 設為「帳戶」 |
| account_label | security_result.detection_fields | 已合併至 detection_fields |
| additional_detaildescription.key | additional_detaildescription.key | 設為「詳細說明」 |
| detaildescription | additional_detaildescription.value.list_value.values | 從詳細說明合併 |
| additional_detaildescription | event.idm.read_only_udm.additional.fields | 已併入 additional.fields |
| additional_recommendedaction.key | additional_recommendedaction.key | 設為「應變措施建議」 |
| recommendedAction | additional_recommendedaction.value.list_value.values | 從 recommendedAction 合併 |
| additional_recommendedaction | event.idm.read_only_udm.additional.fields | 已併入 additional.fields |
| data1 | usersFailing_label | 直接複製值 |
| data.login | login_label | 直接複製值 |
| 詳細資料類型 | security_result.summary | 直接複製值 |
| detail.id | security_result.rule_id | 直接複製值 |
| detail.title | security_result.rule_name | 直接複製值 |
| detail.severity | security_result.severity | 如果 detail.severity 的值為 [CRITICAL、ERROR、HIGH、INFORMATIONAL、LOW、MEDIUM],則為該值;如果為 moderate,則為 MEDIUM |
| detaildescription | value_array.string_value | 直接複製值 |
| detailsdata.key | add_label.value、add_label.key | 如果不是 failedSigninDetails 或 ips,則值來自 detailsdata.value,索引鍵為「loginDetails %{index} details %{detailindex} %{detailsdata.key}」 |
| detailsdata.value | add_label.value、add_label.key | |
| detailsdata.key | security_result.detection_fields | 如果符合條件,則合併 add_label |
| detailsdata.value | security_result.detection_fields | |
| field_.value | security_result.detection_fields | 針對 json_array 中的各種巢狀欄位 (msg、ipInfo、asn、coordinates、first_event、second_event、locations) 合併,並使用「%{index} %{detailindex} %{index1} %{key}」等鍵,但不包括 ipAddress、ip 等。 |
| field_.key | security_result.detection_fields | |
| id | metadata.product_log_id | 直接複製值 |
| login_label | principal.user.email_addresses | 如果符合電子郵件規則運算式,則會合併 |
| msg.ipAddress | principal.ip | 如果不是空白,則會合併 |
| msg.first_event.ip_address | principal.ip | 如果不是空白,則會合併 |
| msg.second_event.ip_address | principal.ip | 如果不是空白,則會合併 |
| msg_travels_first_event_ip_address | principal.ip | 如果不是空白,則會合併 |
| msg_travels_second_event_ip_address | principal.ip | |
| recommendedAction | value_array.string_value | 直接複製值 |
| security_result | event.idm.read_only_udm.security_result | 已合併至 security_result |
| 來源 | source_label.value | 直接複製值 |
| 來源 | source_label.key | 設為「source」 |
| source_label | event.idm.read_only_udm.src.labels | 已併入 src.labels |
| 時間 | @timestamp | 使用日期篩選器剖析,格式為 ISO8601、RFC 3339、yyyy-MM-ddTHH:mm:ss.SSSSSSZ |
| usersFailing_label | principal.user.email_addresses | 如果符合電子郵件規則運算式,則會合併 |
| 版本 | metadata.product_version | 直接複製值 |
| has_principal | event.idm.read_only_udm.metadata.event_type | 如果 has_principal 為 true,則設為「STATUS_UPDATE」;如果 has_user 為 true,則設為「USER_UNCATEGORIZED」;否則設為「GENERIC_EVENT」 |
| has_user | event.idm.read_only_udm.metadata.event_type | |
| metadata.product_name | metadata.product_name | 設為「OORT」 |
| metadata.vendor_name | metadata.vendor_name | 設為「OORT」 |
detail.published |
event.idm.read_only_udm.metadata.collected_timestamp |
從變更記錄對應 |
detail.login |
event.idm.read_only_udm.principal.user.userid |
從變更記錄對應 |
detail.userTrustLevel |
event.idm.read_only_udm.principal.user.attribute.labels |
從變更記錄對應 |
detail.login |
event.idm.read_only_udm.principal.user.user_display_name |
從變更記錄對應 |
detail.checkTopics |
event.idm.read_only_udm.security_result.category_details |
從變更記錄對應 |
region |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
detail.checkId |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
detail.checkScope |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
detail.frameworks |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
detail.explainabilityEventIds |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
data.value |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
變更記錄
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。