Raccogliere i log di Workday HCM

Supportato in:

Questo documento spiega come importare i log di Workday HCM in Google Security Operations configurando un feed utilizzando l'API di terze parti.

Il parser estrae i dati utente di Workday HCM dai log in formato JSON. Gestisce varie trasformazioni dei dati, tra cui la ridenominazione dei campi, l'unione di oggetti nidificati, l'analisi delle date e il popolamento dei campi UDM per gli attributi utente, i dettagli sull'impiego e la struttura organizzativa.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Accesso con privilegi a Workday con autorizzazioni Amministratore della sicurezza o equivalenti

Configurare l'autenticazione API Workday

Crea un utente di sistema di integrazione (ISU)

  1. Accedi a Workday con privilegi amministrativi.
  2. Nella barra di ricerca, digita Create Integration System User (Crea utente di sistema di integrazione) e seleziona l'attività.
  3. Inserisci un Nome utente (ad esempio, ISU_SecOps_HCM).
  4. Imposta una password.
  5. Imposta Session Timeout Minutes (Minuti di timeout della sessione) su 0 per evitare che l'ISU vada in timeout.
  6. Abilita Do Not Allow UI Sessions (Non consentire sessioni UI) per migliorare la sicurezza limitando gli accessi alla UI.
  7. Vai all'attività Mantieni regole password.
  8. Aggiungi l'utente di sistema di integrazione al campo Utenti di sistema esenti dalla scadenza della password.

Crea un gruppo di sicurezza per l'integrazione

  1. Nella barra di ricerca, digita Crea gruppo di sicurezza e seleziona l'attività.
  2. Individua il campo Tipo di gruppo di sicurezza multi-tenant e seleziona Integration System Security Group (Unconstrained).
  3. Fornisci un nome per il gruppo di sicurezza (ad esempio, ISG_SecOps_HCM).
  4. Fai clic su OK.
  5. Fai clic su Modifica per il gruppo di sicurezza appena creato.
  6. Assegna l'utente di sistema di integrazione del passaggio precedente al gruppo di sicurezza.
  7. Fai clic su Fine.

Concedere l'accesso al dominio al gruppo di sicurezza

Il feed Google SecOps recupera i dati da quattro endpoint dell'API REST di Workday. A ogni endpoint devono essere concesse autorizzazioni specifiche per le policy di sicurezza del dominio al gruppo di sicurezza dell'integrazione.

  1. Nella barra di ricerca, digita Maintain Permissions for Security Group (Mantieni autorizzazioni per il gruppo di sicurezza) e seleziona l'attività.
  2. Scegli il gruppo di sicurezza che hai creato (ad esempio ISG_SecOps_HCM) dall'elenco Gruppo di sicurezza di origine.
  3. Fai clic su OK.
  4. Vai ad Autorizzazioni per le norme di sicurezza del dominio.
  5. Aggiungi l'accesso GET per ciascuno dei seguenti domini:

    Endpoint API Policy di sicurezza del dominio richieste
    /workers - Elenco e profili dei lavoratori Worker Data: Public Worker Reports
    /workers/{id}/timeOffEntries - Saldi ferie Worker Data: Time Off (Time Off Balances), Worker Data: Time Off (Time Off Balances Manager View)
    /workers/{id}/history - Cronologia dell'assegnazione dei lavoratori Worker Data: Historical Staffing Information
    /supervisoryOrganizations - Struttura organizzativa Manage: Supervisory Organization o View: Supervisory Organization
  6. Fai clic su OK.

  7. Fai clic su Fine per salvare le modifiche.

Attiva le modifiche al criterio di sicurezza

  1. Nella barra di ricerca, digita Activate Pending Security Policy Changes (Attiva modifiche alle norme di sicurezza in attesa) e seleziona l'attività.
  2. Inserisci un motivo per la modifica nel campo del commento (ad esempio, Granting API access for Google SecOps HCM integration).
  3. Fai clic su OK.
  4. Seleziona Conferma e poi fai clic su Ok.

Registra il client API per le integrazioni

  1. Nella barra di ricerca, digita Register API Client for Integrations (Registra client API per le integrazioni) e selezionalo.
  2. Fai clic su Crea.
  3. Fornisci i seguenti dettagli di configurazione:

    • Nome client: inserisci un nome (ad esempio, Google SecOps HCM Client).
    • Utente di sistema: seleziona l'utente di sistema di integrazione che hai creato (ad esempio, ISU_SecOps_HCM).
    • Ambito: seleziona i seguenti ambiti:

      Ambito Obbligatorio per
      Personale Endpoint /workers e /workers/{id}/history
      Tempo libero e congedo /workers/{id}/timeOffEntries endpoint
      Organizzazioni e ruoli /supervisoryOrganizations endpoint
  4. Fai clic su Salva.

  5. Fai clic su OK.

  6. Copia e salva immediatamente l'ID client e il client secret.

Genera token di aggiornamento OAuth 2.0

  1. Nella barra di ricerca, digita Gestisci token di aggiornamento per le integrazioni e selezionalo.
  2. Fai clic su Genera nuovo token di aggiornamento.
  3. Nel campo Account Workday, cerca e seleziona l'utente del sistema di integrazione (ad esempio, ISU_SecOps_HCM).
  4. Seleziona il client API che hai creato e fai clic su Ok.
  5. Copia e salva il token di aggiornamento.

