Collecter les journaux Workday HCM

Compatible avec :

Ce document explique comment ingérer des journaux Workday dans Google Security Operations à l'aide de l'API. L'analyseur extrait les données utilisateur Workday HCM à partir de journaux au format JSON. Il gère diverses transformations de données, y compris le changement de nom des champs, la fusion d'objets imbriqués, l'analyse des dates et le remplissage des champs UDM pour les attributs utilisateur, les informations sur l'emploi et la structure organisationnelle. De plus, il inclut la gestion des exceptions pour les codes JSON mal formés et les champs critiques manquants.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Instance Google SecOps
  • Accès privilégié à Workday

Configurer l'authentification de l'API Workday

Créer un utilisateur du système d'intégration (ISU) dans Workday

  1. Connectez-vous à Workday avec des droits d'administrateur.
  2. Saisissez Create Integration System User dans la barre de recherche, puis sélectionnez la tâche dans les résultats.
  3. Saisissez un nom d'utilisateur.
  4. Définissez un mot de passe.
  5. Définissez Session Timeout Minutes sur 0 pour éviter que l'ISU n'expire.
  6. Activez l'option Do Not Allow UI Sessions (Ne pas autoriser les sessions d'interface utilisateur) pour renforcer la sécurité en limitant les connexions à l'interface utilisateur.
  7. Accédez à la tâche Maintain Password Rules (Gérer les règles de mot de passe).
  8. Ajoutez l'utilisateur du système d'intégration au champ System Users exempt from password expiration (Utilisateurs du système exemptés de l'expiration du mot de passe).

Créer un groupe de sécurité d'intégration dans Workday

  1. Saisissez Create Security Group dans la barre de recherche, puis sélectionnez la tâche dans les résultats.
  2. Recherchez le champ Type of Tenanted Security Group (Type de groupe de sécurité locataire), puis sélectionnez Integration System Security Group (Unconstrained) (Groupe de sécurité du système d'intégration (sans contrainte)).
  3. Saisissez un nom pour le groupe de sécurité.
  4. Cliquez sur OK.
  5. Cliquez sur Edit (Modifier) pour le groupe de sécurité que vous venez de créer.
  6. Attribuez l'utilisateur du système d'intégration de l'étape précédente au groupe de sécurité.
  7. Cliquez sur OK.

Accorder l'accès au domaine au groupe de sécurité dans Workday

  1. Saisissez Maintain Permissions for Security Group (Gérer les autorisations pour le groupe de sécurité) dans la barre de recherche, puis sélectionnez la tâche dans les résultats.
  2. Choisissez le groupe de sécurité que vous avez créé dans la liste Source Security Group (Groupe de sécurité source) pour modifier ses autorisations.
  3. Cliquez sur OK.
  4. Accédez à Maintain Permissions for Security Group > Domain Security Policy Permissions (Gérer les autorisations pour le groupe de sécurité > Autorisations de la stratégie de sécurité du domaine).
  5. Attribuez les autorisations nécessaires pour chaque domaine, par exemple les opérations GET.
  6. Cliquez sur OK.
  7. Cliquez sur OK pour enregistrer les modifications.

Activer les modifications de la stratégie de sécurité dans Workday

  1. Saisissez Activate Pending Security Policy Changes dans la barre de recherche, puis sélectionnez la tâche dans les résultats.
  2. Démarrez la tâche Activate Pending Security Policy Changes (Activer les modifications en attente de la stratégie de sécurité) en saisissant un motif pour votre audit dans le champ de commentaire, puis cliquez sur OK.
  3. Effectuez la tâche sur l'écran suivant en sélectionnant Confirm (Confirmer), puis cliquez sur OK.

Configurer le client API pour les intégrations

  1. Dans la barre de recherche, saisissez Register API Client for Integrations (Enregistrer le client API pour les intégrations), puis sélectionnez-le.
  2. Cliquez sur Créer.
  3. Fournissez les informations de configuration suivantes :
    • Nom du client : saisissez un nom pour le client API (par exemple, Google SecOps Client).
    • Utilisateur du système : sélectionnez l'utilisateur du système d'intégration que vous avez créé à l'étape précédente.
    • Champ d'application : sélectionnez l'API HCM ou le champ d'application approprié qui inclut les données du collaborateur et les autres zones auxquelles vous accédez.
  4. Sélectionnez Enregistrer.
  5. Cliquez sur OK pour créer le client API.
  6. Après avoir créé le client API, enregistrez le code secret du client. Il ne s'affichera plus après avoir quitté la page.

Générer un jeton d'actualisation OAuth 2.0

  1. Dans la barre de recherche Workday, saisissez Manage Refresh Tokens for Integrations (Gérer les jetons d'actualisation pour les intégrations), puis sélectionnez-le.
  2. Cliquez sur Generate New Refresh Token (Générer un nouveau jeton d'actualisation).
  3. Dans le champ Workday Account (Compte Workday), recherchez et sélectionnez l'utilisateur du système d'intégration que vous avez créé.
  4. Sélectionnez l'utilisateur, puis cliquez sur OK.
  5. Copiez et enregistrez le jeton d'actualisation affiché.

Obtenir les URL des points de terminaison de l'API

  1. Dans la barre de recherche Workday, saisissez View API Clients (Afficher les clients API), puis sélectionnez-le.
  2. Sous API Clients for Integrations (Clients API pour les intégrations), recherchez le Google SecOps Client que vous avez créé.
  3. Copiez et enregistrez les informations suivantes :
    • Point de terminaison du jeton : URL à laquelle vous enverrez une requête pour obtenir un jeton d'accès.
    • Point de terminaison de l'API REST Workday : URL que vous utiliserez pour configurer l'intégration à Google SecOps.

Générer un jeton d'accès OAuth

  1. Utilisez curl ou un client HTTP semblable pour envoyer une requête POST au point de terminaison du jeton :

    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}"
    
  2. Un jeton d'accès est renvoyé (par exemple, "access_token": "abcd1234").

  3. Copiez et enregistrez le jeton d'accès.

Configurer des flux

Pour configurer un flux, procédez comme suit :

  1. Accédez à SIEM Settings > Feeds (Paramètres SIEM > Flux).
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Sur la page suivante, cliquez sur Configure a single feed (Configurer un seul flux).
  4. Dans le champ Feed name (Nom du flux), saisissez un nom pour le flux (par exemple, Workday Logs).
  5. Sélectionnez Third Party API (API tierce) comme Source type (Type de source).
  6. Sélectionnez le type de journal Workday.
  7. Cliquez sur Suivant.
  8. Spécifiez des valeurs pour les paramètres d'entrée suivants :
    • Nom d'hôte de l'API : URL de votre point de terminaison de l'API REST Workday.
    • Locataire : dernier élément de chemin de votre point de terminaison de l'API Workday qui identifie votre instance.
    • Jeton d'accès : jeton d'accès OAuth.
  9. Cliquez sur Suivant.
  10. Vérifiez la configuration du flux dans l'écran Finalize (Finaliser), puis cliquez sur Envoyer.

Table de mise en correspondance UDM

Champ du journal Mise en correspondance UDM Logique
@timestamp read_only_udm.metadata.event_timestamp.seconds Le champ @timestamp du journal brut est renommé timestamp et analysé en tant qu'horodatage en secondes depuis l'epoch.
businessTitle read_only_udm.entity.entity.user.title Mise en correspondance directe à partir du champ businessTitle dans le journal brut.
descriptor read_only_udm.entity.entity.user.user_display_name Mise en correspondance directe à partir du champ descriptor dans le journal brut.
Employee_ID read_only_udm.entity.entity.user.employee_id Mise en correspondance directe à partir du champ Employee_ID dans le journal brut.
Employee_ID read_only_udm.entity.metadata.product_entity_id Mise en correspondance directe à partir du champ Employee_ID dans le journal brut lorsque id n'est pas présent.
gopher-supervisor.descriptor read_only_udm.entity.entity.user.managers.user_display_name Mise en correspondance directe à partir du champ gopher-supervisor.descriptor dans le journal brut, renommé empmanager.user_display_name , puis fusionné dans managers.
gopher-supervisor.id read_only_udm.entity.entity.user.managers.product_object_id Mise en correspondance directe à partir du champ gopher-supervisor.id dans le journal brut, renommé empmanager.product_object_id , puis fusionné dans managers.
gopher-supervisor.primaryWorkEmail read_only_udm.entity.entity.user.managers.email_addresses Mise en correspondance directe à partir du champ gopher-supervisor.primaryWorkEmail dans le journal brut, puis fusionné dans managers.
gopher-time-off.date read_only_udm.entity.entity.user.time_off.interval.start_time Analyse en tant que date à partir du champ gopher-time-off.date dans le tableau gopher-time-off du journal brut.
gopher-time-off.descriptor read_only_udm.entity.entity.user.time_off.description Mise en correspondance directe à partir du champ gopher-time-off.descriptor dans le tableau gopher-time-off du journal brut.
Hire_Date read_only_udm.entity.entity.user.hire_date Analyse en tant que date à partir du champ Hire_Date dans le journal brut.
id read_only_udm.entity.metadata.product_entity_id Mise en correspondance directe à partir du champ id dans le journal brut lorsqu'il est présent.
Job_Profile read_only_udm.entity.entity.user.title Mise en correspondance directe à partir du champ Job_Profile dans le journal brut lorsque businessTitle n'est pas présent.
Legal_Name_First_Name read_only_udm.entity.entity.user.first_name Mise en correspondance directe à partir du champ Legal_Name_First_Name dans le journal brut.
Legal_Name_Last_Name read_only_udm.entity.entity.user.last_name Mise en correspondance directe à partir du champ Legal_Name_Last_Name dans le journal brut.
location.descriptor read_only_udm.entity.entity.location.city Mise en correspondance directe à partir du champ location.descriptor dans le journal brut, renommé _location.city , puis entity.entity.location.city.
primarySupervisoryOrganization.descriptor read_only_udm.entity.entity.user.department Mise en correspondance directe à partir du champ primarySupervisoryOrganization.descriptor dans le journal brut.
primaryWorkEmail read_only_udm.entity.entity.user.email_addresses Mise en correspondance directe à partir du champ primaryWorkEmail dans le journal brut.
primaryWorkPhone read_only_udm.entity.entity.user.phone_numbers Mise en correspondance directe à partir du champ primaryWorkPhone dans le journal brut.
Termination_Date read_only_udm.entity.entity.user.termination_date Analyse en tant que date à partir du champ Termination_Date dans le journal brut.
Work_Email read_only_udm.entity.entity.user.email_addresses Mise en correspondance directe à partir du champ Work_Email dans le journal brut lorsque primaryWorkEmail n'est pas présent.
collection_time read_only_udm.metadata.event_timestamp.collected_timestamp Le champ collection_time du journal est mis en correspondance avec collected_timestamp.

Vous avez encore besoin d'aide ? Obtenez des réponses auprès des membres de la communauté et des professionnels Google SecOps.