收集 Workday HCM 記錄

支援的國家/地區:

本文說明如何使用第三方 API 設定資訊提供,將 Workday HCM 記錄擷取至 Google Security Operations。

這個剖析器會從 JSON 格式的記錄檔中擷取 Workday HCM 使用者資料。可處理各種資料轉換,包括重新命名欄位、合併巢狀物件、剖析日期,以及填入使用者屬性、雇用詳細資料和組織結構的 UDM 欄位。

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體。
  • 具備 Workday 的特殊權限,且擁有安全管理員或同等權限。

設定 Workday API 驗證

建立整合系統使用者 (ISU)

  1. 登入 Workday,並具備管理權限。
  2. 在搜尋列中輸入「Create Integration System User」,然後選取這項工作。
  3. 輸入「使用者名稱」 (例如 ISU_SecOps_HCM)。
  4. 設定「密碼」
  5. 將「工作階段逾時分鐘數」設為 0,避免 ISU 超時。
  6. 啟用「Do Not Allow UI Sessions」(不允許 UI 工作階段),限制 UI 登入,提升安全性。
  7. 前往「維護密碼規則」工作。
  8. 將整合系統使用者新增至「System Users exempt from password expiration」(免除密碼到期限制的系統使用者) 欄位。

建立整合安全性群組

  1. 在搜尋列中輸入「Create Security Group」,然後選取這項工作。
  2. 找到「Type of Tenanted Security Group」(租戶安全群組類型) 欄位,然後選取「Integration System Security Group (Unconstrained)」(整合系統安全群組 (無限制))
  3. 提供安全性群組的名稱 (例如 ISG_SecOps_HCM)。
  4. 按一下 [確定]
  5. 按一下新建立安全性群組的「編輯」
  6. 將上一步的整合系統使用者指派給安全群組。
  7. 按一下 [完成]

授予安全性群組網域存取權

Google SecOps 資訊動態會從四個 Workday REST API 端點擷取資料。每個端點都需要授予整合安全性群組特定的網域安全政策權限。

  1. 在搜尋列中輸入「Maintain Permissions for Security Group」,然後選取這項工作。
  2. 從「來源安全群組」清單中,選擇您建立的安全群組 (例如 ISG_SecOps_HCM)。
  3. 按一下 [確定]
  4. 前往「網域安全政策權限」
  5. 為下列每個網域新增 GET 存取權:

    API 端點 必要網域安全性政策
    /workers - 員工名單、個人資料和目前員工配置 Worker Data: Public Worker ReportsWorker Data: Current Staffing InformationPerson Data: Work Contact Information
    /workers/{id}/timeOffEntries - 休假餘額 Worker Data: Time Off (Time Off Balances)Worker Data: Time Off (Time Off Balances Manager View)
    /workers/{id}/history - 工作人員配置記錄 Worker Data: Current Staffing Information
    /supervisoryOrganizations - 組織結構 Worker Data: Organization Information
  6. 按一下 [確定]

  7. 按一下「完成」儲存變更。

啟用安全性政策變更

  1. 在搜尋列中輸入「Activate Pending Security Policy Changes」(啟用待處理的安全性政策變更),然後選取這項工作。
  2. 在註解欄位中輸入變更原因 (例如 Granting API access for Google SecOps HCM integration)。
  3. 按一下 [確定]
  4. 選取「確認」,然後按一下「確定」

註冊 API 用戶端以進行整合

  1. 在搜尋列中輸入「Register API Client for Integrations」,然後選取該項目。
  2. 點選「建立」
  3. 請提供下列設定詳細資料:

    • 用戶端名稱:輸入名稱 (例如 Google SecOps HCM Client)。
    • 系統使用者:選取您建立的整合系統使用者 (例如 ISU_SecOps_HCM)。
    • 範圍:選取下列範圍:

      範圍 適用於
      人事 /workers/workers/{id}/history 端點
      聯絡資訊 /workers傳回的公司電子郵件地址和電話號碼欄位 (用於 UDM 關聯)
      休假和請假 /workers/{id}/timeOffEntries 個端點
      機構和角色 /supervisoryOrganizations 個端點
      無法設定租戶 任何 OAuth 2.0 API 用戶端 (系統層級整合和權杖輪替)
  4. 按一下 [儲存]

  5. 按一下 [確定]

  6. 立即複製並儲存「用戶端 ID」和「用戶端密鑰」

產生 OAuth 2.0 更新權杖

  1. 在搜尋列中輸入「Manage Refresh Tokens for Integrations」,然後選取該選項。
  2. 按一下「產生新的重新整理權杖」
  3. 在「Workday Account」(Workday 帳戶) 欄位中,搜尋並選取整合系統使用者 (例如 ISU_SecOps_HCM)。
  4. 選取您建立的 API 用戶端,然後按一下「確定」
  5. 複製並儲存「Refresh Token」

