Recopila registros de Workday HCM
En este documento, se explica cómo transferir registros de Workday a Google Security Operations con la API. El analizador extrae los datos de los usuarios de HCM de Workday de los registros con formato JSON. Maneja varias transformaciones de datos, como el cambio de nombre de los campos, la combinación de objetos anidados, el análisis de fechas y la propagación de campos del UDM para los atributos del usuario, los detalles de empleo y la estructura organizativa. Además, incluye el manejo de errores para el JSON con formato incorrecto y los campos críticos faltantes.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps.
- Acceso con privilegios a Workday
Configura la autenticación de la API de Workday
Crea un usuario del sistema de integración (ISU) en Workday
- Accede a Workday con privilegios de administrador.
- Escribe
Create Integration System User
en la barra de búsqueda y selecciona la tarea en los resultados. - Ingresa un Nombre de usuario.
- Establece una contraseña.
- Establece Session Timeout Minutes en
0
para evitar que se agote el tiempo de espera de ISU. - Habilita No permitir sesiones de IU para mejorar la seguridad restringiendo los accesos a la IU.
- Ve a la tarea Maintain Password Rules.
- Agrega el usuario del sistema de integración al campo Usuarios del sistema exentos del vencimiento de la contraseña.
Crea 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. - Ubica el campo Type of Tenanted Security Group y selecciona Integration System Security Group (Unconstrained).
- Proporciona un Nombre para el grupo de seguridad.
- Haz clic en Aceptar.
- Haz clic en Editar en el grupo de seguridad recién creado.
- Asigna el usuario del sistema de integración del paso anterior al grupo de seguridad.
- Haz clic en Listo.
Otorga acceso al dominio al grupo de seguridad en Workday
- Escribe Maintain Permissions for Security Group en la barra de búsqueda y selecciona la tarea en los resultados.
- Elige el grupo de seguridad que creaste en la lista Grupo de seguridad de origen para modificar sus permisos.
- Haz clic en Aceptar.
- Ve a Maintain Permissions for Security Group > Domain Security Policy Permissions.
- Asigna los permisos necesarios para cada dominio, como las operaciones GET.
- Haz clic en Aceptar.
- Haz clic en Listo para guardar los cambios.
Activa los cambios en la política de seguridad en Workday
- Escribe
Activate Pending Security Policy Changes
en la barra de búsqueda y selecciona la tarea en los resultados. - Para iniciar la tarea Activate Pending Security Policy Changes, ingresa un motivo para tu auditoría en el campo de comentarios y, luego, haz clic en Aceptar.
- En la siguiente pantalla, selecciona Confirmar y, luego, haz clic en Aceptar para completar la tarea.
Configura 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.
- Proporciona los siguientes detalles de configuración:
- Client Name: Ingresa 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 creaste en el paso anterior.
- Alcance: Selecciona la API de HCM o el alcance pertinente que incluya los datos del trabajador y otras áreas a las que accedas.
- Client Name: Ingresa un nombre para el cliente de la API (por ejemplo,
- Selecciona Guardar.
- Haz clic en Aceptar para crear el cliente de API.
- Después de crear el cliente de API, guarda el secreto del cliente. No se volverá a mostrar después de que salgas de la página.
Genera un 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 Generate New Refresh Token.
- En el campo Cuenta de Workday, busca y selecciona el Usuario del sistema de integración que creaste.
- Selecciona el usuario y haz clic en Aceptar.
- Copia y guarda el token de actualización que se muestra.
Obtén URLs de extremos de API
- En la barra de búsqueda de Workday, escribe
View API Clients
y selecciónalo. - En API Clients for Integrations, busca el
Google SecOps Client
que creaste. - Copia y guarda los siguientes detalles:
- Extremo del token: Es la URL a la que enviarás una solicitud para obtener un token de acceso.
- Extremo de la API de REST de Workday: La URL que usarás para configurar la integración con Google SecOps.
Genera un token de acceso de OAuth
Usa curl o un cliente HTTP similar para enviar una solicitud POST al extremo 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}"
Esto devolverá un token de acceso (por ejemplo,
"access_token": "abcd1234"
).Copia y guarda el token de acceso.
Configura feeds
Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:
- Configuración de SIEM > Feeds
- Centro de contenido > Paquetes de contenido
Configura feeds en Configuración del SIEM > Feeds
Para configurar un feed, sigue estos pasos:
- Ve a Configuración del SIEM > Feeds.
- Haz clic en Agregar feed nuevo.
- En la siguiente página, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
Workday Logs
). - Selecciona API de terceros como el Tipo de origen.
- Selecciona el tipo de registro Workday.
- Haz clic en Siguiente.
- Especifica valores para los siguientes parámetros de entrada:
- Nombre de host de la API: Es la URL de tu extremo de la API de REST de Workday.
- Tenant: Es el último elemento de la ruta de extremo de API de Workday que identifica tu instancia.
- Token de acceso: Es el token de acceso de OAuth.
- Haz clic en Siguiente.
- Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Configura feeds desde el Centro de contenido
Especifica valores para los siguientes campos:
- Nombre de host de la API: Es el FQDN de tu extremo de API de REST de Workday.
- Tenant: Es el último elemento de la ruta de acceso de tu extremo de la API de Workday que identifica tu instancia.
- Token de acceso: Es el token de acceso de OAuth.
Opciones avanzadas
- Nombre del feed: Es un valor completado previamente que identifica el feed.
- Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
- Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
- Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.
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 la época. |
businessTitle |
read_only_udm.entity.entity.user.title |
Se asigna directamente desde el campo businessTitle en el registro sin procesar. |
descriptor |
read_only_udm.entity.entity.user.user_display_name |
Se asigna directamente desde el campo descriptor en el registro sin procesar. |
Employee_ID |
read_only_udm.entity.entity.user.employee_id |
Se asigna directamente desde el campo Employee_ID en el registro sin procesar. |
Employee_ID |
read_only_udm.entity.metadata.product_entity_id |
Se asigna directamente desde el campo Employee_ID en el 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 en el registro sin procesar, se cambia el nombre a empmanager.user_display_name y, luego, se combina en managers . |
gopher-supervisor.id |
read_only_udm.entity.entity.user.managers.product_object_id |
Se asigna directamente desde el campo gopher-supervisor.id en el registro sin procesar, se cambia el nombre a empmanager.product_object_id y, luego, se combina en managers . |
gopher-supervisor.primaryWorkEmail |
read_only_udm.entity.entity.user.managers.email_addresses |
Se asigna directamente desde el campo gopher-supervisor.primaryWorkEmail en el registro sin procesar y, luego, se combina en 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 dentro del array gopher-time-off en el 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 dentro del array gopher-time-off en el registro sin procesar. |
Hire_Date |
read_only_udm.entity.entity.user.hire_date |
Se analiza como una fecha del campo Hire_Date en el registro sin procesar. |
id |
read_only_udm.entity.metadata.product_entity_id |
Se asigna directamente desde el campo id en el registro sin procesar cuando está presente. |
Job_Profile |
read_only_udm.entity.entity.user.title |
Se asigna directamente desde el campo Job_Profile en el 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 en el 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 en el registro sin procesar. |
location.descriptor |
read_only_udm.entity.entity.location.city |
Se asigna directamente desde el campo location.descriptor en el registro sin procesar, se cambia el nombre a _location.city y, luego, a entity.entity.location.city . |
primarySupervisoryOrganization.descriptor |
read_only_udm.entity.entity.user.department |
Se asigna directamente desde el campo primarySupervisoryOrganization.descriptor en el registro sin procesar. |
primaryWorkEmail |
read_only_udm.entity.entity.user.email_addresses |
Se asigna directamente desde el campo primaryWorkEmail en el registro sin procesar. |
primaryWorkPhone |
read_only_udm.entity.entity.user.phone_numbers |
Se asigna directamente desde el campo primaryWorkPhone en el registro sin procesar. |
Termination_Date |
read_only_udm.entity.entity.user.termination_date |
Se analiza como una fecha del campo Termination_Date en el registro sin procesar. |
Work_Email |
read_only_udm.entity.entity.user.email_addresses |
Se asigna directamente desde el campo Work_Email en el 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? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.