Creare logica con il builder di espressioni
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)(sealertsè[{"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)(sealertsè[{"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")(sealertscontiene un elenco di oggetti con un camposcore, 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")(sealertscontiene un elenco di oggetti con un camposcore, 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 camposeverityè "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")(setimestamp_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()(sealertsè 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'arrayalertsin base ascorein ordine decrescente) -
toLower (): converte un input in caratteri minuscoli.
Esempio:status_field | toLower()(sestatus_fieldè "OPEN", restituisce "open") -
toUpper (): converte un input in caratteri maiuscoli.
Esempio:severity_field | toUpper()(seseverity_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")(semessage_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'arrayalerts)
Esempio:alerts | getByIndex("0,2")(restituisce il primo e il terzo elemento dell'arrayalerts) -
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)(sescore_fieldè 90, restituisce 95)
Esempio:counter_field | incrementValue()(secounter_fieldè 10, restituisce 11) -
setIfEmpty ("defaultValue"): restituisce il valore predefinito fornito se il valore di input è vuoto.
Esempio:optional_field | setIfEmpty("N/A")(seoptional_fieldè vuoto, restituisce "N/A"; in caso contrario, restituisce il valore dioptional_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")(seseverity_fieldè "HIGH", restituisce "High Priority"; in caso contrario, restituisce "Normal Priority")
Esempio:score_field | ifThenElse(">", "70", "Above Threshold", "Below Threshold")(sescore_fieldè 90, restituisce "Above Threshold"; sescore_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.