取得 API 端點網址

  1. 在搜尋列中輸入「View API Clients」,然後選取該項目。
  2. 在「整合的 API 用戶端」下方,找出您建立的用戶端 (例如 Google SecOps HCM Client)。
  3. 複製並儲存下列詳細資料:

    • 權杖端點:取得存取權杖的網址 (例如 https://wd2-impl-services1.workday.com/ccx/oauth2/YOUR_TENANT/token)。
    • Workday REST API 端點:API 呼叫的基準網址 (例如 https://wd2-impl-services1.workday.com/ccx/api/v1/YOUR_TENANT)。

產生 OAuth 存取權杖

使用 curl 或類似的 HTTP 用戶端,將 POST 要求傳送至權杖端點:

curl -X POST "https://HOSTNAME/ccx/oauth2/TENANT/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")。請複製並儲存存取權杖。

驗證 API 存取權

設定動態饋給前,請先確認 ISU 具有主要端點的必要權限。將變數替換為實際值:

TOKEN="your-access-token"
HOST="your-workday-host"
TENANT="your-tenant"

# Test 1: Workers (should return worker list)
curl -s -o /dev/null -w "%{http_code}" \
    -H "Authorization: Bearer $TOKEN" \
    "https://$HOST/ccx/api/v1/$TENANT/workers?limit=1"

# Test 2: Time off entries (replace WORKER_ID with an ID from Test 1)
curl -s -o /dev/null -w "%{http_code}" \
    -H "Authorization: Bearer $TOKEN" \
    "https://$HOST/ccx/api/v1/$TENANT/workers/WORKER_ID/timeOffEntries"

# Test 3: Worker history (replace WORKER_ID with an ID from Test 1)
curl -s -o /dev/null -w "%{http_code}" \
    -H "Authorization: Bearer $TOKEN" \
    "https://$HOST/ccx/api/v1/$TENANT/workers/WORKER_ID/history"

# Test 4: Supervisory organizations
curl -s -o /dev/null -w "%{http_code}" \
    -H "Authorization: Bearer $TOKEN" \
    "https://$HOST/ccx/api/v1/$TENANT/supervisoryOrganizations"

每項測試都應傳回 HTTP 狀態 200。如果任何端點傳回 403,請參閱下方的「疑難排解」一節。

在 Google SecOps 中設定資訊提供,擷取 Workday HCM 資料

設定動態饋給

  1. 依序前往「SIEM 設定」>「動態饋給」
  2. 按一下「新增動態消息」
  3. 在下一個頁面中,按一下「設定單一動態饋給」
  4. 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如 Workday HCM)。
  5. 選取「第三方 API」做為「來源類型」
  6. 選取「Workday」做為「記錄類型」。
  7. 點選「下一步」

設定動態饋給參數

指定下列輸入參數的值:

  • API 主機名稱:Workday REST API 端點的完整網域名稱 (例如 wd2-impl-services1.workday.com)。

  • 租戶:Workday REST API 端點的最後一個路徑元素,用於識別 Workday 執行個體。

  • 存取權杖:上一節產生的 OAuth 存取權杖。

進階選項:

  • 資產命名空間資產命名空間
  • 擷取標籤:要套用至這個動態饋給事件的標籤。
  1. 點選「下一步」
  2. 在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)

疑難排解

特定端點出現 403 Forbidden 錯誤

如果資訊提供回報錯誤,或驗證 curl 指令針對特定端點傳回 403,表示整合系統使用者缺少權限。

失敗的端點 修正
/workers/{id}/timeOffEntries Worker Data: Time Off (Time Off Balances)Worker Data: Time Off (Time Off Balances Manager View) 網域新增 GET 存取權。將「Time Off and Leave」(休假和請假) 範圍新增至 API 用戶端。
/workers/{id}/history Worker Data: Historical Staffing Information 網域新增 GET 存取權。確認「Staffing」範圍已指派給 API 用戶端。
/supervisoryOrganizations Manage: Supervisory OrganizationView: Supervisory Organization 網域新增 GET 存取權。將「Organizations and Roles」(機構和角色) 範圍新增至 API 用戶端。

變更權限後:

  1. 在 Workday 中執行「Activate Pending Security Policy Changes」
  2. 如果您在 API 用戶端中新增了範圍,請透過「Manage Refresh Tokens for Integrations」產生新的更新權杖,然後產生新的存取權杖。
  3. 如果存取權杖有變更,請更新動態饋給設定。

驗證錯誤

  • 未授權 401:存取權杖已過期。使用更新權杖產生新權杖,並更新動態饋給。
  • 無效的用戶端:請確認用戶端 ID 和用戶端密鑰正確無誤。
  • 更新權杖無效:更新權杖可能已遭撤銷。透過「Manage Refresh Tokens for Integrations」(管理整合的重新整理權杖) 產生新的權杖。

UDM 對應表

