Cómo recopilar registros de Auth0

Se admite en los siguientes países:

Descripción general

Este analizador extrae eventos de registro de Auth0 de mensajes con formato JSON. Inicializa los campos de la UDM, analiza la carga útil de JSON, asigna los campos relevantes al esquema de la UDM y clasifica los eventos según el campo type, y establece las acciones de seguridad y los tipos de eventos adecuados.

Antes de comenzar

  • Asegúrate de tener una instancia de Google SecOps.
  • Una cuenta de Auth0 con los permisos necesarios

Configura un feed en Google SecOps para transferir registros de Auth0

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar nueva.
  3. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de Auth0).
  4. Selecciona Webhook como el Tipo de origen.
  5. Selecciona AUTH_ZERO como el Tipo de registro.
  6. Haz clic en Siguiente.
  7. 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 de recursos: Es el espacio de nombres de recursos.
    • Etiquetas de transferencia: Es la etiqueta que se aplica a los eventos de este feed.
  8. Haz clic en Siguiente.
  9. Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
  10. Haz clic en Generate Secret Key para generar una clave secreta que autentique este feed.
  11. Copia y almacena la clave secreta. No podrás volver a ver esta clave secreta. Si es necesario, puedes volver a generar una clave secreta nueva, pero esta acción hace que la clave secreta anterior quede obsoleta.
  12. 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.
  13. Haz clic en Listo.

Crea una clave de API para el feed de webhook

  1. Ve a consola de Google Cloud > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales y selecciona Clave de API.

  3. Restringe el acceso de la clave de API a la API de Google Security Operations.

Especifica la URL del extremo

  1. En tu aplicación cliente, especifica la URL del extremo HTTPS que se proporciona en el feed de webhook.
  2. Para habilitar la autenticación, especifica la clave de API y la clave secreta como parte del encabezado personalizado en 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 consulta 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

  1. Accede al panel de Auth0.
  2. Ve a Supervisión > Flujos.
  3. Haz clic en Crear flujo de registros.
  4. Haz clic en el botón Webhook personalizado y asígnale el nombre que quieras. Por ejemplo: Webhook de Google SecOps.
  5. Configura lo siguiente:
    • URL de la 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 datos específicos del evento de Auth0 y darles el formato que necesites para las SecOps de Google. 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 de UDM de SecOps de Google esperado.

  1. Haz clic en Guardar para crear el webhook.
  2. Activa el evento asociado con el hook (por ejemplo, registra un usuario nuevo o accede).
  3. Verifica que los registros se envíen a Google SecOps. Para ello, revisa 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 asignan directamente desde el campo client_id.
client_name principal.hostname Se asignan directamente desde el campo client_name.
connection security_result.description Se asignan directamente desde el campo connection.
connection_id security_result.rule_id Se asignan directamente desde el campo connection_id.
date metadata.event_timestamp Se analiza desde el campo date con el formato ISO8601.
description metadata.description Se asignan 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 asignan 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 está "migrada".
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 asignan directamente desde el campo details.request.method después de convertirlos a mayúsculas.
details.request.path target.url Se asignan directamente desde el campo details.request.path si details.link no está presente; de lo contrario, se derivan de otros campos (consulta a continuación).
details.response.body.email target.user.email_addresses Se asignan 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 asignan directamente desde el campo details.response.body.nickname.
details.response.body.user_id target.user.userid Se asignan 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 convertirlo en número entero.
details.return_to target.url Se asignan directamente desde el campo details.return_to si details.link y details.request.path no están presentes; de lo contrario, se derivan de otros campos (consulta a continuación).
details.session_id network.session_id Se asignan 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 asignan directamente desde el campo details.to.
hostname target.hostname Se asignan directamente desde el campo hostname.
ip principal.ip Se asignan 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 asignan 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 asignan directamente desde el campo log_id.
metadata.log_type metadata.log_type Se asignan directamente desde el campo log_type.
metadata.product_name metadata.product_name Establece el valor en "AUTH_ZERO".
metadata.vendor_name metadata.vendor_name Establece el valor en "AUTH_ZERO".
metadata.product_event_type metadata.product_event_type Se asignan directamente desde el campo type.
network.http.parsed_user_agent network.http.parsed_user_agent Se analiza del campo user_agent.
network.http.user_agent network.http.user_agent Se asignan 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 ver las 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 asignan directamente desde el campo user_id, details.response.body.user_id o user_name si user_id no está presente.
user_agent network.http.user_agent Se asignan directamente desde el campo user_agent.
user_id target.user.userid Se asignan directamente desde el campo user_id.
user_name target.user.email_addresses Se asignan 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". Establece en "OTP" si extensions.auth.type es "MACHINE" y type es "slo". Se determina mediante una combinación de campos, incluidos type, client_name, ip, hostname y has_user. Consulta el código del analizador para ver las asignaciones específicas.

Cambios

2024-03-07

  • Corrección de errores:
  • Se asignó "data.user_name" a "target.user.email_addresses".
  • Se asignaron "data.details.body.email_verified" y "data.details.body.is_signup" a "security_result.detection_fields".
  • Se asignó "data.details.body.transaction.redirect_uri" a "target.url".

2023-06-19

  • Sin embargo, el analizador se creó recientemente.