Creare logica con il builder di espressioni

Supportato in:

Il builder di espressioni consente di analizzare e modificare i risultati JSON per utilizzarli nelle azioni successive. Il builder di espressioni genera varie funzioni di trasformazione dinamica che puoi concatenare, visualizzare in anteprima e testare, offrendo un'esperienza interattiva per trasformare e analizzare i risultati delle azioni non elaborati.

Dopo aver selezionato un segnaposto per il parametro nell'azione del playbook, puoi utilizzare i risultati JSON. Questi risultati forniscono informazioni complete restituite dall'azione, che puoi utilizzare nelle azioni e nel flusso del playbook successivi. Per maggiori dettagli, consulta la sezione Casi d'uso del builder di espressioni.

Visualizzare il builder di espressioni

Questo esempio mostra i dati potenziali e non riflette i risultati in tempo reale. I dati effettivi potrebbero essere diversi e contenere più o meno campi. Se un analista conosce altri campi che verranno restituiti in fase di runtime, può inserire il percorso della chiave corrispondente nel campo sintassi.

Funzioni

Sono supportate le seguenti funzioni pipe:

  • First (x): restituisce i primi X elementi di un array.
    Esempio: alerts | First(2) (se alerts è [{"id": "A"}, {"id": "B"}, {"id": "C"}], restituisce [{"id": "A"}, {"id": "B"}])
  • Last (x): restituisce gli ultimi X elementi di un array.
    Esempio: alerts | Last(1) (se alerts è [{"id": "A"}, {"id": "B"}, {"id": "C"}], restituisce [{"id": "C"}])
  • Min (KeyPath): restituisce l'elemento con il valore minimo di un array. Se viene fornito un parametro keyPath, restituisce l'oggetto con il valore minimo nel percorso specificato.
    Esempio: alerts | Min("score") (se alerts contiene un elenco di oggetti con un campo score, restituisce l'oggetto con il punteggio più basso)
  • Max (KeyPath): restituisce l'elemento con il valore massimo di un array. Se viene fornito un parametro keyPath, restituisce l'oggetto con il valore massimo nel percorso specificato.
    Esempio: alerts | Max("score") (se alerts contiene un elenco di oggetti con un campo score, restituisce l'oggetto con il punteggio più alto)
  • Filter (ConditionKey, Operator, Value): filtra un array di oggetti, restituendo solo gli oggetti che corrispondono a una condizione in un campo specificato.
    • ConditionKey: il campo di ogni oggetto da valutare in base alla condizione.
    • Operatore: operatore da utilizzare per la condizione.
      • Per l'input di stringhe: =, !=, in, not in.
      • Per l'input di numeri/date: =, !=, >, >=, < , <=.
  • Valore: valore da controllare nella condizione.
    Esempio: alerts | Filter("severity", "=", "HIGH") (restituisce tutti gli avvisi in cui il campo severity è "HIGH")
  • DateFormat ("pattern") : formatta una data in un determinato pattern (il pattern viene specificato come parametro) nel seguente formato: YYYY-MM-DDThh:mm:ssZ.
    Esempio: timestamp_field | DateFormat("yyyy/MM/ddTHH:mm:ss") (se timestamp_field è "2024/07/20T10:00:00Z", restituisce "2024-07-20 10:00:00")
  • Count (): restituisce il numero di elementi nell'array di input.
    Esempio: alerts | Count() (se alerts è un array con 4 elementi, restituisce 4)
  • OrderBy ("keyPath", "direction"): ordina un array di oggetti in base ai valori di un percorso della chiave specificato.
    Esempio: alerts | OrderBy("score", "DESC") (ordina l'array alerts in base a score in ordine decrescente)
  • toLower (): converte un input in caratteri minuscoli.
    Esempio: status_field | toLower() (se status_field è "OPEN", restituisce "open")
  • toUpper (): converte un input in caratteri maiuscoli.
    Esempio: severity_field | toUpper() (se severity_field è "high", restituisce "HIGH")
  • Replace ("x", "y"): sostituisce una sottostringa all'interno di una stringa con un'altra stringa.
    Esempio: message_field | Replace("World", "Universe") (se message_field è "Hello World", restituisce "Hello Universe")
  • Distinct (): rimuove i valori duplicati da un array. Per gli array di oggetti, esegue un confronto approfondito per identificare gli oggetti duplicati.
    Esempio: [10, 20, 30, 20, 40] | Distinct() (restituisce [10, 20, 30, 40])
  • getByIndex ("index"): recupera gli elementi di un array in base a un indice specificato o a un elenco di indici.
    Esempio: alerts | getByIndex("0") (restituisce il primo elemento dell'array alerts)
    Esempio: alerts | getByIndex("0,2") (restituisce il primo e il terzo elemento dell'array alerts)
  • split ("delimiter"): divide una stringa in un array di sottostringhe, utilizzando un delimitatore specificato.
    Esempio: "tag1,tag2,tag3" | split(",") (restituisce ["tag1", "tag2", "tag3"])
  • join ("delimiter"): concatena un array di stringhe in una singola stringa, utilizzando un delimitatore specificato.
    Esempio: ["malware", "critical"] | join(" & ") (restituisce "malware & critical")
  • trim (): rimuove gli spazi vuoti iniziali e finali da una stringa.
    Esempio: " hello world " | trim() (restituisce "hello world")
  • trimChars ("characters"): rimuove i caratteri specificati dall'inizio e dalla fine di una stringa. Gli spazi vuoti iniziali e finali vengono sempre rimossi, anche se non specificati esplicitamente.
    Esempio: "--TEST--ABC--" | trimChars("-") (restituisce "TEST--ABC")
  • substring (start, end): estrae una sottostringa da una stringa, utilizzando un indice iniziale specificato e un indice finale facoltativo.
    Esempio: "Hello World" | substring(0, 5) (restituisce "Hello")
    Esempio: "Hello World" | substring(6) (restituisce "World")
  • incrementValue (value): aumenta un valore numerico di un importo specificato. Se non viene specificato alcun importo, il valore viene incrementato di 1.
    Esempio: score_field | incrementValue(5) (se score_field è 90, restituisce 95)
    Esempio: counter_field | incrementValue() (se counter_field è 10, restituisce 11)
  • setIfEmpty ("defaultValue"): restituisce il valore predefinito fornito se il valore di input è vuoto.
    Esempio: optional_field | setIfEmpty("N/A") (se optional_field è vuoto, restituisce "N/A"; in caso contrario, restituisce il valore di optional_field)
  • toUnixtime (): converte una stringa di data e ora leggibile (ad es. "2014/03/12T13:37:27Z" o "2014-03-12T13:37:27+01:00") in un timestamp Unix, espresso in formato UTC.
    Esempio: "2024-07-20T10:00:00Z" | toUnixtime() (restituisce 1721469600)
  • ifThenElse ("operator", "comparedValue", "trueResult", "falseResult") : valuta una condizione e restituisce la prima espressione se è true, altrimenti restituisce la seconda espressione.
    Esempio: severity_field | ifThenElse("=", "HIGH", "High Priority", "Normal Priority") (se severity_field è "HIGH", restituisce "High Priority"; in caso contrario, restituisce "Normal Priority")
    Esempio: score_field | ifThenElse(">", "70", "Above Threshold", "Below Threshold") (se score_field è 90, restituisce "Above Threshold"; se score_field è 60, restituisce "Below Threshold")

Espressione:

Il campo Espressione è il punto in cui inserisci i risultati JSON insieme alle funzioni e ai pipe per aggiungere più funzioni e creare l' espressione.

Esegui / Risultati:

Dopo aver compilato il builder di espressioni, fai clic su Esegui per visualizzare i risultati in base ai dati di esempio JSON visualizzati nel builder di espressioni.

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.