收集 ServiceNow CMDB 資料
本文說明如何使用第三方 API 設定 Google Security Operations 資訊提供,以收集 ServiceNow CMDB 資料。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- 具備管理控制台存取權的 ServiceNow 執行個體特殊存取權
- 具備
cmdb_read角色的 ServiceNow 使用者帳戶 (讀取存取權的最低要求) - ServiceNow 執行個體已啟用 REST API (預設為啟用)
設定 IP 許可清單
建立動態饋給前,請務必在 ServiceNow 防火牆或網路設定中,將 Google SecOps IP 範圍加入允許清單。
取得 Google SecOps IP 範圍
- 從 Google IP 位址範圍 JSON 檔案擷取 IP 範圍。
將 IP 範圍新增至 ServiceNow
- 以管理員身分登入 ServiceNow 執行個體。
- 依序前往「All」(全部) >「System Security」(系統安全性) >「IP Address Access Control」(IP 位址存取控管)。
- 點選「New」(新增)。
- 請提供下列設定詳細資料:
- 類型:選取「允許」。
- IP 位址:以 CIDR 標記法輸入一個 Google SecOps IP 範圍 (例如
192.0.2.0/24)。 - 名稱:輸入描述性名稱 (例如
GGoogle SecOps IP Range 1)。 - 「啟用」:勾選核取方塊即可啟用規則。
- 按一下「提交」。
- 針對每個額外的 Google SecOps IP 範圍,重複執行步驟 3 到 5。
設定 ServiceNow API 存取權
如要讓 Google SecOps 擷取 CMDB 資料,請建立具備適當權限的 ServiceNow 使用者。
建立專屬整合使用者 (建議做法)
- 登入 ServiceNow 管理控制台。
- 依序前往「All」(全部) >「User Administration」(使用者管理) >「Users」(使用者)。
- 點選「New」(新增)。
- 請提供下列設定詳細資料:
- 使用者 ID:輸入描述性使用者名稱 (例如
google_secops_integration)。 - 名字:輸入
Google。 - 姓氏:輸入
SecOps Integration。 - 電子郵件:輸入有效的電子郵件地址,以接收通知。
- 密碼:按一下「設定密碼」,然後設定高強度密碼。
- 啟用:選取核取方塊。
- 僅限存取 Web 服務:選取核取方塊 (建議僅限存取 API 時選取)。
- 使用者 ID:輸入描述性使用者名稱 (例如
- 按一下「提交」。
指派必要權限
- 建立使用者後,開啟使用者記錄。
- 前往「角色」部分。
- 按一下 [編輯]。
- 在「集合」清單中,搜尋並新增下列角色:
- cmdb_read:提供 CMDB 表格的讀取權限。
- 按一下 [儲存]。
記錄 API 憑證
建立使用者後,請記錄下列憑證:
- 使用者名稱:您建立的使用者 ID (例如
google_secops_integration) - 密碼:您為使用者設定的密碼
- API 主機名稱:ServiceNow 執行個體 FQDN (例如
myinstance.servicenow.com)- 請勿加入
https://或任何路徑。 - 請勿加入結尾斜線。
- 請勿加入
- 資料表名稱:要查詢的 CMDB 資料表 (例如
cmdb_ci、cmdb_ci_server、cmdb_ci_computer)
瞭解 ServiceNow CMDB 資料表
ServiceNow CMDB 會以階層式資料表結構呈現。最常見的資產資料擷取表格包括:
| 資料表名稱 | 說明 | 用途 |
|---|---|---|
cmdb_ci |
基礎設定項目表 (所有 CI 表的父項) | 所有設定項目 |
cmdb_ci_server |
伺服器設定項目 | 實體和虛擬伺服器 |
cmdb_ci_computer |
電腦設定項目 | 工作站、筆電、桌機 |
cmdb_ci_linux_server |
Linux 伺服器設定項目 | 特別是 Linux 伺服器 |
cmdb_ci_win_server |
Windows 伺服器設定項目 | Windows 伺服器 |
cmdb_ci_vm_instance |
虛擬機器執行個體 | 虛擬機器 |
cmdb_ci_network_adapter |
網路介面卡 | 網路介面卡 |
cmdb_ci_ip_address |
IP 位址 | IP 位址記錄 |
cmdb_ci_service |
商業服務 | 服務目錄項目 |
cmdb_ci_appl |
應用程式 | 應用程式設定項目 |
驗證 REST API 存取權
建立動態饋給前,請先確認 ServiceNow API 憑證可正常運作。
使用 REST API Explorer 進行測試 (選用)
- 以整合使用者身分登入 ServiceNow 執行個體。
- 依序前往「All」>「System Web Services」>「REST」>「REST API Explorer」。
- 從命名空間下拉式選單中選取「Table API」。
- 選取「Retrieve records from a table (GET)」(從表格中擷取記錄 (GET))。
- 在「路徑參數」中,輸入資料表名稱 (例如
cmdb_ci)。 - 按一下 [傳送]。
- 確認回應狀態為 200 OK,且系統已傳回記錄。
使用 curl 進行測試 (選用)
或者,您也可以使用 curl 測試 API:
curl "https://your-instance.service-now.com/api/now/table/cmdb_ci?sysparm_limit=10" \ --request GET \ --header "Accept: application/json" \ --user 'your-username':'your-password'- 取代:
your-instance.service-now.com:ServiceNow 執行個體主機名稱your-username:整合使用者的使用者名稱your-password:整合使用者密碼
- 取代:
成功的回應會傳回含有設定項目的 JSON 資料。
設定動態饋給
如要設定動態消息,請按照下列步驟操作:
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中,輸入動態饋給的名稱 (例如
ServiceNow CMDB - All CIs或ServiceNow CMDB - Servers)。 - 選取「第三方 API」做為「來源類型」。
- 選取「ServiceNow CMDB」做為「記錄類型」。
- 點選「下一步」。
指定下列輸入參數的值:
- 使用者名稱:輸入 ServiceNow 使用者 ID (例如
google_secops_integration)。 - 密鑰:輸入 ServiceNow 使用者密碼。 重要事項:這是機密欄位,密碼會經過加密處理,儲存後就無法查看。
- API 主機名稱:輸入 ServiceNow 執行個體的完整網域名稱。
- 示例:
myinstance.servicenow.com - 請勿加入:
- 通訊協定 (
https://) - 路徑 (
/api/now/table/) - 尾端斜線
- 通訊協定 (
- 示例:
- 區域執行個體:如果 ServiceNow 執行個體位於特定區域,請使用正確的主機名稱格式:
- 標準:
instance.service-now.com - 歐盟:
instance.service-now.eu - 其他地區:請與 ServiceNow 管理員確認
- 標準:
- 資料表名稱:輸入要查詢的 ServiceNow CMDB 資料表。
- 例如:
cmdb_ci(所有設定項目)cmdb_ci_server(所有伺服器)cmdb_ci_computer(工作站和電腦)cmdb_ci_linux_server(僅限 Linux 伺服器)cmdb_ci_win_server(僅限 Windows 伺服器) 注意:表格名稱會區分大小寫,且必須完全相符。每個動態饋給只能查詢一個資料表。如要擷取多個資料表,請為每個資料表分別建立動態饋給。
- 例如:
- 資產命名空間:資產命名空間。
- 擷取標籤:要套用至這個動態饋給事件的標籤。
- 使用者名稱:輸入 ServiceNow 使用者 ID (例如
點選「下一步」。
在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
設定完成後,動態消息就會開始從 ServiceNow 執行個體擷取 CMDB 記錄。視表格中的記錄數量而定,初始同步可能需要幾分鐘。
擷取多個 CMDB 資料表
如要從多個 CMDB 資料表擷取資料,請為每個資料表建立個別動態饋給:
- 按照上述步驟建立第一個動態饋給 (例如
cmdb_ci_server)。 - 按一下「新增動態饋給」即可建立其他動態饋給。
- 使用相同的 ServiceNow 憑證,但指定不同的資料表名稱。
設定範例:
| 動態饋給名稱 | 資料表名稱 | 目的 |
|---|---|---|
| ServiceNow CMDB - 伺服器 | cmdb_ci_server |
所有伺服器 CI |
| ServiceNow CMDB - 電腦 | cmdb_ci_computer |
工作站 CI |
| ServiceNow CMDB - 網路介面卡 | cmdb_ci_network_adapter |
網路介面 CI |
| ServiceNow CMDB - 應用程式 | cmdb_ci_appl |
應用程式 CI |
必要的 API 權限
整合使用者必須具備下列 ServiceNow 權限:
| 權限/角色 | 存取層級 | 目的 |
|---|---|---|
| cmdb_read | 讀取 | 擷取 CMDB 設定項目資料 |
其他角色 (選用):
- itil:如要建立或更新 CI,必須具備寫入權限 (Google SecOps 擷取作業則不需此權限)
- rest_api_explorer:有助於在設定期間測試 API 存取權
UDM 對應表
| ServiceNow 欄位 | UDM 對應 | 邏輯 |
|---|---|---|
name |
entity.asset.hostname |
資產的主要主機名稱 |
ip_address |
entity.asset.ip |
資產的主要 IP 位址 |
mac_address |
entity.asset.mac |
資產的 MAC 位址 |
serial_number |
entity.asset.hardware.serial_number |
硬體序號 |
asset_tag |
entity.asset.asset_id |
資產標記或 ID |
sys_class_name |
entity.asset.asset_type |
CI 類別 (伺服器、電腦等) |
os |
entity.asset.platform_software.platform |
作業系統 |
sys_created_on |
entity.asset.first_seen_time |
素材資源建立時間戳記 |
sys_updated_on |
entity.asset.last_seen_time |
上次更新時間戳記 |
location |
entity.asset.location.name |
實際位置 |
company |
entity.asset.attribute.labels.value |
擁有公司/機構 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。