記錄欄位 UDM 對應 邏輯
entity_host_name entity.asset.hostname 直接對應
location.descriptor entity.location.city 直接對應
AU_EFFECTIVE_DATE entity.resource.attribute.labels.value 直接對應
COMPANY_EFFECTIVE_DATE entity.resource.attribute.labels.value 直接對應
ORIG_HIRE_DT entity.resource.attribute.labels.value 直接對應
STATUS_EFFECTIVE_DATE entity.resource.attribute.labels.value 直接對應
href entity.url 直接對應
CONT_START_DTE entity.user.attribute.labels.value 直接對應
EMPL_TYPE entity.user.attribute.labels.value 直接對應
EXEC_CD entity.user.attribute.labels.value 直接對應
EXEC_DESCR entity.user.attribute.labels.value 直接對應
HR_Status entity.user.attribute.labels.value 直接對應
Is_Active entity.user.attribute.labels.value 直接對應
Is_Manager entity.user.attribute.labels.value 直接對應
JOB_CODE entity.user.attribute.labels.value 直接對應
ORG_CD entity.user.attribute.labels.value 直接對應
ORG_Container entity.user.attribute.labels.value 直接對應
ORG_Container_Name entity.user.attribute.labels.value 直接對應
PER_Status entity.user.attribute.labels.value 直接對應
POSITION_NBR entity.user.attribute.labels.value 直接對應
PS_ELID entity.user.attribute.labels.value 直接對應
REG_TEMP entity.user.attribute.labels.value 直接對應
WB_LOGON_ID entity.user.attribute.labels.value 直接對應
ORG_DESCR entity.user.department 已合併
primarySupervisoryOrganization.descriptor entity.user.department 已合併
Email entity.user.email_addresses 已合併
Work_Email entity.user.email_addresses 已合併
primaryWorkEmail entity.user.email_addresses 已合併
EMPLID entity.user.employee_id 直接對應
Employee_ID entity.user.employee_id 直接對應
First_Name entity.user.first_name 直接對應
Legal_Name_First_Name entity.user.first_name 直接對應
HIRE_DATE entity.user.hire_date 已剖析為 RFC 3339
Hire_Date entity.user.hire_date 已剖析為 RFC 3339
Last_Name entity.user.last_name 直接對應
Legal_Name_Last_Name entity.user.last_name 直接對應
gopher-supervisor.primaryWorkEmail entity.user.managers.email_addresses 已合併
Reports_To_EMPLID entity.user.managers.employee_id 直接對應
gopher-supervisor.id entity.user.managers.product_object_id 已重新命名/對應
Reports_To_Name entity.user.managers.user_display_name 直接對應
gopher-supervisor.descriptor entity.user.managers.user_display_name 已重新命名/對應
primaryWorkPhone entity.user.phone_numbers 已合併
Termination_Date entity.user.termination_date 已剖析為 RFC 3339
timeoff.descriptor entity.user.time_off.description 直接對應
timeoff.date entity.user.time_off.interval.start_time 已剖析為 RFC 3339
HR_JOB_TITLE entity.user.title 直接對應
Job_Profile entity.user.title 直接對應
businessTitle entity.user.title 直接對應
Full_Name entity.user.user_display_name 直接對應
descriptor entity.user.user_display_name 直接對應
udm_metadata metadata 已重新命名/對應
metadata_entity_type metadata.entity_type 直接對應
actual_completed_date_and_time metadata.event_timestamp 已剖析為 MM/dd/yyyy HH:mm:ss a
body.time metadata.event_timestamp 已剖析為 UNIX_MS
requestTime metadata.event_timestamp 已剖析為 RFC 3339
timestamp metadata.event_timestamp 已剖析為 RFC 3339
EMPLID metadata.product_entity_id 直接對應
Employee_ID metadata.product_entity_id 直接對應
id metadata.product_entity_id 直接對應
Source_Name metadata.product_name 直接對應
userAgent network.http.parsed_user_agent 已重新命名/對應
userAgent network.http.user_agent 直接對應
sessionId network.session_id 直接對應
ipAddress principal.ip 已合併
taskId principal.process.pid 直接對應
activityAction_label principal.resource.attribute.labels 已合併
body.event.Submitted_By principal.user.userid 直接對應
body.event.Response_Message security_result.action_details 直接對應
body.event.Messages security_result.description 直接對應
actual_start_date_and_time_label security_result.detection_fields 已合併
background_process_is_running_label security_result.detection_fields 已合併
by_person_label security_result.detection_fields 已合併
created_from_trigger_label security_result.detection_fields 已合併
items_processed_label security_result.detection_fields 已合併
percent_complete_label security_result.detection_fields 已合併
processing_time_label security_result.detection_fields 已合併
scheduled_start_date_and_time_label security_result.detection_fields 已合併
sent_on_label security_result.detection_fields 已合併
total_duration_label security_result.detection_fields 已合併
body.event.Integration_Event_Status security_result.summary 直接對應
body.event.Integration_System target.application 直接對應
target_data.id target.resource.product_object_id 直接對應
deviceType target.resource.resource_subtype 直接對應
deviceType target.resource.type 已對應:(?i)(Desktop/Laptop/Mobile)DEVICE
user_display_name target.user.user_display_name 直接對應
systemAccount target.user.userid 直接對應
不適用 entity.resource.attribute.labels.key 常數:COMPANY_EFFECTIVE_DATE
不適用 entity.user.attribute.labels.key 常數:ORG_Container
不適用 metadata.product_name 常數:HCM
不適用 metadata.vendor_name 常數:Workday
不適用 target.resource.type 常數:DEVICE

變更記錄

查看這個剖析器的變更記錄

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。