Condividi tramite


Panoramica del Linguaggio di query Kusto

Si applica a: ✅Microsoft Fabric

Il linguaggio di query Kusto (KQL) è uno strumento potente per esplorare i dati e individuare i criteri, identificare anomalie e outlier, creare modellazione statistica e altro ancora.

KQL è un linguaggio semplice ma potente per eseguire query su dati strutturati, semistrutturati e non strutturati. Il linguaggio è espressivo, facile da leggere e comprendere la finalità della query e ottimizzato per le esperienze di creazione. KQL è ottimale per l'esecuzione di query su dati di telemetria, metriche e log con supporto avanzato per la ricerca e l'analisi del testo, gli operatori e le funzioni delle serie temporali, l'analisi e l'aggregazione, la geospaziale, le ricerche di somiglianza vettoriale e molti altri costrutti di linguaggio che forniscono il linguaggio più ottimale per l'analisi dei dati. La query usa entità dello schema organizzate in una gerarchia simile a SQLs: database, tabelle e colonne.

Se si ha uno sfondo nello scripting o nell'uso di database, gran parte del contenuto di questo articolo dovrebbe avere familiarità. In caso contrario, non occorre preoccuparsi, poiché la natura intuitiva del linguaggio consente di iniziare rapidamente a scrivere query personalizzate e a promuovere il valore per l'organizzazione.

Questo articolo fornisce una spiegazione del linguaggio di query e offre esercizi pratici per iniziare a scrivere query. Per accedere all'ambiente di query, usare l'interfaccia utente Web di Esplora dati di Azure . Per informazioni su come usare KQL, vedere Esercitazione: Informazioni sugli operatori comuni.

Questo articolo fornisce una spiegazione del linguaggio di query e offre esercizi pratici per iniziare a scrivere query. Per accedere all'ambiente di query, usare il set di query KQL . Per informazioni su come usare KQL, vedere Esercitazione: Informazioni sugli operatori comuni.

KQL è anche il linguaggio usato per usare e modificare i dati in Microsoft Sentinel. I log inseriti nell'area di lavoro non valgono molto se non è possibile analizzarli e ottenere le informazioni importanti nascoste in tutti i dati. KQL non ha solo la potenza e la flessibilità per ottenere queste informazioni, ma la semplicità per iniziare rapidamente.

Questo articolo presenta le nozioni di base di KQL, che illustra alcune delle funzioni e degli operatori più usati, che devono indirizzare il 75 all'80% delle query che gli utenti scrivono giorno dopo giorno. Quando è necessaria una maggiore profondità o per eseguire query più avanzate, è possibile sfruttare la cartella di lavoro Avanzate KQL per Microsoft Sentinel.

Perché KQL per Microsoft Sentinel?

Microsoft Sentinel si basa sul servizio Monitoraggio di Azure e usa le aree di lavoro Log Analytics di Monitoraggio di Azure per archiviare tutti i dati. Questi dati includono uno dei seguenti:

  • dati inseriti da origini esterne in tabelle predefinite usando i connettori dati di Microsoft Sentinel.
  • dati inseriti da origini esterne in tabelle personalizzate definite dall'utente, usando connettori dati creati in modo personalizzato e alcuni tipi di connettori predefiniti.
  • dati creati da Microsoft Sentinel stesso, risultanti dalle analisi create ed eseguite, ad esempio avvisi, eventi imprevisti e informazioni correlate all'UEBA.
  • dati caricati in Microsoft Sentinel per facilitare il rilevamento e l'analisi, ad esempio feed di intelligence sulle minacce e watchlist.

KQL è stato sviluppato come parte del servizio Esplora dati di Azure ed è quindi ottimizzato per la ricerca in archivi Big Data in un ambiente cloud. È progettato per aiutarti a approfondire i tuoi dati ed esplorare i loro tesori nascosti.

KQL viene usato anche in Monitoraggio di Azure e supporta funzionalità aggiuntive di Monitoraggio di Azure che consentono di recuperare, visualizzare, analizzare e analizzare i dati negli archivi dati di Log Analytics. In Microsoft Sentinel si usano strumenti basati su KQL ogni volta che si visualizzano e si analizzano i dati e la ricerca di minacce, sia nelle regole esistenti che nelle cartelle di lavoro o nella creazione di cartelle di lavoro personalizzate.

