Soluciona problemas de las reglas de detección

Compatible con:

Los errores de tiempo de ejecución pueden ocurrir durante la ejecución de una regla y evitar que se ejecute correctamente. Este documento te ayuda a solucionar algunos problemas comunes del entorno de ejecución.

  • Puedes evitar los errores de tiempo de ejecución probando tus reglas antes de la implementación. Haz clic en Ejecutar prueba en el editor de reglas. Si se detecta un error, sigue el vínculo del error para obtener más detalles.

  • Puedes priorizar la prueba de cada regla en los períodos que tengan la mayor cantidad de datos antes de la implementación.

  • Si se produce un error durante la ejecución de la regla, sigue el vínculo de error en la página Detecciones para obtener detalles.

Errores de sintaxis y lógica de consultas

Estos errores se producen cuando la estructura de la consulta no es válida, es demasiado compleja o usa tipos de datos incompatibles.

Mensaje de error Causa subyacente Solución
Too many `OR` and `AND` operations La consulta contiene expresiones o lógica con un nivel de anidamiento profundo que supera los límites de espacio de la pila.

Simplifica las condiciones de la regla.

Divide la lógica compleja en partes más pequeñas.

Query is too long

Este error se produce cuando las expresiones anidadas de forma profunda o las estructuras de consulta complejas superan los límites de la pila de llamadas. No se debe a la cantidad de caracteres de la regla.

Entre las causas comunes, se incluyen las cadenas intercaladas largas de comparaciones AND o OR, las condiciones de unión OR de varias ramas en varios eventos y las expresiones if() con un nivel de anidamiento profundo.

  • Reemplaza las cadenas largas de OR o AND intercaladas, como direcciones IP, dominios, hashes, rangos CIDR o expresiones regulares codificados, por tablas de datos. Las tablas de datos no aumentan la profundidad de anidamiento de las expresiones.
  • Simplifica las condiciones de unión de OR entre eventos en las reglas de varios eventos, por ejemplo, usando strings.coalesce() o separando rutas de unión distintas.
  • Reemplaza las cadenas if() con un nivel de anidamiento profundo en la sección outcome por una búsqueda en la tabla de datos.
  • Divide la lógica de detección no relacionada en reglas independientes o reglas de detección compuestas.
Accessing a new field that did not exist for this time range La regla hace referencia a un campo que se agregó recientemente al esquema, pero la regla se ejecuta en un período en el que ese campo no existía.

Ajusta el período para que comience después de que el campo esté presente.

Modifica la regla para controlar los casos en los que el campo sea nulo o falte.

Invalid subnet CIDR Algunas funciones encontraron un rango de enrutamiento entre dominios sin clases (CIDR) que no se puede analizar Verifica el formato de los rangos CIDR en la regla.
Invalid IP address Algunas funciones encontraron una dirección IP con formato incorrecto. Asegúrate de que el valor del campo contenga un formato de dirección IP válido
Map access for reading label does not support duplicate map keys Algunas funciones intentaron acceder a elementos de una estructura similar a un mapa (por ejemplo, campos adicionales) en la que existen claves duplicadas (no se permite en la operación).

Investiga la fuente de datos para encontrar claves duplicadas.

Adapta la lógica de las reglas para controlar esta característica de los datos.

Invalid regular expression La expresión regular que se usa en funciones como re.regex() tiene un formato incorrecto.

Corrige la sintaxis de la expresión regular.

Invalid re.replace() Uso incorrecto de re.regex(), a menudo debido a una discrepancia entre las subexpresiones entre paréntesis y las referencias en la cadena de reemplazo. Asegúrate de que el esquema de reescritura en re.regex() coincida con las subexpresiones entre paréntesis de la expresión regular.
Integer overflow in sum() aggregation La suma de los valores supera el límite máximo para los números enteros estándar. Convierte el campo en un tipo de punto flotante antes de sumar (por ejemplo, usa sum(0.0 + $e.field)).
Cannot complete [arithmetic/mod] operation between unsigned and signed integer La regla intenta realizar operaciones aritméticas (+, -, *) o de módulo (%) entre diferentes tipos de números enteros.

Usa cast.as_int() o cast.as_uint() para convertir un operando de modo que coincida con el otro. Se requiere una conversión explícita para el operador de módulo (%), que solo acepta números enteros. Para las operaciones +, - o *, también puedes forzar que la constante de número entero se comporte como un número de punto flotante con un literal de punto flotante, como 2.0 o 100.0, o una coerción de división, como (2/1), en expresiones sin otros operadores / en la misma línea.

Esta restricción de escritura se produce cuando una expresión combina literales de números enteros con signo (INT64) con campos de números enteros sin signo (UINT64) del modelo de datos unificados (UDM), como network.received_bytes, network.sent_bytes y principal.file.size. La restricción se aplica a las secciones events y outcome, incluso dentro de las agregaciones sum() o max(). Una regla con aritmética de números enteros con signo y sin signo combinados podría guardarse sin un error de sintaxis y fallar solo en el entorno de ejecución o cuando pruebes la regla. Para obtener más información, consulta Aritmética con campos de eventos sin firma.

Límites de recursos y errores de rendimiento

Estos errores indican que la consulta es demasiado pesada para que el sistema la procese.

Mensaje de error Causa subyacente Solución
Request was throttled, please try again later La regla requiere más memoria o potencia de procesamiento de la asignada (a menudo debido a uniones complejas, agregaciones grandes o filtrado insuficiente). Agrega filtros más específicos a la sección de eventos.
Not enough memory for aggregation Se superó el aggregate_memory_limit. Optimiza las agregaciones reduciendo la cantidad de claves en la sección "match".
Spilled bytes exceed limit La consulta intenta procesar demasiados eventos. Optimiza la consulta agregando filtros, como por metadata.event_type.
Your query resource usage is exceeding its allocation El administrador de recursos canceló la consulta porque usó demasiados recursos. Optimiza la consulta agregando filtros, como por metadata.event_type.

Errores del sistema y de acceso a los datos

Por lo general, estos errores son transitorios o están relacionados con el almacenamiento de datos del backend.

Mensaje de error Causa subyacente Solución
Error reading files Problemas temporales para acceder a los datos subyacentes. Vuelve a intentarlo más tarde. Si el error persiste, comunícate con el equipo de asistencia.
Error reading database Problemas temporales para acceder a los datos subyacentes. Vuelve a intentarlo más tarde. Si el error persiste, comunícate con el equipo de asistencia.
Internal error Un problema transitorio dentro del sistema. Vuelve a intentarlo más tarde. Si el error persiste, comunícate con el equipo de asistencia.
Unknown error Es un mensaje de error predeterminado que se muestra cuando no se define un código de error interno específico. Vuelve a intentarlo más tarde. Si el error persiste, comunícate con el equipo de asistencia.
Request was throttled, please try again later El sistema está bajo una carga pesada. Vuelve a intentarlo más tarde.

Errores de tiempo de ejecución desconocidos

Es posible que encuentres errores de tiempo de ejecución desconocidos que no tengan una descripción. Si esto ocurre, comunícate con el equipo de Atención al cliente de Google SecOps.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.