Recuperare gli URL degli endpoint API

  1. Nella barra di ricerca, digita Visualizza client API e selezionalo.
  2. In Client API per le integrazioni, individua il client che hai creato (ad esempio, Google SecOps HCM Client).
  3. Copia e salva i seguenti dettagli:

    • Endpoint token: l'URL per ottenere un token di accesso (ad esempio, https://wd2-impl-services1.workday.com/ccx/oauth2/YOUR_TENANT/token).
    • Endpoint API REST Workday: l'URL di base per le chiamate API (ad esempio, https://wd2-impl-services1.workday.com/ccx/api/v1/YOUR_TENANT).

Generare il token di accesso OAuth

  • Utilizza curl o un client HTTP simile per inviare una richiesta POST all'endpoint token:

    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"
    

Viene restituito un token di accesso (ad esempio, "access_token": "abcd1234"). Copia e salva il token di accesso.

Verificare l'accesso API

  • Prima di configurare il feed, verifica che l'ISU disponga delle autorizzazioni richieste per gli endpoint chiave. Sostituisci le variabili con i tuoi valori effettivi:

    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"
    

Ogni test deve restituire lo stato HTTP 200. Se un endpoint restituisce 403, consulta la sezione Risoluzione dei problemi.

Configura un feed in Google SecOps per importare i dati di Workday HCM

Configurare il feed

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Nella pagina successiva, fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Workday HCM).
  5. Seleziona API di terze parti come Tipo di origine.
  6. Seleziona Workday come Tipo di log.
  7. Fai clic su Avanti.

Configurare i parametri del feed

  1. Specifica i valori per i seguenti parametri di input:

    • Nome host API: il nome di dominio completo dell'endpoint API REST di Workday (ad esempio, wd2-impl-services1.workday.com).

    • Tenant: l'ultimo elemento del percorso dell'endpoint API REST Workday che identifica la tua istanza Workday.

    • Token di accesso: il token di accesso OAuth generato nella sezione precedente.

    Opzioni avanzate:

    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
  2. Fai clic su Avanti.

  3. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Risoluzione dei problemi

403 - Vietato su endpoint specifici

Se il feed segnala errori o i comandi curl di verifica restituiscono 403 per endpoint specifici, l'utente del sistema di integrazione non dispone delle autorizzazioni.

Endpoint non riuscito Correggi
/workers/{id}/timeOffEntries Aggiungi l'accesso GET per i domini Worker Data: Time Off (Time Off Balances) e Worker Data: Time Off (Time Off Balances Manager View). Aggiungi l'ambito Time Off and Leave al client API.
/workers/{id}/history Aggiungi l'accesso GET per il dominio Worker Data: Historical Staffing Information. Verifica che l'ambito Staffing sia assegnato al client API.
/supervisoryOrganizations Aggiungi l'accesso GET per il dominio Manage: Supervisory Organization o View: Supervisory Organization. Aggiungi l'ambito Organizzazioni e ruoli al client API.

Dopo aver apportato modifiche alle autorizzazioni:

  1. Esegui Attiva modifiche ai criteri di sicurezza in attesa in Workday.
  2. Se hai aggiunto nuovi ambiti al client API, genera un nuovo token di aggiornamento tramite Gestisci token di aggiornamento per le integrazioni e poi genera un nuovo token di accesso.
  3. Aggiorna la configurazione del feed con il nuovo token di accesso, se modificato.

Errori di autenticazione

  • 401 - Non autorizzato: il token di accesso è scaduto. Genera un nuovo token utilizzando il token di aggiornamento e aggiorna il feed.
  • Client non valido: verifica che l'ID client e il client secret siano corretti.
  • Token di aggiornamento non valido: il token di aggiornamento potrebbe essere stato revocato. Generane uno nuovo tramite Gestisci token di aggiornamento per le integrazioni.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
@timestamp metadata.event_timestamp.seconds Analizzato come timestamp in secondi dall'epoca
businessTitle entity.entity.user.title Mappato direttamente
descriptor entity.entity.user.user_display_name Mappato direttamente
Employee_ID entity.entity.user.employee_id Mappato direttamente
Employee_ID entity.metadata.product_entity_id Mappato quando id non è presente
gopher-supervisor.descriptor entity.entity.user.managers.user_display_name Mappato direttamente
gopher-supervisor.id entity.entity.user.managers.product_object_id Mappato direttamente
gopher-supervisor.primaryWorkEmail entity.entity.user.managers.email_addresses Mappato direttamente
gopher-time-off.date entity.entity.user.time_off.interval.start_time Analizzato come data
gopher-time-off.descriptor entity.entity.user.time_off.description Mappato direttamente
Hire_Date entity.entity.user.hire_date Analizzato come data
id entity.metadata.product_entity_id Mappato direttamente, se presente
Job_Profile entity.entity.user.title Mappato quando businessTitle non è presente
Legal_Name_First_Name entity.entity.user.first_name Mappato direttamente
Legal_Name_Last_Name entity.entity.user.last_name Mappato direttamente
location.descriptor entity.entity.location.city Mappato direttamente
primarySupervisoryOrganization.descriptor entity.entity.user.department Mappato direttamente
primaryWorkEmail entity.entity.user.email_addresses Mappato direttamente
primaryWorkPhone entity.entity.user.phone_numbers Mappato direttamente
Termination_Date entity.entity.user.termination_date Analizzato come data
Work_Email entity.entity.user.email_addresses Mappato quando primaryWorkEmail non è presente
collection_time metadata.event_timestamp.collected_timestamp Mappato direttamente

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.