Dal momento che KQL fa parte di quasi tutto ciò che si fa in Microsoft Sentinel, una chiara comprensione del funzionamento consente di ottenere più informazioni dal sistema SIEM.

Che cos'è una query Kusto?

Una query Kusto è una richiesta di sola lettura per elaborare i dati e restituire i risultati. La richiesta viene dichiarata in testo normale, usando un modello di flusso di dati facile da leggere, creare e automatizzare. Le query Kusto vengono eseguite con una o più istruzioni di query.

Una query Kusto non scrive dati. Le query operano su dati organizzati in una gerarchia di database, tabelle e colonne, simili a SQL.

Che cos'è un'istruzione di query?

Esistono tre tipi di istruzioni di query utente:

Tutte le istruzioni di query sono separate da un ; (punto e virgola) e influiscono solo sulla query.

Nota

Per informazioni sulle istruzioni di query dell'applicazione, vedere istruzioni di query dell'applicazione.

Il tipo più comune di istruzione query è un'espressione tabulare 'istruzione, il che significa che sia l'input che l'output sono costituiti da tabelle o set di dati tabulari. Le istruzioni tabulari contengono zero o più operatori , ognuno dei quali inizia con un input tabulare e restituisce un output tabulare. Gli operatori vengono sequenziati da un | (pipe). I flussi di dati, o vengono inviati tramite pipe, da un operatore all'altro. I dati vengono filtrati o modificati in ogni passaggio e quindi inseriti nel passaggio seguente.

È come un imbuto, in cui si inizia con un'intera tabella di dati. Ogni volta che i dati passano attraverso un altro operatore, vengono filtrati, riorganizzato o riepilogato. Poiché il piping delle informazioni da un operatore a un altro è sequenziale, l'ordine dell'operatore di query è importante e può influire sui risultati e sulle prestazioni. Alla fine dell'imbuto, si rimane con un output raffinato.

Verrà ora esaminata una query di esempio.

StormEvents
| where StartTime between (datetime(2007-11-01) .. datetime(2007-12-01))
| where State == "FLORIDA"
| count
Contare
28

Nota

KQL fa distinzione tra maiuscole e minuscole per tutti gli elementi, ad esempio nomi di tabella, nomi di colonne di tabella, operatori, funzioni e così via. Le parole chiave possono essere usate come identificatori racchiudendoli tra parentesi quadre e virgolette ([' e '] o [" e "]). Ad esempio, ['where']. Per altre informazioni, vedere regole di denominazione degli identificatori

Questa query include una singola istruzione di espressione tabulare. L'istruzione inizia con un riferimento a una tabella denominata StormEvents e contiene diversi operatori, where e count, ognuno separato da una pipe. Le righe di dati per la tabella di origine vengono filtrate in base al valore della colonna StartTime e quindi filtrate in base al valore della colonna stato . Nell'ultima riga, la query restituisce una tabella con una singola colonna e una singola riga contenente il conteggio delle righe rimanenti.

Per provare altre query Kusto, vedere Esercitazione: Scrivere query Kusto.

Comandi di gestione

A differenza delle query Kusto, i comandi di gestione sono richieste a Kusto per elaborare o modificare dati o metadati. Ad esempio, il comando di gestione seguente crea una nuova tabella Kusto con due colonne, Level e Text:

.create table Logs (Level:string, Text:string)

I comandi di gestione hanno una propria sintassi, che non fa parte della sintassi KQL, anche se i due condividono molti concetti. In particolare, i comandi di gestione sono distinti dalle query con il primo carattere nel testo del comando come carattere punto (.) (che non può avviare una query). Questa distinzione impedisce molti tipi di attacchi alla sicurezza, semplicemente perché impedisce l'incorporamento dei comandi di gestione all'interno delle query.

Non tutti i comandi di gestione modificano i dati o i metadati. La classe di comandi di grandi dimensioni che inizia con .show, viene usata per visualizzare metadati o dati. Ad esempio, il comando .show tables restituisce un elenco di tutte le tabelle nel database corrente.

Per altre informazioni sui comandi di gestione, vedere panoramica dei comandi di gestione .

KQL in altri servizi

KQL viene usato da molti altri servizi Microsoft. Per informazioni specifiche sull'uso di KQL in questi ambienti, vedere i collegamenti seguenti: