Creare e gestire campi calcolati
Questa guida è destinata agli analisti della sicurezza e ai responsabili del SOC che vogliono automatizzare l'arricchimento dei dati all'interno delle operazioni di sicurezza. Spiega come creare e gestire i campi calcolati utilizzando formule logiche per derivare nuovi valori dai dati di casi e avvisi esistenti. Seguendo questo metodo, puoi eliminare l'inserimento manuale dei dati e assicurarti che le metriche critiche vengano aggiornate in tempo reale. Il completamento corretto migliora le funzionalità di analisi della piattaforma e accelera il triage degli incidenti tramite il riempimento automatico dei campi.
Con campi calcolati, puoi derivare dinamicamente nuovi punti dati all'interno di casi e avvisi di Google Security Operations. Definendo formule logiche, puoi calcolare i valori in base ai campi di sistema o personalizzati esistenti. Il valore calcolato viene valutato e memorizzato automaticamente in tempo reale in un campo personalizzato preesistente selezionato dall'utente (etichettato come Campo di destinazione).
Casi d'uso comuni
I seguenti scenari rappresentano i modi più frequenti in cui le organizzazioni utilizzano i campi calcolati per migliorare l'efficienza operativa e la chiarezza dei dati.
Punteggio di rischio automatico
- Obiettivo: categorizzare i casi in base al volume di eventi o ai livelli di priorità.
- Valore: standardizza il triage e garantisce che gli incidenti ad alto rischio siano visibili immediatamente al team.
Normalizzazione dei dati
- Obiettivo: contrassegnare gli avvisi come Test o Produzione in base alle convenzioni di denominazione.
- Valore: riduce il rumore consentendo agli analisti di filtrare i dati di test non critici dalla visualizzazione principale.
Terminologia chiave
- Formula: un'espressione logica basata su testo che definisci utilizzando funzioni, operatori e riferimenti ai campi per calcolare un valore.
- Campo di destinazione: un campo personalizzato esistente (tipo Testo libero) in cui viene memorizzato il calcolo del risultato della formula.
- Dipendenze: i campi a cui viene fatto riferimento nella formula. Quando il valore di un campo di dipendenza cambia, il campo calcolato viene rivalutato in modo sincrono.
Prima di iniziare
Prima di creare un calcolo, assicurati che il tuo ambiente soddisfi i seguenti requisiti tecnici:
- Autorizzazioni: devi disporre dell'accesso amministrativo al menu Impostazioni e delle autorizzazioni per gestire i dati dei casi.
- Controllo dell'ambiente: assicurati di avere campi personalizzati esistenti e attivi (tipo Testo libero) da utilizzare come campi di destinazione.
Assicurati di avere campi personalizzati esistenti da utilizzare come campi di destinazione nel tuo sistema. In caso contrario, segui questi passaggi:
- Vai a Impostazioni > Dati dei casi > Campi personalizzati.
- Crea un nuovo campo personalizzato e imposta il tipo su Testo libero.
Per saperne di più sui campi personalizzati, consulta Creare un campo personalizzato.
Vincoli tecnici e regole di convalida
Prima di definire un calcolo, assicurati che i campi e la logica di destinazione rispettino questi vincoli di sistema. Queste regole determinano il modo in cui il motore di Google SecOps convalida e conserva i risultati delle formule.
Criteri di convalida dei campi
Il motore di calcolo applica rigorosamente i seguenti requisiti per qualsiasi campo designato come Campo di destinazione:
- Tipo di dati: il campo deve essere di tipo Testo libero.
- Stato operativo: il campo deve essere Attivo; il sistema non può scrivere in campi eliminati o non validi.
- Mappatura delle dipendenze: per evitare la logica circolare, un campo non può essere una destinazione se è già una dipendenza per un altro campo calcolato.
Ambito dei campi
Quando crei un campo personalizzato con ambito Both, il sistema genera voci univoche per ogni contesto. In questo modo, puoi mantenere una logica separata per casi e avvisi all'interno della stessa categoria logica.
Nel menu Campo di destinazione, devi selezionare l'ambito specifico pertinente alla formula:
- Ambito del caso: etichettato come
CaseCustom.YourField(ad esempio,CaseCustom.RiskLevel) - Ambito dell'avviso: etichettato come
AlertCustom.YourField(ad esempio,AlertCustom.RiskLevel)
Creare e gestire campi calcolati
Questa sezione descrive come definire un nuovo calcolo e risolvere i problemi comuni durante la procedura di configurazione.
Creare un nuovo calcolo
Per creare un nuovo calcolo:
- Vai a Impostazioni > Dati dei casi > Campi calcolati.
- Fai clic su add Aggiungi.
- Nel campo Nome campo calcolato, inserisci un nome e una descrizione univoci per il calcolo.
Nell'area Campo di destinazione, seleziona il campo personalizzato esistente in cui memorizzare il risultato.
- Errore previsto: il campo selezionato non viene visualizzato nel menu.
- Passaggio correttivo: verifica che il campo personalizzato sia attivo, impostato su Testo libero e che non sia già una dipendenza per un altro calcolo.
Nell'editor di testo, crea la formula utilizzando le funzioni, gli operatori e la sintassi supportati. Crea un'espressione logica (ad esempio,
IF ([case.priority] == "High") THEN "Urgent" ELSE "Standard"). Per maggiori dettagli, consulta Linguaggio e sintassi delle formule.Fai clic su Salva.
- Errore previsto: il sistema rifiuta il salvataggio e mostra un errore in rosso.
- Passaggio correttivo: controlla la presenza di errori di sintassi, ad esempio parentesi mancanti intorno alle condizioni
IFo parole chiave in minuscolo.
Accedere ad asset e riferimenti avanzati
Le formule devono seguire regole rigorose di grammatica e distinzione tra maiuscole e minuscole per tutti gli operatori e le funzioni integrate. Utilizza le seguenti specifiche tecniche per assicurarti che i calcoli siano validi.
Esempi di formule
I seguenti modelli mostrano come combinare funzioni e operatori per automatizzare l'arricchimento dei dati. Puoi copiare e adattare questi snippet in base ai nomi dei campi e ai requisiti organizzativi specifici.
Esempio 1: impostare un livello di rischio
Utilizza questa formula per categorizzare i casi in base a parole chiave specifiche trovate nel titolo del caso.
- Campo di destinazione:
CaseCustom.risk_level(Testo) - Obiettivo: assegnare automaticamente lo stato "Alto" agli incidenti urgenti
Formula:
IF (CONTAINS([case.name], "urgent")) THEN "High" ELSE "Medium"
Esempio 2: contrassegnare gli avvisi di test
Questa logica identifica ed etichetta i dati di test per aiutare gli analisti a filtrare le visualizzazioni principali e a concentrarsi sugli incidenti di produzione.
- Campo di destinazione:
AlertCustom.is_test(Testo) - Obiettivo: rilevare il suffisso
-TESTo la stringaTESTnel nome di un avviso Formula:
IF (CONTAINS([alert.name], "TEST") OR ENDS_WITH([alert.name], "-TEST")) THEN "TRUE" ELSE "FALSE"
Esempio 3: combinare le condizioni
Questo esempio mostra la logica nidificata per dare la priorità alle revisioni in base sia al volume di eventi sia ai livelli di priorità esistenti.
- Campo di destinazione:
CaseCustom.review_status(Testo) - Obiettivo: attivare una revisione manuale solo quando la lunghezza del log è significativa e la priorità non è
Low. Formula:
IF (LENGTH(\[AlertCustom.event\_details\]) \> 100 AND NOT IS(\[case.priority\], "Low")) THEN "Needs Review" ELSE "Auto-Closed"
Linguaggio e sintassi delle formule
Il motore di calcolo distingue tra maiuscole e minuscole per tutti gli operatori, le parole chiave e le funzioni integrate. Devi scrivere le parole chiave (ad esempio, IF, THEN, ELSE, AND, OR, NOT) e i nomi delle funzioni (ad esempio, CONTAINS, LENGTH, STARTS_WITH, ENDS_WITH, IS, IS_NOT, DOES_NOT_CONTAIN) in maiuscolo. Tuttavia, il test delle stringhe di testo all'interno delle funzioni e degli operatori di uguaglianza non fa distinzione tra maiuscole e minuscole. Ad esempio, la ricerca di "phishing" troverà la corrispondenza con "PHISHING" o "Phishing".
Tipi di dati e valori letterali
Un valore letterale è un valore fisso utilizzato nelle espressioni. Ti consigliamo di assicurarti che le operazioni e gli argomenti delle funzioni utilizzino tipi compatibili.
| Tipo | Sintassi e regole | Esempio |
|---|---|---|
| STRING | Testo racchiuso tra virgolette doppie. | "critical", "N/A" |
| NUMBER | Numeri interi o decimali. | 100, 3.14 |
| BOOLEAN | Deve essere in maiuscolo. | TRUE, FALSE |
| NULL | Rappresenta un valore vuoto. | NULL |
Riferimenti ai campi
Per utilizzare il valore di un altro campo, racchiudi il nome del campo tra parentesi quadre, ad esempio [object.field_name].
- Regola di sintassi:devi utilizzare un prefisso con i riferimenti ai campi. Devi utilizzare un prefisso (ad esempio,
case.oAlertCustom.) seguito da un punto e dal nome del campo. Il nome del campo può contenere lettere, numeri, trattini bassi e spazi. Ad esempio:[case.name],[alert.priority],[AlertCustom.my_custom_field]. - Puoi utilizzare questi campi di sistema:
case.name,case.stage,case.priority,alert.name,alert.priority,alert.rule_generator. - Puoi fare riferimento a tutti i campi personalizzati definiti dall'utente.
- Una formula di campo calcolato non può fare riferimento a un altro campo calcolato.
Operatori
Utilizza gli operatori per i confronti e le operazioni logiche. Utilizza le parentesi () per sostituire la precedenza predefinita e raggruppare le espressioni
- Operatori di confronto:
==,!=,>,>=,<,<= - Operatori logici:
AND,OR,NOT - Precedenza degli operatori:
NOT,>,>=,<,<=,AND,OR,
Espressioni condizionali
Il sistema supporta la logica condizionale utilizzando la sintassi IF (condition) THEN expression1 ELSE expression2. La parte ELSE è facoltativa; se la ometti e la condizione è FALSE, il risultato predefinito è NULL.
La condizione deve essere un'espressione che restituisce TRUE o FALSE.
Ad esempio, IF ( [CaseCustom.score] > 75 ) THEN "High Risk" ELSE "Low Risk".
Funzioni
Le funzioni sono operazioni predefinite che devono essere interamente in maiuscolo. La tabella seguente elenca le funzioni supportate per la manipolazione e la valutazione dei dati.
| Funzione | Descrizione | Sintassi | Tipo restituito |
|---|---|---|---|
CONTAINS(field, substring) |
Verifica se un campo di testo contiene una sottostringa (senza distinzione tra maiuscole e minuscole) | CONTAINS([case.name], "phishing") |
BOOLEAN |
DOES_NOT_CONTAIN(field, substring) |
Verifica se un campo di testo non contiene una sottostringa (senza distinzione tra maiuscole e minuscole) | DOES_NOT_CONTAIN([case.name], "test") |
BOOLEAN |
LENGTH(field) |
Restituisce il numero di caratteri in un campo | LENGTH([case.name]) |
NUMBER |
STARTS_WITH(field, prefix) |
Verifica se il campo inizia con un prefisso (senza distinzione tra maiuscole e minuscole) | STARTS_WITH([CaseCustom.hostname], "srv-") |
BOOLEAN |
ENDS_WITH(field, suffix) |
Verifica se il campo termina con un suffisso (senza distinzione tra maiuscole e minuscole) | ENDS_WITH([AlertCustom.filename], ".exe") |
BOOLEAN |
IS(field, literal) |
Verifica se il valore del campo è uguale al valore letterale (senza distinzione tra maiuscole e minuscole) | IS([alert.priority], "High") |
BOOLEAN |
IS_NOT(field, literal) |
Verifica se il valore del campo NON è uguale al valore letterale (senza distinzione tra maiuscole e minuscole) | IS_NOT([alert.priority], "Low") |
BOOLEAN |
Parole chiave e identificatori riservati
Il motore di calcolo riserva parole specifiche per operazioni logiche e funzioni. Non puoi utilizzare questi termini come nomi di campi personalizzati o altri identificatori all'interno di una formula:
- Logica:
AND, OR, NOT, IF, THEN, ELSE - Valori:
NULL, TRUE, FALSE - Funzioni:
CONTAINS, LENGTH, STARTS_WITH, ENDS_WITH, IS, IS_NOT, DOES_NOT_CONTAIN
Compatibilità dei tipi di dati
Per garantire una valutazione corretta, verifica che tutte le operazioni e gli argomenti delle funzioni utilizzino tipi compatibili. I tipi supportati includono STRING, NUMBER, BOOLEAN e NULL.
L'output finale della formula deve corrispondere al tipo previsto del campo di destinazione. Poiché i campi di destinazione sono limitati a "Testo libero", la formula deve alla fine restituire una stringa o un valore che può essere convertito implicitamente nel formato della destinazione.
Formattazione e spazio vuoto
Sebbene gli spazi, le tabulazioni e i ritorni a capo vengano generalmente ignorati tra i token, sono strettamente necessari per separare le parole chiave dagli identificatori. Utilizza lo spazio vuoto in modo strategico per strutturare formule complesse su più righe per una migliore manutenibilità e revisione tra pari.
Scrivere formule efficaci
Sebbene il motore di calcolo sia flessibile con lo spazio vuoto, segui questi standard di formattazione per evitare errori logici e semplificare la risoluzione dei problemi.
- Raggruppamento esplicito: utilizza le parentesi per definire chiaramente l'ordine delle operazioni, anche quando fai affidamento sulla precedenza standard. In questo modo, eviterai ambiguità logiche.
- Struttura visiva: applica spazi intorno agli operatori (
==, AND, OR) e inserisci ritorni a capo per le istruzioniIF/THENnidificate per rendere la logica scansionabile. Convalida del tipo: verifica sempre che l'output finale della formula corrisponda al tipo previsto del campo di destinazione per evitare errori di valutazione.
IF ( (IS([CaseCustom.event_count], "100") AND NOT IS([case.priority], "Low")) OR CONTAINS([case.name], "Critical") ) THEN "Needs Immediate Review" ELSE "Standard Review"
Risoluzione dei problemi
Questa sezione descrive le aspettative di rendimento e fornisce correzioni self-service per i problemi di deployment comuni riscontrati durante la creazione o la gestione delle formule.
Latenza e limiti
I campi calcolati vengono valutati in modo sincrono ogni volta che un campo di dipendenza cambia. Per mantenere il rendimento del sistema, un campo calcolato non può fare riferimento a un altro campo calcolato; il sistema blocca queste dipendenze concatenate per evitare la ricorsione e i ritardi di elaborazione.
Correzione degli errori
Quando scrivi le formule manualmente, possono verificarsi errori dovuti a sintassi o mancata corrispondenza dei tipi di dati. Utilizza la tabella seguente per mappare i codici di errore specifici relativi al percorso alle correzioni esatte e pratiche.
| Tipo di errore | Problema | Correggi |
|---|---|---|
| Sintassi | La formula viola le regole grammaticali, ad esempio parentesi non corrispondenti o parole chiave in minuscolo. | Racchiudi tutte le condizioni IF tra parentesi e verifica che tutte le parole chiave siano in MAIUSCOLO. |
| Convalida | La formula fa riferimento a un campo sconosciuto (ad esempio, [\case.typo]) o genera una mancata corrispondenza dei tipi. | Verifica i nomi dei campi tra parentesi quadre e conferma che l'output corrisponda al tipo di campo di destinazione. |
| Valutazione | La formula è valida, ma non riesce durante l'esecuzione, spesso visualizzando #ERROR!. | Controlla la presenza di problemi di runtime, ad esempio il passaggio di un valore non stringa a una funzione come LENGTH(). |
Modificare o eliminare i campi di destinazione
Il sistema protegge attivamente i campi su cui si basano le formule per mantenere l'integrità dei dati. Se tenti di eliminare o modificare un campo personalizzato utilizzato come campo di destinazione, il sistema blocca l'azione e visualizza un avviso che indica il suo utilizzo attivo in un campo calcolato.
Convalida e test
Dopo aver salvato un nuovo calcolo, verifica i risultati accedendo a un caso o a un avviso e aggiornando un campo di dipendenza. Verifica che il campo di destinazione venga compilato con il valore previsto in tempo reale.
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.