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 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 de champs UDM pour les attributs utilisateur, les informations sur l'emploi et la structure organisationnelle. Il inclut également la gestion des exceptions pour le format JSON incorrect et les champs critiques manquants.

Avant de commencer

Assurez-vous de remplir les conditions préalables suivantes :

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

Configurer l'authentification de l'API Workday

Créer un utilisateur 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 en minutes) sur 0 pour éviter que l'ISU n'expire.
  6. Activez l'option 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 Gérer les règles relatives aux mots 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. Localisez le champ Type de groupe de sécurité locataire et sélectionnez Groupe de sécurité du système d'intégration (sans restriction).
  3. Attribuez un nom au groupe de sécurité.
  4. Cliquez sur OK.
  5. Cliquez sur 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 à un 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. Sélectionnez le groupe de sécurité que vous avez créé dans la liste Groupe de sécurité source pour modifier ses autorisations.
  3. Cliquez sur OK.
  4. Accédez à Maintenir 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, comme les opérations GET.
  6. Cliquez sur OK.
  7. Cliquez sur OK pour enregistrer les modifications.

Activer les modifications apportées aux 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. Démarrez la tâche Activer les modifications en attente de la règle de sécurité en saisissant un motif pour votre audit dans le champ de commentaire, puis cliquez sur OK.
  3. Sur l'écran suivant, sélectionnez 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 et 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 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 employés et les autres domaines auxquels 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 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 et sélectionnez-le.
  2. Cliquez sur Générer un jeton d'actualisation.
  3. Dans le champ 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 et sélectionnez-le.
  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 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 similaire 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 (par exemple, "access_token": "abcd1234") est renvoyé.

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

Configurer des flux

Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :

  • Paramètres SIEM> Flux
  • Plate-forme de contenu > Packs de contenu

Configurer des flux à partir de Paramètres SIEM > Flux

Pour configurer un flux, procédez comme suit :

  1. Accédez à Paramètres SIEM > Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Sur la page suivante, cliquez sur Configurer un seul flux.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Workday Logs).
  5. Sélectionnez API tierce comme Type de source.
  6. Sélectionnez le type de journal Workday.
  7. Cliquez sur Suivant.
  8. 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.
    • Locataire : dernier élément du chemin d'accès 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 sur l'écran Finaliser, puis cliquez sur Envoyer.

Configurer des flux depuis le Hub de contenu

Indiquez les valeurs des champs suivants :

  • Nom d'hôte de l'API : nom de domaine complet de votre point de terminaison de l'API REST Workday.
  • Locataire : dernier élément du chemin d'accès de votre point de terminaison de l'API Workday qui identifie votre instance.
  • Jeton d'accès : jeton d'accès OAuth.

Options avancées

  • Nom du flux : valeur préremplie qui identifie le flux.
  • Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.
  • Espace de noms de l'élément : espace de noms associé au flux.
  • Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.

Table 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 qu'horodatage 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 Directement mappé à 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 Directement mappé à 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 Directement mappé à 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 Directement mappé à 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 Analysé comme une 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é comme une date à partir du champ Hire_Date dans le journal brut.
id read_only_udm.entity.metadata.product_entity_id Directement mappé à partir du champ id dans le journal brut, le cas échéant.
Job_Profile read_only_udm.entity.entity.user.title Directement mappé à 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 Directement mappé à 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 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é comme une date à partir du champ Termination_Date dans le journal brut.
Work_Email read_only_udm.entity.entity.user.email_addresses Directement mappé à 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.

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