Recoger registros de Workday HCM
En este documento se explica cómo ingerir registros de Workday en Google Security Operations mediante la API. El analizador extrae datos de usuario de Workday HCM de registros en formato JSON. Gestiona varias transformaciones de datos, como cambiar el nombre de los campos, combinar objetos anidados, analizar fechas y rellenar campos de UDM para atributos de usuario, detalles de empleo y estructura organizativa. Además, incluye el control de errores para JSON con formato incorrecto y campos críticos que faltan.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Instancia de Google SecOps.
- Acceso privilegiado a Workday.
Configurar la autenticación de la API de Workday
Crear un usuario del sistema de integración (ISU) en Workday
- Inicia sesión en Workday con privilegios de administrador.
- Escribe
Create Integration System User
en la barra de búsqueda y selecciona la tarea en los resultados. - Introduce un nombre de usuario.
- Define una contraseña.
- Define Minutos de tiempo de espera de la sesión como
0
para evitar que se agote el tiempo de espera de la interfaz de usuario de configuración. - Habilita la opción No permitir sesiones de interfaz de usuario para mejorar la seguridad restringiendo los inicios de sesión en la interfaz de usuario.
- Ve a la tarea Mantener reglas de contraseñas.
- Añade el usuario del sistema de integración al campo Usuarios del sistema exentos de la caducidad de la contraseña.
Crear un grupo de seguridad de integración en Workday
- Escribe
Create Security Group
en la barra de búsqueda y selecciona la tarea en los resultados. - Busca el campo Tipo de grupo de seguridad de arrendatario y selecciona Grupo de seguridad del sistema de integración (sin restricciones).
- Indica un nombre para el grupo de seguridad.
- Haz clic en Aceptar.
- Haga clic en Editar en el grupo de seguridad que acaba de crear.
- Asigna el usuario del sistema de integración del paso anterior al grupo de seguridad.
- Haz clic en Listo.
Conceder acceso al dominio a un grupo de seguridad en Workday
- Escribe Maintain Permissions for Security Group (Mantener permisos de grupo de seguridad) en la barra de búsqueda y selecciona la tarea en los resultados.
- En la lista Grupo de seguridad de origen, elige el grupo de seguridad que has creado para modificar sus permisos.
- Haz clic en Aceptar.
- Ve a Maintain Permissions for Security Group (Mantener permisos de grupo de seguridad) > Domain Security Policy Permissions (Permisos de política de seguridad de dominio).
- Asigna los permisos necesarios a cada dominio, como las operaciones GET.
- Haz clic en Aceptar.
- Haz clic en Hecho para guardar los cambios.
Activar los cambios en las políticas de seguridad en Workday
- Escribe
Activate Pending Security Policy Changes
en la barra de búsqueda y selecciona la tarea en los resultados. - Inicia la tarea Activar cambios pendientes en la política de seguridad. Para ello, escribe un motivo para tu auditoría en el campo de comentarios y, a continuación, haz clic en Aceptar.
- En la pantalla siguiente, selecciona Confirmar y, a continuación, haz clic en Aceptar.
Configurar el cliente de API para las integraciones
- En la barra de búsqueda, escribe
Register API Client for Integrations
y selecciónalo. - Haz clic en Crear.
- Proporcione los siguientes detalles de configuración:
- Nombre del cliente: introduce un nombre para el cliente de la API (por ejemplo,
Google SecOps Client
). - Usuario del sistema: selecciona el Usuario del sistema de integración que has creado en el paso anterior.
- Ámbito: selecciona la API HCM o el ámbito pertinente que incluya los datos de los trabajadores y otras áreas a las que accedas.
- Nombre del cliente: introduce un nombre para el cliente de la API (por ejemplo,
- Selecciona Guardar.
- Haz clic en Aceptar para crear el cliente de la API.
- Después de crear el cliente de la API, guarda el secreto de cliente. No se volverá a mostrar después de que salgas de la página.
Generar token de actualización de OAuth 2.0
- En la barra de búsqueda de Workday, escribe
Manage Refresh Tokens for Integrations
y selecciónalo. - Haz clic en Generar nuevo token de actualización.
- En el campo Workday Account (Cuenta de Workday), busca y selecciona el Integration System User (Usuario del sistema de integración) que has creado.
- Selecciona el usuario y haz clic en Aceptar.
- Copia y guarda el token de actualización que se muestra.
Obtener URLs de endpoints de API
- En la barra de búsqueda de Workday, escribe
View API Clients
y selecciónalo. - En Clientes de API para integraciones, busque el
Google SecOps Client
que haya creado. - Copia y guarda los siguientes detalles:
- Endpoint de token: la URL a la que enviarás una solicitud para obtener un token de acceso.
- Endpoint de la API REST de Workday: la URL que usarás para configurar la integración con Google SecOps.
Generar token de acceso de OAuth
Usa curl o un cliente HTTP similar para enviar una solicitud POST al endpoint de 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}"
Se devolverá un token de acceso (por ejemplo,
"access_token": "abcd1234"
).Copia y guarda el token de acceso.
Configurar feeds
Para configurar un feed, sigue estos pasos:
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir feed.
- En la página siguiente, haga clic en Configurar un solo feed.
- En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo,
Workday Logs
). - Seleccione API de terceros como Tipo de fuente.
- Selecciona el tipo de registro Workday.
- Haz clic en Siguiente.
- Especifique valores para los siguientes parámetros de entrada:
- Nombre de host de la API: la URL de su endpoint de la API REST de Workday.
- Cliente: el último elemento de la ruta de acceso de tu endpoint de la API de Workday que identifica tu instancia.
- Token de acceso: token de acceso de OAuth.
- Haz clic en Siguiente.
- Revise la configuración del feed en la pantalla Finalizar y, a continuación, haga clic en Enviar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
@timestamp |
read_only_udm.metadata.event_timestamp.seconds |
El campo @timestamp del registro sin procesar se cambia a timestamp y se analiza como una marca de tiempo en segundos desde el inicio del registro de tiempo. |
businessTitle |
read_only_udm.entity.entity.user.title |
Se asigna directamente desde el campo businessTitle del registro sin procesar. |
descriptor |
read_only_udm.entity.entity.user.user_display_name |
Se asigna directamente desde el campo descriptor del registro sin procesar. |
Employee_ID |
read_only_udm.entity.entity.user.employee_id |
Se asigna directamente desde el campo Employee_ID del registro sin procesar. |
Employee_ID |
read_only_udm.entity.metadata.product_entity_id |
Se asigna directamente desde el campo Employee_ID del registro sin procesar cuando no está presente id . |
gopher-supervisor.descriptor |
read_only_udm.entity.entity.user.managers.user_display_name |
Se asigna directamente desde el campo gopher-supervisor.descriptor del registro sin procesar, se le cambia el nombre a empmanager.user_display_name y, a continuación, se combina con managers . |
gopher-supervisor.id |
read_only_udm.entity.entity.user.managers.product_object_id |
Se asigna directamente desde el campo gopher-supervisor.id del registro sin procesar, se le cambia el nombre a empmanager.product_object_id y, a continuación, se combina con managers . |
gopher-supervisor.primaryWorkEmail |
read_only_udm.entity.entity.user.managers.email_addresses |
Se asigna directamente desde el campo gopher-supervisor.primaryWorkEmail del registro sin procesar y, a continuación, se combina con managers . |
gopher-time-off.date |
read_only_udm.entity.entity.user.time_off.interval.start_time |
Se analiza como una fecha del campo gopher-time-off.date de la matriz gopher-time-off del registro sin procesar. |
gopher-time-off.descriptor |
read_only_udm.entity.entity.user.time_off.description |
Se asigna directamente desde el campo gopher-time-off.descriptor de la matriz gopher-time-off del registro sin procesar. |
Hire_Date |
read_only_udm.entity.entity.user.hire_date |
Se analiza como una fecha del campo Hire_Date del registro sin procesar. |
id |
read_only_udm.entity.metadata.product_entity_id |
Se asigna directamente desde el campo id del registro sin procesar cuando está presente. |
Job_Profile |
read_only_udm.entity.entity.user.title |
Se asigna directamente desde el campo Job_Profile del registro sin procesar cuando no está presente businessTitle . |
Legal_Name_First_Name |
read_only_udm.entity.entity.user.first_name |
Se asigna directamente desde el campo Legal_Name_First_Name del registro sin procesar. |
Legal_Name_Last_Name |
read_only_udm.entity.entity.user.last_name |
Se asigna directamente desde el campo Legal_Name_Last_Name del registro sin procesar. |
location.descriptor |
read_only_udm.entity.entity.location.city |
Se asigna directamente desde el campo location.descriptor del registro sin procesar, se le cambia el nombre a _location.city y, después, a entity.entity.location.city . |
primarySupervisoryOrganization.descriptor |
read_only_udm.entity.entity.user.department |
Se asigna directamente desde el campo primarySupervisoryOrganization.descriptor del registro sin procesar. |
primaryWorkEmail |
read_only_udm.entity.entity.user.email_addresses |
Se asigna directamente desde el campo primaryWorkEmail del registro sin procesar. |
primaryWorkPhone |
read_only_udm.entity.entity.user.phone_numbers |
Se asigna directamente desde el campo primaryWorkPhone del registro sin procesar. |
Termination_Date |
read_only_udm.entity.entity.user.termination_date |
Se analiza como una fecha del campo Termination_Date del registro sin procesar. |
Work_Email |
read_only_udm.entity.entity.user.email_addresses |
Se asigna directamente desde el campo Work_Email del registro sin procesar cuando no está presente primaryWorkEmail . |
collection_time |
read_only_udm.metadata.event_timestamp.collected_timestamp |
El collection_time del registro se asigna a collected_timestamp . |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.