Usar el creador de expresiones

Disponible en:

El creador de expresiones te permite analizar y modificar resultados JSON para usarlos en acciones posteriores. El creador de expresiones genera varias funciones de transformación dinámica que puedes encadenar, previsualizar y probar, lo que te ofrece una experiencia interactiva para transformar y analizar resultados de acciones sin procesar.

Después de seleccionar un marcador de posición para el parámetro en la acción de la guía, puedes usar los resultados JSON. Estos resultados te proporcionan información completa devuelta por la acción, que puedes usar en acciones y flujos de trabajo posteriores. Para obtener más información, consulta Casos prácticos de Creador de expresiones.

Ver el Creador de expresiones

Este ejemplo muestra datos potenciales y no refleja resultados en tiempo real. Los datos reales pueden ser diferentes y pueden contener más o menos campos. Si un analista conoce campos adicionales que se devolverán en el tiempo de ejecución, puede introducir la ruta de clave correspondiente en el campo sintaxis.

Functions

Se admiten las siguientes funciones de tubería:

  • Primera (x): devuelve los primeros X elementos de una matriz.
    Ejemplo: alerts | First(2) (si alerts es [{"id": "A"}, {"id": "B"}, {"id": "C"}], devuelve [{"id": "A"}, {"id": "B"}])
  • Últimos (x): devuelve los últimos X elementos de una matriz.
    Ejemplo: alerts | Last(1) (si alerts es [{"id": "A"}, {"id": "B"}, {"id": "C"}], devuelve [{"id": "C"}])
  • Mínimo (RutaDeClave): devuelve el elemento con el valor mínimo de una matriz. Si se proporciona un parámetro keyPath, devuelve el objeto con el valor mínimo en la ruta especificada.
    Ejemplo: alerts | Min("score") (si alerts contiene una lista de objetos con un campo score, devuelve el objeto con la puntuación más baja)
  • Máximo (RutaDeClave): devuelve el elemento con el valor máximo de una matriz. Si se proporciona un parámetro keyPath, devuelve el objeto con el valor máximo en la ruta especificada.
    Ejemplo: alerts | Max("score") (si alerts contiene una lista de objetos con un campo score, devuelve el objeto con la puntuación más alta)
  • Filtro (ConditionKey, Operator, Value): filtra una matriz de objetos y devuelve solo los objetos que coinciden con una condición en un campo especificado.
    • ConditionKey el campo de cada objeto que se va a evaluar en función de la condición.
    • Operador: operador que se va a usar en la condición.
      • Para la entrada de cadenas: =, !=, in y not in.
      • Para introducir números o fechas: =, !=, >, >=, < y <=.
  • Valor: valor que se debe comprobar en la condición.
    Ejemplo: alerts | Filter("severity", "=", "HIGH") (Devuelve todas las alertas en las que el campo severity es "ALTO")
  • DateFormat ("pattern"): da formato a una fecha con un patrón determinado (el patrón se especifica como parámetro) con el siguiente formato: YYYY-MM-DDThh:mm:ssZ.
    Ejemplo: timestamp_field | DateFormat("yyyy/MM/ddTHH:mm:ss") (si timestamp_field es "2024/07/20T10:00:00Z", devuelve "2024-07-20 10:00:00")
  • Count (): devuelve el número de elementos de la matriz de entrada.
    Ejemplo: alerts | Count() (si alerts es un array con 4 elementos, devuelve 4)
  • OrderBy ("keyPath", "direction"): ordena una matriz de objetos en función de los valores de una ruta de clave especificada.
    Ejemplo: alerts | OrderBy("score", "DESC") (ordena la matriz alerts por score en orden descendente)
  • toLower (): convierte una entrada a minúsculas.
    Ejemplo: status_field | toLower() (si status_field es "OPEN", devuelve "open")
  • toUpper (): convierte una entrada en caracteres en mayúsculas.
    Ejemplo: severity_field | toUpper() (si severity_field es "high", devuelve "HIGH")
  • Sustituir ("x", "y"): sustituye una subcadena de una cadena por otra cadena.
    Ejemplo: message_field | Replace("World", "Universe") (si message_field es "Hello World", devuelve "Hello Universe")
  • Distinct (): elimina los valores duplicados de una matriz. En el caso de las matrices de objetos, realiza una comparación profunda para identificar los objetos duplicados.
    Ejemplo: [10, 20, 30, 20, 40] | Distinct() (devuelve [10, 20, 30, 40])
  • getByIndex ("index"): obtiene los elementos de una matriz por un índice especificado o una lista de índices.
    Ejemplo: alerts | getByIndex("0") (devuelve el primer elemento de la matriz alerts)
    Ejemplo: alerts | getByIndex("0,2") (devuelve el primer y el tercer elemento de la matriz alerts)
  • split ("delimitador"): divide una cadena en una matriz de subcadenas mediante un delimitador especificado.
    Ejemplo: "tag1,tag2,tag3" | split(",") (devuelve ["tag1", "tag2", "tag3"])
  • join ("delimitador"): concatena una matriz de cadenas en una sola cadena, usando un delimitador especificado.
    Ejemplo: ["malware", "critical"] | join(" & ") (devuelve "malware & critical")
  • trim (): elimina los espacios iniciales y finales de una cadena.
    Ejemplo: " hello world " | trim() (devuelve "hello world")
  • trimChars ("caracteres"): elimina los caracteres especificados del principio y del final de una cadena. Los espacios iniciales y finales siempre se eliminan, aunque no se especifiquen explícitamente.
    Ejemplo: "--TEST--ABC--" | trimChars("-") (devuelve "TEST--ABC")
  • substring (inicio, fin): extrae una subcadena de una cadena, usando un índice de inicio especificado y un índice de fin opcional.
    Ejemplo: "Hello World" | substring(0, 5) (devuelve "Hello")
    Ejemplo: "Hello World" | substring(6) (devuelve "World")
  • incrementValue (valor): aumenta un valor numérico en una cantidad especificada. Si no se especifica ningún importe, el valor se incrementa en 1.
    Ejemplo: score_field | incrementValue(5) (si score_field es 90, devuelve 95)
    Ejemplo: counter_field | incrementValue() (si counter_field es 10, devuelve 11)
  • setIfEmpty ("defaultValue"): devuelve el valor predeterminado proporcionado si el valor de entrada está vacío.
    Ejemplo: optional_field | setIfEmpty("N/A") (si optional_field está vacío, devuelve "N/A"; de lo contrario, devuelve el valor de optional_field)
  • toUnixtime (): convierte una cadena de fecha y hora legible por humanos (por ejemplo, "2014/03/12T13:37:27Z" o "2014-03-12T13:37:27+01:00") en una marca de tiempo UNIX, expresada en UTC.
    Ejemplo: "2024-07-20T10:00:00Z" | toUnixtime() (devuelve 1721469600)
  • ifThenElse ("operador", "valorComparado", "resultadoVerdadero", "resultadoFalso"): evalúa una condición y devuelve la primera expresión si es verdadera. De lo contrario, devuelve la segunda expresión.
    Ejemplo: severity_field | ifThenElse("=", "HIGH", "High Priority", "Normal Priority") (si severity_field es "HIGH", devuelve "High Priority"; de lo contrario, devuelve "Normal Priority")
    Ejemplo: score_field | ifThenElse(">", "70", "Above Threshold", "Below Threshold") (si score_field es 90, devuelve "Above Threshold"; si score_field es 60, devuelve "Below Threshold")

Expresión:

En el campo Expresión se insertan los resultados JSON junto con las funciones y las tuberías para añadir varias funciones y crear la expresión.

Ejecución o resultados:

Después de rellenar el creador de expresiones, haz clic en Ejecutar para ver los resultados en función de los datos de ejemplo en formato JSON que se muestran en el creador de expresiones.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.