Raccogliere i log di Workday HCM
Questo documento spiega come importare i log di Workday in Google Security Operations utilizzando l'API. 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 completamento dei campi UDM per gli attributi utente, i dettagli sull'occupazione e la struttura organizzativa. Inoltre, include la gestione degli errori per JSON non validi e campi critici mancanti.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Istanza Google SecOps.
- Accesso con privilegi a Workday.
Configurare l'autenticazione dell'API Workday
Creare un utente del sistema di integrazione (ISU) in Workday
- Accedi a Workday con privilegi di amministratore.
- Digita
Create Integration System Usernella barra di ricerca e seleziona l'attività dai risultati. - Inserisci un nome utente.
- Imposta una password.
- Imposta Session Timeout Minutes (Minuti di timeout della sessione) su
0per evitare che l'ISU vada in timeout. - Abilita Do Not Allow UI Sessions (Non consentire sessioni UI) per migliorare la sicurezza limitando gli accessi all'interfaccia utente.
- Vai all'attività Maintain Password Rules (Gestisci regole password).
- Aggiungi l'utente del sistema di integrazione al campo System Users exempt from password expiration (Utenti di sistema esenti dalla scadenza della password).
Creare un gruppo di sicurezza di integrazione in Workday
- Digita
Create Security Groupnella barra di ricerca e seleziona l'attività dai risultati. - Individua il campo Type of Tenanted Security Group (Tipo di gruppo di sicurezza multi-tenant) e seleziona Integration System Security Group (Unconstrained) (Gruppo di sicurezza del sistema di integrazione (senza vincoli)).
- Fornisci un nome per il gruppo di sicurezza.
- Fai clic su OK.
- Fai clic su Modifica per il gruppo di sicurezza appena creato.
- Assegna l'utente del sistema di integrazione del passaggio precedente al gruppo di sicurezza.
- Fai clic su Fine.
Concedere l'accesso al dominio al gruppo di sicurezza in Workday
- Digita Maintain Permissions for Security Group (Gestisci autorizzazioni per il gruppo di sicurezza) nella barra di ricerca e seleziona l'attività dai risultati.
- Scegli il gruppo di sicurezza che hai creato dall'elenco Source Security Group (Gruppo di sicurezza di origine) per modificarne le autorizzazioni.
- Fai clic su OK.
- Vai a Maintain Permissions for Security Group (Gestisci autorizzazioni per il gruppo di sicurezza) > Domain Security Policy Permissions (Autorizzazioni policy di sicurezza del dominio).
- Assegna le autorizzazioni necessarie per ogni dominio, ad esempio le operazioni GET.
- Fai clic su OK.
- Fai clic su Fine per salvare le modifiche.
Attivare le modifiche alla policy di sicurezza in Workday
- Digita
Activate Pending Security Policy Changesnella barra di ricerca e seleziona l'attività dai risultati. - Avvia l'attività Activate Pending Security Policy Changes (Attiva modifiche alla policy di sicurezza in attesa) inserendo un motivo per il controllo nel campo dei commenti, quindi fai clic su OK.
- Completa l'attività nella schermata successiva selezionando Conferma, quindi fai clic su OK.
Configurare il client API per le integrazioni
- Nella barra di ricerca, digita
Register API Client for Integrationse selezionalo. - Fai clic su Crea.
- Fornisci i seguenti dettagli di configurazione:
- Client Name (Nome client): inserisci un nome per il client API (ad esempio,
Google SecOps Client). - System User (Utente di sistema): seleziona l'utente del sistema di integrazione che hai creato nel passaggio precedente.
- Ambito: seleziona l'API HCM o l'ambito pertinente che include i dati dei dipendenti e altre aree a cui stai accedendo.
- Client Name (Nome client): inserisci un nome per il client API (ad esempio,
- Seleziona Salva.
- Fai clic su OK per creare il client API.
- Dopo aver creato il client API, salva il client secret. Non verrà visualizzato di nuovo dopo che avrai chiuso la pagina.
Generare il token di aggiornamento OAuth 2.0
- Nella barra di ricerca di Workday, digita
Manage Refresh Tokens for Integrationse selezionalo. - Fai clic su Generate New Refresh Token (Genera nuovo token di aggiornamento).
- Nel campo Workday Account (Account Workday), cerca e seleziona l'utente del sistema di integrazione che hai creato.
- Seleziona l'utente e fai clic su OK.
- Copia e salva il token di aggiornamento visualizzato.
Ottenere gli URL degli endpoint API
- Nella barra di ricerca di Workday, digita
View API Clientse selezionalo. - In API Clients for Integrations (Client API per le integrazioni), individua il
Google SecOps Clientche hai creato. - Copia e salva i seguenti dettagli:
- Token Endpoint (Endpoint token): l'URL a cui invierai una richiesta per ottenere un token di accesso.
- Workday REST API Endpoint (Endpoint API REST Workday): l'URL che utilizzerai per configurare l'integrazione con Google SecOps.
Generare il token di accesso OAuth
Utilizza curl o un client HTTP simile per inviare una richiesta POST all'endpoint del token:
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}"Verrà restituito un token di accesso (ad esempio,
"access_token": "abcd1234")Copia e salva il token di accesso.
Configura i feed
Per configurare un feed:
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nella pagina successiva, fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
Workday Logs). - Seleziona API di terze parti come Tipo di origine.
- Seleziona il tipo di log Workday.
- Fai clic su Avanti.
- Specifica i valori per i seguenti parametri di input:
- Nome host API: l'URL dell'endpoint API REST Workday.
- Tenant: l'ultimo elemento del percorso dell'endpoint API Workday che identifica la tua istanza.
- Token di accesso: token di accesso OAuth.
- Fai clic su Avanti.
- Esamina la configurazione del feed nella schermata Finalizza, quindi fai clic su Invia.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Funzione logica |
|---|---|---|
@timestamp |
read_only_udm.metadata.event_timestamp.seconds |
Il campo @timestamp del log non elaborato viene rinominato in timestamp e analizzato come timestamp in secondi trascorsi da epoca. |
businessTitle |
read_only_udm.entity.entity.user.title |
Mappato direttamente dal campo businessTitle nel log non elaborato. |
descriptor |
read_only_udm.entity.entity.user.user_display_name |
Mappato direttamente dal campo descriptor nel log non elaborato. |
Employee_ID |
read_only_udm.entity.entity.user.employee_id |
Mappato direttamente dal campo Employee_ID nel log non elaborato. |
Employee_ID |
read_only_udm.entity.metadata.product_entity_id |
Mappato direttamente dal campo Employee_ID nel log non elaborato quando id non è presente. |
gopher-supervisor.descriptor |
read_only_udm.entity.entity.user.managers.user_display_name |
Mappato direttamente dal campo gopher-supervisor.descriptor nel log non elaborato, rinominato in empmanager.user_display_name e poi unito a managers. |
gopher-supervisor.id |
read_only_udm.entity.entity.user.managers.product_object_id |
Mappato direttamente dal campo gopher-supervisor.id nel log non elaborato, rinominato in empmanager.product_object_id e poi unito a managers. |
gopher-supervisor.primaryWorkEmail |
read_only_udm.entity.entity.user.managers.email_addresses |
Mappato direttamente dal campo gopher-supervisor.primaryWorkEmail nel log non elaborato e poi unito a managers. |
gopher-time-off.date |
read_only_udm.entity.entity.user.time_off.interval.start_time |
Analizzato come data dal campo gopher-time-off.date all'interno dell'array gopher-time-off nel log non elaborato. |
gopher-time-off.descriptor |
read_only_udm.entity.entity.user.time_off.description |
Mappato direttamente dal campo gopher-time-off.descriptor all'interno dell'array gopher-time-off nel log non elaborato. |
Hire_Date |
read_only_udm.entity.entity.user.hire_date |
Analizzato come data dal campo Hire_Date nel log non elaborato. |
id |
read_only_udm.entity.metadata.product_entity_id |
Mappato direttamente dal campo id nel log non elaborato, se presente. |
Job_Profile |
read_only_udm.entity.entity.user.title |
Mappato direttamente dal campo Job_Profile nel log non elaborato quando businessTitle non è presente. |
Legal_Name_First_Name |
read_only_udm.entity.entity.user.first_name |
Mappato direttamente dal campo Legal_Name_First_Name nel log non elaborato. |
Legal_Name_Last_Name |
read_only_udm.entity.entity.user.last_name |
Mappato direttamente dal campo Legal_Name_Last_Name nel log non elaborato. |
location.descriptor |
read_only_udm.entity.entity.location.city |
Mappato direttamente dal campo location.descriptor nel log non elaborato, rinominato in _location.city e poi in entity.entity.location.city. |
primarySupervisoryOrganization.descriptor |
read_only_udm.entity.entity.user.department |
Mappato direttamente dal campo primarySupervisoryOrganization.descriptor nel log non elaborato. |
primaryWorkEmail |
read_only_udm.entity.entity.user.email_addresses |
Mappato direttamente dal campo primaryWorkEmail nel log non elaborato. |
primaryWorkPhone |
read_only_udm.entity.entity.user.phone_numbers |
Mappato direttamente dal campo primaryWorkPhone nel log non elaborato. |
Termination_Date |
read_only_udm.entity.entity.user.termination_date |
Analizzato come data dal campo Termination_Date nel log non elaborato. |
Work_Email |
read_only_udm.entity.entity.user.email_addresses |
Mappato direttamente dal campo Work_Email nel log non elaborato quando primaryWorkEmail non è presente. |
collection_time |
read_only_udm.metadata.event_timestamp.collected_timestamp |
Il campo collection_time del log viene mappato a collected_timestamp. |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.