收集 Workday HCM 記錄
支援的國家/地區:
Google SecOps
SIEM
本文說明如何使用 API 將 Workday 記錄擷取至 Google Security Operations。剖析器會從 JSON 格式的記錄檔中擷取 Workday HCM 使用者資料。這項服務會處理各種資料轉換作業,包括重新命名欄位、合併巢狀物件、剖析日期,以及填入使用者屬性、雇用詳細資料和組織結構的 UDM 欄位。此外,還包含處理格式錯誤的 JSON 和缺少重要欄位的錯誤處理機制。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體。
- Workday 的特殊存取權。
設定 Workday API 驗證
在 Workday 中建立整合系統使用者 (ISU)
- 以管理員權限登入 Workday。
- 在搜尋列中輸入
Create Integration System User
,然後從搜尋結果中選取所需工作。 - 輸入使用者名稱。
- 設定密碼。
- 將「Session Timeout Minutes」(工作階段逾時分鐘數) 設為
0
,避免 ISU 超時。 - 啟用「不允許 UI 工作階段」,限制 UI 登入,提升安全性。
- 前往「維護密碼規則」工作。
- 將整合系統使用者新增至「System Users exempt from password expiration」(免除密碼到期限制的系統使用者) 欄位。
在 Workday 中建立整合安全性群組
- 在搜尋列中輸入
Create Security Group
,然後從搜尋結果中選取所需工作。 - 找出「Type of Tenanted Security Group」(租戶安全群組類型) 欄位,然後選取「Integration System Security Group (Unconstrained)」(整合系統安全群組 (無限制))。
- 提供安全群組的「名稱」。
- 按一下 [確定]。
- 按一下新建立安全性群組的「編輯」。
- 將上一個步驟中的「整合系統使用者」指派給安全群組。
- 按一下 [完成]。
在 Workday 中授予安全群組網域存取權
- 在搜尋列中輸入「Maintain Permissions for Security Group」(維護安全性群組的權限),然後從結果中選取這項工作。
- 從「來源安全群組」清單中選擇您建立的安全群組,即可修改其權限。
- 按一下 [確定]。
- 依序前往「Maintain Permissions for Security Group」(維護安全性群組的權限) >「Domain Security Policy Permissions」(網域安全性政策權限)。
- 為每個網域指派必要權限,例如 GET 作業。
- 按一下 [確定]。
- 按一下「完成」儲存變更。
在 Workday 中啟用安全性政策變更
- 在搜尋列中輸入
Activate Pending Security Policy Changes
,然後從搜尋結果中選取所需工作。 - 在註解欄位中輸入稽核原因,然後按一下「確定」,開始執行「Activate Pending Security Policy Changes」(啟用待處理的安全政策變更) 工作。
- 在下一個畫面中選取「確認」,然後按一下「確定」,即可完成這項工作。
設定整合的 API 用戶端
- 在搜尋列中輸入
Register API Client for Integrations
,然後選取該字元。 - 點選「建立」。
- 提供下列設定詳細資料:
- 用戶端名稱:輸入 API 用戶端的名稱 (例如
Google SecOps Client
)。 - 系統使用者:選取您在上一步建立的「整合系統使用者」。
- 範圍:選取 HCM API 或包含員工資料和您要存取其他區域的相關範圍。
- 用戶端名稱:輸入 API 用戶端的名稱 (例如
- 選取「儲存」。
- 按一下「確定」建立 API 用戶端。
- 建立 API 用戶端後,請儲存「用戶端密鑰」。離開頁面後,系統不會再顯示這個權杖。
產生 OAuth 2.0 更新權杖
- 在 Workday 搜尋列中輸入
Manage Refresh Tokens for Integrations
,然後選取該字元。 - 按一下「產生新的重新整理權杖」。
- 在「Workday Account」(Workday 帳戶) 欄位中,搜尋並選取您建立的「Integration System User」(整合系統使用者)。
- 選取使用者,然後按一下「確定」。
- 複製並儲存顯示的更新權杖。
取得 API 端點網址
- 在 Workday 搜尋列中輸入
View API Clients
,然後選取該字元。 - 在「API Clients for Integrations」下方,找出您建立的
Google SecOps Client
。 - 複製並儲存下列詳細資料:
- 權杖端點:您將傳送要求以取得存取權杖的 URL。
- Workday REST API 端點:用於設定與 Google SecOps 整合的 URL。
產生 OAuth 存取權杖
使用 curl 或類似的 HTTP 用戶端,將 POST 要求傳送至權杖端點:
curl -X POST "https://{hostname}/ccx/oauth2/token" \ -d "grant_type=refresh_token" \ -d "client_id={your_client_id}" \ -d "client_secret={your_client_secret}" \ -d "refresh_token={your_refresh_token}"
這會傳回存取權杖 (例如
"access_token": "abcd1234"
)複製並儲存存取權杖。
設定動態饋給
在 Google SecOps 平台中,有兩種不同的進入點可設定動態饋給:
- 「SIEM 設定」>「動態消息」
- 內容中心 > 內容包
依序前往「SIEM 設定」>「動態饋給」,設定動態饋給
如要設定動態消息,請按照下列步驟操作:
- 依序前往「SIEM 設定」>「動態消息」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
Workday Logs
)。 - 選取「第三方 API」做為「來源類型」。
- 選取「Workday」Workday記錄類型。
- 點選「下一步」。
- 指定下列輸入參數的值:
- API 主機名稱:Workday REST API 端點的網址。
- 租戶:Workday API 端點的最後一個路徑元素,用於識別執行個體。
- 存取權杖:OAuth 存取權杖。
- 點選「下一步」。
- 在「Finalize」畫面中檢查動態饋給設定,然後按一下「Submit」。
從內容中心設定動態饋給
為下列欄位指定值:
- API 主機名稱:Workday REST API 端點的 FQDN。
- 租戶:Workday API 端點的最後一個路徑元素,用於識別執行個體。
- 存取權杖:OAuth 存取權杖。
進階選項
- 動態饋給名稱:系統預先填入的值,用於識別動態饋給。
- 來源類型:將記錄收集到 Google SecOps 的方法。
- 資產命名空間:與動態饋給相關聯的命名空間。
- 擷取標籤:套用至這個動態饋給所有事件的標籤。
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
@timestamp |
read_only_udm.metadata.event_timestamp.seconds |
原始記錄的 @timestamp 欄位會重新命名為 timestamp ,並剖析為時間戳記 (以秒為單位,自 Epoch 起算)。 |
businessTitle |
read_only_udm.entity.entity.user.title |
直接從原始記錄中的 businessTitle 欄位對應。 |
descriptor |
read_only_udm.entity.entity.user.user_display_name |
直接從原始記錄中的 descriptor 欄位對應。 |
Employee_ID |
read_only_udm.entity.entity.user.employee_id |
直接從原始記錄中的 Employee_ID 欄位對應。 |
Employee_ID |
read_only_udm.entity.metadata.product_entity_id |
如果沒有 id ,則直接從原始記錄中的 Employee_ID 欄位對應。 |
gopher-supervisor.descriptor |
read_only_udm.entity.entity.user.managers.user_display_name |
直接從原始記錄中的 gopher-supervisor.descriptor 欄位對應,重新命名為 empmanager.user_display_name ,然後合併至 managers 。 |
gopher-supervisor.id |
read_only_udm.entity.entity.user.managers.product_object_id |
直接從原始記錄中的 gopher-supervisor.id 欄位對應,重新命名為 empmanager.product_object_id ,然後合併至 managers 。 |
gopher-supervisor.primaryWorkEmail |
read_only_udm.entity.entity.user.managers.email_addresses |
直接從原始記錄中的 gopher-supervisor.primaryWorkEmail 欄位對應,然後合併到 managers 。 |
gopher-time-off.date |
read_only_udm.entity.entity.user.time_off.interval.start_time |
從原始記錄的 gopher-time-off 陣列中,剖析為 gopher-time-off.date 欄位中的日期。 |
gopher-time-off.descriptor |
read_only_udm.entity.entity.user.time_off.description |
直接從原始記錄的 gopher-time-off 陣列中的 gopher-time-off.descriptor 欄位對應。 |
Hire_Date |
read_only_udm.entity.entity.user.hire_date |
從原始記錄的 Hire_Date 欄位剖析為日期。 |
id |
read_only_udm.entity.metadata.product_entity_id |
如果原始記錄中存在 id 欄位,系統會直接對應。 |
Job_Profile |
read_only_udm.entity.entity.user.title |
如果沒有 businessTitle ,則直接從原始記錄中的 Job_Profile 欄位對應。 |
Legal_Name_First_Name |
read_only_udm.entity.entity.user.first_name |
直接從原始記錄中的 Legal_Name_First_Name 欄位對應。 |
Legal_Name_Last_Name |
read_only_udm.entity.entity.user.last_name |
直接從原始記錄中的 Legal_Name_Last_Name 欄位對應。 |
location.descriptor |
read_only_udm.entity.entity.location.city |
直接從原始記錄中的 location.descriptor 欄位對應,重新命名為 _location.city ,然後再重新命名為 entity.entity.location.city 。 |
primarySupervisoryOrganization.descriptor |
read_only_udm.entity.entity.user.department |
直接從原始記錄中的 primarySupervisoryOrganization.descriptor 欄位對應。 |
primaryWorkEmail |
read_only_udm.entity.entity.user.email_addresses |
直接從原始記錄中的 primaryWorkEmail 欄位對應。 |
primaryWorkPhone |
read_only_udm.entity.entity.user.phone_numbers |
直接從原始記錄中的 primaryWorkPhone 欄位對應。 |
Termination_Date |
read_only_udm.entity.entity.user.termination_date |
從原始記錄的 Termination_Date 欄位剖析為日期。 |
Work_Email |
read_only_udm.entity.entity.user.email_addresses |
如果沒有 primaryWorkEmail ,則直接從原始記錄中的 Work_Email 欄位對應。 |
collection_time |
read_only_udm.metadata.event_timestamp.collected_timestamp |
記錄的 collection_time 會對應至 collected_timestamp 。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。