Recopila registros de Auth0
Descripción general
Este analizador extrae eventos de registro de Auth0 de mensajes con formato JSON. Inicializa los campos del UDM, analiza la carga útil de JSON, asigna los campos pertinentes al esquema del UDM y categoriza los eventos según el campo type, estableciendo las acciones de seguridad y los tipos de eventos adecuados.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps.
- Cuenta de Auth0 con los permisos necesarios
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, Registros de Auth0).
- Selecciona Webhook como el Tipo de origen.
- Selecciona AUTH_ZERO como el Tipo de registro.
- Haz clic en Siguiente.
- Opcional: Especifica valores para los siguientes parámetros de entrada:
- Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como
\n
. - Espacio de nombres del recurso: Es el espacio de nombres del recurso.
- Etiquetas de transferencia: Es la etiqueta que se aplica a los eventos de este feed.
- Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como
- Haz clic en Siguiente.
- Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
- Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.
- Copia y almacena la clave secreta. No podrás volver a ver esta clave secreta. Si es necesario, puedes regenerar una clave secreta nueva, pero esta acción hace que la clave secreta anterior quede obsoleta.
- En la pestaña Detalles, copia la URL del extremo del feed del campo Información del extremo. Debes especificar esta URL de extremo en tu aplicación cliente.
- Haz clic en Listo.
Configura feeds desde el Centro de contenido
Especifica valores para los siguientes campos:
- Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como
\n
.
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.
Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.
Copia y almacena la clave secreta. No podrás volver a ver esta clave secreta. Si es necesario, puedes regenerar una clave secreta nueva, pero esta acción hace que la clave secreta anterior quede obsoleta.
En la pestaña Detalles, copia la URL del extremo del feed del campo Información del extremo. Debes especificar esta URL de extremo en tu aplicación cliente.
Crea una clave de API para el feed del webhook
Ve a Google Cloud consola > Credenciales.
Haz clic en Crear credenciales y selecciona Clave de API.
Restringe el acceso a la clave de API a la API de Chronicle.
Especifica la URL del extremo
- En tu aplicación cliente, especifica la URL del extremo HTTPS que se proporciona en el feed de webhook.
Para habilitar la autenticación, especifica la clave de API y la clave secreta como parte del encabezado personalizado con el siguiente formato:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
Recomendación: Especifica la clave de API como un encabezado en lugar de hacerlo en la URL. Si tu cliente de webhook no admite encabezados personalizados, puedes especificar la clave de API y la clave secreta con parámetros de búsqueda en el siguiente formato:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Reemplaza lo siguiente:
ENDPOINT_URL
: Es la URL del extremo del feed.API_KEY
: Es la clave de API para autenticarse en Google Security Operations.SECRET
: Es la clave secreta que generaste para autenticar el feed.
Configura el webhook de Auth0 para Google SecOps
- Accede al panel de Auth0.
- Ve a Monitoring > Streams.
- Haz clic en Crear transmisión de registros.
- Haz clic en el botón Webhook personalizado y asígnale el nombre que quieras. Por ejemplo, Webhook de Google SecOps.
- Configura lo siguiente:
- URL de carga útil: Ingresa la URL del extremo de API de Google SecOps.
- Content-Type: Establece el encabezado Content-Type en application/json. Esto le indica a Google SecOps el formato de los datos que se envían.
- Opcional: Token de autorización: Configura un secreto para mayor seguridad. Se usará para verificar la autenticidad de las solicitudes de webhook.
Personaliza la carga útil: Puedes personalizar la carga útil que se envía a Google SecOps modificando la categoría del evento. Esto te permite seleccionar puntos de datos específicos del evento de Auth0 y darles el formato necesario para Google SecOps. Consulta la documentación de Auth0 para obtener detalles sobre las variables de contexto y las opciones de secuencias de comandos disponibles. Asegúrate de que la carga útil final cumpla con el formato esperado del UDM de SecOps de Google.
- Haz clic en Guardar para crear el webhook.
- Activa el evento asociado con el gancho (por ejemplo, registrar un usuario nuevo o acceder).
- Para verificar que los registros se envíen a Google SecOps, consulta el feed en la consola de Google SecOps.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
client_id |
principal.asset.product_object_id |
Se asigna directamente desde el campo client_id . |
client_name |
principal.hostname |
Se asigna directamente desde el campo client_name . |
connection |
security_result.description |
Se asigna directamente desde el campo connection . |
connection_id |
security_result.rule_id |
Se asigna directamente desde el campo connection_id . |
date |
metadata.event_timestamp |
Se analizó a partir del campo date con el formato ISO8601. |
description |
metadata.description |
Se asigna directamente desde el campo description . |
details.error |
security_result.detection_fields |
Se asignó desde el campo details.error . La clave es "Error". |
details.error.oauthError |
security_result.detection_fields |
Se asignó desde el campo details.error.oauthError . La clave es "oauthError". |
details.error.type |
security_result.detection_fields |
Se asignó desde el campo details.error.type . La clave es "oauth_error_type". |
details.ipOnAllowlist |
security_result.detection_fields |
Se asignó desde el campo details.ipOnAllowlist . La clave es "ipOnAllowlist". |
details.link |
target.url |
Se asigna directamente desde el campo details.link si está presente; de lo contrario, se deriva de otros campos (consulta a continuación). |
details.request.auth.strategy |
security_result.detection_fields |
Se asignó desde el campo details.request.auth.strategy . La clave es "strategy". |
details.request.body.app_metadata.blockedReason |
security_result.detection_fields |
Se asignó desde el campo details.request.body.app_metadata.blockedReason . La clave es "blockedReason". |
details.request.body.app_metadata.customer_id |
target.user.product_object_id |
Se asigna directamente desde el campo details.request.body.app_metadata.customer_id . |
details.request.body.app_metadata.migrated |
security_result.detection_fields |
Se asignó desde el campo details.request.body.app_metadata.migrated . La clave se "migró". |
details.request.channel |
security_result.detection_fields |
Se asignó desde el campo details.request.channel . La clave es "channel". |
details.request.method |
network.http.method |
Se asigna directamente desde el campo details.request.method después de convertirlo a mayúsculas. |
details.request.path |
target.url |
Se asigna directamente desde el campo details.request.path si details.link no está presente; de lo contrario, se deriva de otros campos (consulta a continuación). |
details.response.body.email |
target.user.email_addresses |
Se asigna directamente desde el campo details.response.body.email . |
details.response.body.email_verified |
security_result.detection_fields |
Se asignó desde el campo details.response.body.email_verified . La clave es "email_verified". |
details.response.body.nickname |
target.user.user_display_name |
Se asigna directamente desde el campo details.response.body.nickname . |
details.response.body.user_id |
target.user.userid |
Se asigna directamente desde el campo details.response.body.user_id . |
details.response.statusCode |
network.http.response_code |
Se asigna directamente desde el campo details.response.statusCode después de la conversión a número entero. |
details.return_to |
target.url |
Se asigna directamente desde el campo details.return_to si no están presentes details.link y details.request.path ; de lo contrario, se deriva de otros campos (consulta a continuación). |
details.session_id |
network.session_id |
Se asigna directamente desde el campo details.session_id . |
details.stats.loginsCount |
additional.fields |
Se asignó desde el campo details.stats.loginsCount . La clave es "loginsCount". |
details.requiresVerification |
security_result.detection_fields |
Se asignó desde el campo details.requiresVerification . La clave es "requiresVerification". |
details.to |
target.user.email_addresses |
Se asigna directamente desde el campo details.to . |
hostname |
target.hostname |
Se asigna directamente desde el campo hostname . |
ip |
principal.ip |
Se asigna directamente desde el campo ip . |
js_data.audience |
target.url |
Se asigna directamente desde el campo js_data.audience si no están presentes details.link , details.request.path y details.return_to . |
js_data.details.body.email_verified |
security_result.detection_fields |
Se asignó desde el campo js_data.details.body.email_verified . La clave es "email_verified". |
js_data.details.body.is_signup |
security_result.detection_fields |
Se asignó desde el campo js_data.details.body.is_signup . La clave es "is_signup". |
js_data.details.body.transaction.redirect_uri |
target.url |
Se asigna directamente desde el campo js_data.details.body.transaction.redirect_uri si no están presentes details.link , details.request.path , details.return_to y js_data.audience . |
js_data.scope |
security_result.detection_fields |
Se asignó desde el campo js_data.scope . La clave es "scope". |
js_data.tracking_id |
security_result.detection_fields |
Se asignó desde el campo js_data.tracking_id . La clave es "tracking_id". |
log_id |
metadata.product_log_id |
Se asigna directamente desde el campo log_id . |
metadata.log_type |
metadata.log_type |
Se asigna directamente desde el campo log_type . |
metadata.product_name |
metadata.product_name |
Se establece en "AUTH_ZERO". |
metadata.vendor_name |
metadata.vendor_name |
Se establece en "AUTH_ZERO". |
metadata.product_event_type |
metadata.product_event_type |
Se asigna directamente desde el campo type . |
network.http.parsed_user_agent |
network.http.parsed_user_agent |
Se analizó a partir del campo user_agent . |
network.http.user_agent |
network.http.user_agent |
Se asigna directamente desde el campo user_agent . |
security_result.action |
security_result.action |
Se determina según el campo type (ALLOW o BLOCK). Consulta el código del analizador para obtener asignaciones específicas. |
strategy |
security_result.detection_fields |
Se asignó desde el campo strategy . La clave es "strategy". |
strategy_type |
security_result.detection_fields |
Se asignó desde el campo strategy_type . La clave es "strategy_type". |
target.user.email_addresses |
target.user.email_addresses |
Se asigna directamente desde el campo user_name si es una dirección de correo electrónico; de lo contrario, se deriva de otros campos (consulta más arriba). |
target.user.userid |
target.user.userid |
Se asigna directamente desde el campo user_id , o details.response.body.user_id o user_name si user_id no está presente. |
user_agent |
network.http.user_agent |
Se asigna directamente desde el campo user_agent . |
user_id |
target.user.userid |
Se asigna directamente desde el campo user_id . |
user_name |
target.user.email_addresses |
Se asigna directamente desde el campo user_name . Se establece en "MACHINE" si security_result.action es "ALLOW" y type es "slo", "sapi", "s", "ss" o "ssa". Se establece en "OTP" si extensions.auth.type es "MACHINE" y type es "slo". Se determina a partir de una combinación de campos, incluidos type , client_name , ip , hostname y has_user . Consulta el código del analizador para obtener asignaciones específicas. |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.