Collecter les journaux Workday HCM

Compatible avec:

Ce document explique comment ingérer les journaux Workday dans Google Security Operations à l'aide de l'API. L'analyseur extrait les données utilisateur Workday HCM à partir des journaux au format JSON. Il gère diverses transformations de données, y compris le renommage de champs, la fusion d'objets imbriqués, l'analyse de 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 fichiers JSON mal formés et les champs critiques manquants.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google SecOps.
  • Assurez-vous de disposer d'un 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. Indiquez un nom d'utilisateur.
  4. Définissez un mot de passe.
  5. Définissez Session Timeout Minutes (Délai avant expiration de la session) sur 0 pour éviter que l'ISU n'expire.
  6. Activez l'option Ne pas autoriser les sessions de l'UI pour renforcer la sécurité en limitant les connexions à l'UI.
  7. Accédez à la tâche Gérer les règles de mot de passe.
  8. Ajoutez l'utilisateur du système d'intégration au champ Utilisateurs 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 de groupe de sécurité associé à un locataire, puis sélectionnez Groupe de sécurité du système d'intégration (sans contrainte).
  3. Indiquez un nom pour le groupe de sécurité.
  4. Cliquez sur OK.
  5. Cliquez sur Modifier pour le groupe de sécurité nouvellement créé.
  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 à un groupe de sécurité dans Workday

  1. Saisissez Gérer les autorisations d'un groupe de sécurité dans la barre de recherche, puis sélectionnez la tâche dans les résultats.
  2. Sélectionnez le groupe de sécurité que vous avez créé dans la liste Groupe de sécurité de la source pour modifier ses autorisations.
  3. Cliquez sur OK.
  4. Accédez à Gérer les autorisations pour le groupe de sécurité > Autorisations de stratégie de sécurité de domaine.
  5. Attribuez les autorisations nécessaires à chaque domaine, telles que les opérations GET.
  6. Cliquez sur OK.
  7. Cliquez sur OK pour enregistrer les modifications.

Activer les modifications des règles 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. Lancez la tâche Activer les modifications de règles de sécurité en attente en saisissant le motif de votre audit dans le champ de commentaire, puis cliquez sur OK.
  3. Sur l'écran suivant, effectuez la tâche en sélectionnant 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, 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 de l'API (par exemple, Google SecOps Client).
    • Utilisateur système: sélectionnez l'utilisateur 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 des collaborateurs et les autres domaines auxquels vous accédez.
  4. Sélectionnez Enregistrer.
  5. Cliquez sur OK pour créer le client d'API.
  6. Après avoir créé le client API, enregistrez le code secret du client. Il ne s'affichera plus une fois que vous aurez 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, puis sélectionnez-la.
  2. Cliquez sur 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, puis sélectionnez-la.
  2. Sous 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 de Workday: URL que vous utiliserez pour configurer l'intégration avec Google SecOps.

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

  1. Utilisez curl ou un client HTTP similaire pour envoyer une requête POST au point de terminaison de 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 (par exemple, "access_token": "abcd1234") est alors renvoyé.

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

Configurer un flux dans Google SecOps pour ingérer les journaux Workday

  1. Accédez à SIEM Settings > Feeds (Paramètres du SIEM > Flux).
  2. Cliquez sur Ajouter.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Workday Logs).
  4. Sélectionnez API tierce comme type de source.
  5. Sélectionnez le type de journal Jour ouvré.
  6. Cliquez sur Suivant.
  7. Spécifiez les valeurs des paramètres d'entrée suivants :
    • Nom d'hôte de l'API: URL de votre point de terminaison de l'API REST Workday.
    • Tenant (Tenant) : dernier élément du chemin d'accès de votre point de terminaison d'API Workday qui identifie votre instance.
    • Jeton d'accès: jeton d'accès OAuth.
    • Espace de noms des éléments: espace de noms des éléments.
    • Libellés d'ingestion: libellé appliqué aux événements de ce flux.
  8. Cliquez sur Suivant.
  9. Vérifiez la configuration du flux dans l'écran Finaliser, puis cliquez sur Envoyer.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
@timestamp read_only_udm.metadata.event_timestamp.seconds Le champ @timestamp du journal brut est renommé timestamp et analysé en tant que code temporel en secondes depuis l'epoch.
businessTitle read_only_udm.entity.entity.user.title Mappé directement à partir du champ businessTitle dans le journal brut.
descriptor read_only_udm.entity.entity.user.user_display_name Mappé directement à partir du champ descriptor dans le journal brut.
Employee_ID read_only_udm.entity.entity.user.employee_id Mappé directement à partir du champ Employee_ID dans le journal brut.
Employee_ID read_only_udm.entity.metadata.product_entity_id Mappé directement à 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 Mappé directement à partir du champ gopher-supervisor.descriptor dans le journal brut, renommé en empmanager.user_display_name, puis fusionné dans managers.
gopher-supervisor.id read_only_udm.entity.entity.user.managers.product_object_id Mappé directement à partir du champ gopher-supervisor.id dans le journal brut, renommé en empmanager.product_object_id, puis fusionné dans managers.
gopher-supervisor.primaryWorkEmail read_only_udm.entity.entity.user.managers.email_addresses Mappé directement à 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 Interprétée 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 Mappé directement à 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 Analysé en tant que date à partir du champ Hire_Date dans le journal brut.
id read_only_udm.entity.metadata.product_entity_id Mappé directement à partir du champ id dans le journal brut, le cas échéant.
Job_Profile read_only_udm.entity.entity.user.title Mappé directement à 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 Mappé directement à partir du champ Legal_Name_First_Name dans le journal brut.
Legal_Name_Last_Name read_only_udm.entity.entity.user.last_name Mappé directement à partir du champ Legal_Name_Last_Name dans le journal brut.
location.descriptor read_only_udm.entity.entity.location.city Mappé directement à partir du champ location.descriptor dans le journal brut, renommé en _location.city, puis en entity.entity.location.city.
primarySupervisoryOrganization.descriptor read_only_udm.entity.entity.user.department Mappé directement à partir du champ primarySupervisoryOrganization.descriptor dans le journal brut.
primaryWorkEmail read_only_udm.entity.entity.user.email_addresses Mappé directement à partir du champ primaryWorkEmail dans le journal brut.
primaryWorkPhone read_only_udm.entity.entity.user.phone_numbers Mappé directement à partir du champ primaryWorkPhone dans le journal brut.
Termination_Date read_only_udm.entity.entity.user.termination_date Analysé en tant que date à partir du champ Termination_Date dans le journal brut.
Work_Email read_only_udm.entity.entity.user.email_addresses Mappé directement à 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 collection_time du journal est mappé sur collected_timestamp.

Modifications

2024-06-25

Amélioration :

  • Ajout de la prise en charge de l'événement UDM
  • Ajout d'un format Grok sur href" pour extraire le champ entity_host_name
  • entity_host_name mappé sur entity.entity.asset.hostname
  • href mappé sur entity.entity.url

2024-06-24

Amélioration :

  • Ajout de la compatibilité avec les journaux CSV

2022-09-15

  • Migration vers l'analyseur par défaut

2022-05-11

  • Migration vers l'analyseur par défaut

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