Configura campos calculados
Esta guía está dirigida a analistas de seguridad y administradores de SOC que desean automatizar el enriquecimiento de datos en sus operaciones de seguridad. Se explica cómo crear y administrar campos calculados con fórmulas lógicas para derivar valores nuevos de los datos de casos y alertas existentes. Si sigues este método, puedes eliminar la entrada manual de datos y asegurarte de que las métricas fundamentales se actualicen en tiempo real. Si se completa correctamente, se mejoran las capacidades analíticas de la plataforma y se acelera la clasificación de incidentes a través del completado automático de campos.
Con los campos calculados, puedes derivar de forma dinámica nuevos datos en los casos y las alertas de Google Security Operations. Si defines fórmulas lógicas, puedes calcular valores basados en campos personalizados o del sistema existentes. El valor calculado se evalúa y almacena automáticamente en un campo personalizado preexistente seleccionado por el usuario (etiquetado como Campo objetivo) en tiempo real.
Casos de uso habituales
En las siguientes situaciones, se representan las formas más frecuentes en que las organizaciones aprovechan los campos calculados para mejorar la eficiencia operativa y la claridad de los datos.
Puntuación de riesgo automatizada
- Objetivo: Clasificar los casos según el volumen de eventos o los niveles de prioridad
- Valor: Estandariza la clasificación y garantiza que el equipo vea de inmediato los incidentes de alto riesgo.
Normalización de datos
- Objetivo: Marcar las alertas como Prueba o Producción según las convenciones de nombres.
- Valor: Reduce el ruido, ya que permite que los analistas filtren los datos de prueba no críticos de su vista principal.
Terminología clave
- Fórmula: Es una expresión lógica basada en texto que defines con funciones, operadores y referencias de campos para calcular un valor.
- Campo de destino: Es un campo personalizado existente (tipo Texto libre) en el que se almacena el cálculo del resultado de la fórmula.
- Dependencias: Son los campos a los que se hace referencia en tu fórmula. Cuando cambia el valor de un campo de dependencia, el Campo calculado se vuelve a evaluar de forma síncrona.
Antes de comenzar
Antes de crear un cálculo, asegúrate de que tu entorno cumpla con los siguientes requisitos técnicos:
- Permisos: Debes tener acceso de administrador al menú Configuración y permisos para administrar los datos de casos.
- Verificación del entorno: Asegúrate de tener campos personalizados existentes y activos (de tipo Texto libre) para que actúen como campos de destino.
Asegúrate de tener campos personalizados existentes para usarlos como campos de destino en tu sistema. De lo contrario, sigue estos pasos:
- Ve a Configuración > Datos del caso > Campos personalizados.
- Crea un campo personalizado nuevo y establece el tipo en Texto libre.
Para obtener más información sobre los campos personalizados, consulta Cómo crear un campo personalizado.
Restricciones técnicas y reglas de validación
Antes de definir un cálculo, asegúrate de que los campos y la lógica de destino cumplan con estas restricciones del sistema. Estas reglas rigen la forma en que el motor de Google SecOps valida y conserva los resultados de las fórmulas.
Criterios de validación de campos
El motor de cálculo aplica estrictamente los siguientes requisitos para cualquier campo designado como Campo de destino:
- Tipo de datos: El campo debe ser de tipo Texto libre.
- Estado operativo: El campo debe estar Activo; el sistema no puede escribir en campos borrados o no válidos.
- Asignación de dependencias: Para evitar la lógica circular, un campo no puede ser un objetivo si ya es una dependencia de otro campo calculado.
Alcance de campos
Cuando creas un campo personalizado con un alcance de Both, el sistema genera entradas únicas para cada contexto. Esto te permite mantener una lógica independiente para los casos y las alertas dentro de la misma categoría lógica.
En el menú Campo objetivo, debes seleccionar el alcance específico pertinente para tu fórmula:
- Alcance del caso: Se etiqueta como
CaseCustom.YourField(por ejemplo,CaseCustom.RiskLevel) - Alcance de la alerta: Se etiqueta como
AlertCustom.YourField(por ejemplo,AlertCustom.RiskLevel)
Crea y administra campos calculados
En esta sección, se describe cómo definir un cálculo nuevo y abordar problemas comunes durante el proceso de configuración.
Crea un cálculo nuevo
Para crear un cálculo nuevo, haz lo siguiente:
- Ve a Configuración > Datos del caso > Campos calculados.
- Haz clic en Agregar Agregar.
- En el campo Nombre del campo calculado, ingresa un nombre y una descripción únicos para tu cálculo.
En el área Campo objetivo, selecciona el Campo personalizado existente en el que se almacenará el resultado.
- Falla prevista: El campo seleccionado no aparece en el menú.
- Paso correctivo: Verifica que el campo personalizado esté activo, configurado como Texto libre y que no sea una dependencia para otro cálculo.
En el editor de texto, crea tu fórmula con las funciones, los operadores y la sintaxis admitidos. Crea una expresión lógica (por ejemplo,
IF ([case.priority] == "High") THEN "Urgent" ELSE "Standard"). Para obtener más detalles, consulta Lenguaje y sintaxis de fórmulas.Haz clic en Guardar.
- Falla anticipada: El sistema rechaza el guardado y muestra un error destacado en rojo.
- Paso correctivo: Verifica si hay errores de sintaxis, como la falta de paréntesis alrededor de las condiciones
IFo las palabras clave en minúsculas.
Accede a recursos y referencias avanzados
Las fórmulas deben seguir reglas estrictas de gramática y distinción entre mayúsculas y minúsculas para todos los operadores y funciones integrados. Usa las siguientes especificaciones técnicas para asegurarte de que tus cálculos sean válidos.
Ejemplos de fórmulas
En las siguientes plantillas, se muestra cómo combinar funciones y operadores para automatizar el enriquecimiento de datos. Puedes copiar y adaptar estos fragmentos para que coincidan con los nombres de los campos y los requisitos de tu organización específicos.
Ejemplo 1: Cómo establecer un nivel de riesgo
Usa esta fórmula para categorizar los casos según las palabras clave específicas que se encuentran en el título del caso.
- Campo objetivo:
CaseCustom.risk_level(texto) - Objetivo: Asignar automáticamente un estado "Alto" a los incidentes urgentes
Fórmula:
IF (CONTAINS([case.name], "urgent")) THEN "High" ELSE "Medium"
Ejemplo 2: Marcar alertas de prueba
Esta lógica identifica y etiqueta los datos de prueba para ayudar a los analistas a filtrar sus vistas principales y mantener el enfoque en los incidentes de producción.
- Campo objetivo:
AlertCustom.is_test(texto) - Objetivo: Detectar el sufijo
-TESTo la cadenaTESTen el nombre de una alerta Fórmula:
IF (CONTAINS([alert.name], "TEST") OR ENDS_WITH([alert.name], "-TEST")) THEN "TRUE" ELSE "FALSE"
Ejemplo 3: Combinación de condiciones
En este ejemplo, se muestra la lógica anidada para priorizar las opiniones según el volumen de eventos y los niveles de prioridad existentes.
- Campo objetivo:
CaseCustom.review_status(texto) - Objetivo: Activar una revisión manual solo cuando la longitud del registro sea significativa y la prioridad no sea
Low. Fórmula:
IF (LENGTH(\[AlertCustom.event\_details\]) \> 100 AND NOT IS(\[case.priority\], "Low")) THEN "Needs Review" ELSE "Auto-Closed"
Lenguaje y sintaxis de las fórmulas
El motor de cálculo distingue mayúsculas de minúsculas para todos los operadores, las palabras clave y las funciones integrados. Debes escribir las palabras clave (por ejemplo, IF, THEN, ELSE, AND, OR, NOT) y los nombres de las funciones (por ejemplo, CONTAINS, LENGTH, STARTS_WITH, ENDS_WITH, IS, IS_NOT, DOES_NOT_CONTAIN) en mayúsculas. Sin embargo, las pruebas de cadenas de texto dentro de las funciones y los operadores de igualdad no distinguen mayúsculas de minúsculas. Por ejemplo, si buscas "phishing", se encontrará correctamente "PHISHING" o "Phishing".
Tipos de datos y literales
Un literal es un valor fijo que se usa en las expresiones. Te recomendamos que te asegures de que tus operaciones y argumentos de funciones usen tipos compatibles.
| Tipo | Sintaxis y reglas | Ejemplo |
|---|---|---|
| STRING | Texto entre comillas dobles. | "critical", "N/A" |
| NUMBER | Son números enteros o decimales. | 100, 3.14 |
| BOOLEAN | Debe estar en mayúsculas. | VERDADERO, FALSO |
| NULL | Representa un valor vacío. | NULL |
Referencias de campos
Para usar el valor de otro campo, encierra el nombre del campo entre corchetes, como [object.field_name].
- Regla de sintaxis: Debes usar un prefijo con las referencias de campo. Debes usar un prefijo (por ejemplo,
case.oAlertCustom.) seguido de un punto y el nombre del campo. El nombre del campo puede contener letras, números, guiones bajos y espacios. Por ejemplo:[case.name],[alert.priority],[AlertCustom.my_custom_field]. - Puedes usar estos campos del sistema:
case.name,case.stage,case.priority,alert.name,alert.priorityyalert.rule_generator. - Puedes hacer referencia a todos los campos personalizados definidos por el usuario.
- Una fórmula de campo calculado no puede hacer referencia a otro campo calculado.
Operadores
Usar operadores para comparaciones y operaciones lógicas Usa paréntesis () para anular la precedencia predeterminada y agrupar expresiones
- Operadores de comparación:
==,!=,>,>=,<,<= - Operadores lógicos:
AND,OR,NOT - Precedencia de operadores:
NOT,>,>=,<,<=,AND,OR,
Expresiones condicionales
El sistema admite lógica condicional con la sintaxis IF (condition) THEN expression1 ELSE expression2. La parte ELSE es opcional. Si la omites y la condición es FALSE, el resultado se establece de forma predeterminada en NULL.
La condición debe ser una expresión que se evalúe como TRUE o FALSE.
Por ejemplo, IF ( [CaseCustom.score] > 75 ) THEN "High Risk" ELSE "Low Risk".
Funciones
Las funciones son operaciones predefinidas que deben estar completamente en mayúsculas. En la siguiente tabla, se enumeran las funciones compatibles para la manipulación y evaluación de datos.
| Función | Descripción | Sintaxis | Tipo de datos que se devuelve |
|---|---|---|---|
CONTAINS(field, substring) |
Comprueba si un campo de texto contiene una subcadena (no distingue mayúsculas de minúsculas) | CONTAINS([case.name], "phishing") |
BOOLEAN |
DOES_NOT_CONTAIN(field, substring) |
Verifica si un campo de texto no contiene una subcadena (no distingue mayúsculas de minúsculas) | DOES_NOT_CONTAIN([case.name], "test") |
BOOLEAN |
LENGTH(field) |
Devuelve la cantidad de caracteres en un campo. | LENGTH([case.name]) |
NUMBER |
STARTS_WITH(field, prefix) |
Verifica si el campo comienza con un prefijo (no distingue mayúsculas de minúsculas) | STARTS_WITH([CaseCustom.hostname], "srv-") |
BOOLEAN |
ENDS_WITH(field, suffix) |
Verifica si el campo termina con un sufijo (no distingue mayúsculas de minúsculas). | ENDS_WITH([AlertCustom.filename], ".exe") |
BOOLEAN |
IS(field, literal) |
Verifica si el valor del campo es igual al literal (no distingue mayúsculas de minúsculas) | IS([alert.priority], "High") |
BOOLEAN |
IS_NOT(field, literal) |
Comprueba si el valor del campo NO es igual al literal (no distingue mayúsculas de minúsculas). | IS_NOT([alert.priority], "Low") |
BOOLEAN |
Palabras clave e identificadores reservados
El motor de cálculo reserva palabras específicas para operaciones y funciones lógicas. No puedes usar estos términos como nombres de campos personalizados ni otros identificadores dentro de una fórmula:
- Lógica:
AND, OR, NOT, IF, THEN, ELSE - Valores:
NULL, TRUE, FALSE - Funciones:
CONTAINS, LENGTH, STARTS_WITH, ENDS_WITH, IS, IS_NOT, DOES_NOT_CONTAIN
Compatibilidad de tipos de datos
Para garantizar una evaluación exitosa, verifica que todas las operaciones y los argumentos de funciones usen tipos compatibles. Los tipos admitidos incluyen STRING, NUMBER, BOOLEAN y NULL.
El resultado final de la fórmula debe coincidir con el tipo esperado del campo objetivo. Dado que los campos objetivo se limitan a "Texto libre", tu fórmula debe resolverse en última instancia como una cadena o un valor que se pueda convertir de forma implícita al formato del objetivo.
Formato y espacio en blanco
Si bien los espacios, las tabulaciones y los saltos de línea se ignoran, por lo general, entre los tokens, son estrictamente necesarios para separar las palabras clave de los identificadores. Usa los espacios en blanco de forma estratégica para estructurar fórmulas complejas de varias líneas y, así, mejorar la capacidad de mantenimiento y la revisión por pares.
Escribe fórmulas eficaces
Si bien el motor de cálculo es flexible con los espacios en blanco, sigue estos estándares de formato para evitar errores de lógica y simplificar la solución de problemas.
- Agrupación explícita: Usa paréntesis para definir el orden de las operaciones con claridad, incluso cuando se use la precedencia estándar. Esto ayuda a evitar la ambigüedad lógica.
- Estructura visual: Aplica espacios alrededor de los operadores (
==, AND, OR) e inserta saltos de línea para las sentenciasIF/THENanidadas para que la lógica sea fácil de analizar. Validación de tipo: Verifica siempre que el resultado final de tu fórmula coincida con el tipo esperado del campo de destino para evitar errores de evaluación.
IF ( (IS([CaseCustom.event_count], "100") AND NOT IS([case.priority], "Low")) OR CONTAINS([case.name], "Critical") ) THEN "Needs Immediate Review" ELSE "Standard Review"
Soluciona problemas
En esta sección, se describen las expectativas de rendimiento y se proporcionan soluciones de autoservicio para los problemas de implementación comunes que se producen cuando se crean o administran fórmulas.
Latencia y límites
Los campos calculados se evalúan de forma síncrona cada vez que cambia un campo de dependencia. Para mantener el rendimiento del sistema, un campo calculado no puede hacer referencia a otro campo calculado. El sistema bloquea estas dependencias encadenadas para evitar la recursión y las demoras en el procesamiento.
Corrección de errores
Cuando escribes fórmulas de forma manual, pueden ocurrir errores debido a discrepancias de sintaxis o de tipo de datos. Usa la siguiente tabla para asignar códigos de error específicos relacionados con el recorrido a sus correcciones exactas y prácticas.
| Tipo de error | Problema | Corregir |
|---|---|---|
| Sintaxis | La fórmula incumple las reglas gramaticales, como paréntesis que no coinciden o palabras clave en minúsculas. | Encierra todas las condiciones IF entre paréntesis y verifica que todas las palabras clave estén en MAYÚSCULAS. |
| Validación | La fórmula hace referencia a un campo desconocido (por ejemplo, [\case.typo]) o genera una discrepancia de tipo. | Verifica los nombres de los campos entre corchetes y confirma que el resultado coincida con el tipo de campo objetivo. |
| Evaluación | La fórmula es válida, pero falla durante la ejecución y, a menudo, muestra #ERROR!. | Verifica si hay problemas de tiempo de ejecución, como pasar un valor que no sea de cadena a una función como LENGTH(). |
Cómo modificar o borrar campos de destino
El sistema protege de forma activa los campos en los que se basan tus fórmulas para mantener la integridad de los datos. Si intentas borrar o modificar un campo personalizado que se usa como campo de destino, el sistema bloqueará la acción y mostrará una advertencia que indica que se está usando de forma activa en un campo calculado.
Validación y prueba
Después de guardar un cálculo nuevo, navega a un caso o una alerta y actualiza un campo de dependencia para verificar los resultados. Confirma que el campo de destino se complete con el valor esperado en tiempo real.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.