Eseguire query sui dati usando il linguaggio di query Kusto

Completato

È possibile usare il linguaggio di query Kusto (KQL) in Microsoft Sentinel per la ricerca e il filtraggio dei dati raccolti.

Kusto Query Language

KQL offre la possibilità di creare, archiviare ed eseguire analisi interattive sui dati raccolti. Microsoft Sentinel usa KQL per visualizzare e analizzare i dati importanti. È possibile usare KQL per creare query analitiche complesse che includono alcuni degli operatori seguenti:

  • Colonne calcolate
  • Funzioni di join
  • Raggruppamento in base ad aggregazioni

Scrivere ed eseguire query di base

Una query è una richiesta di sola lettura che elabora i dati e restituisce i risultati dell'elaborazione senza modificare i dati o i metadati. In modo analogo alle query SQL, le query KQL usano entità dello schema organizzate in una gerarchia composta da database, tabelle e colonne. Uno schema è una raccolta di tabelle raggruppate in categorie logiche. Le query sono costituite da sequenze di istruzioni di query separate da punto e virgola (;).

Quando si crea una query, si inizia con un nome di tabella o un comando di ricerca. Ad esempio, la query seguente recupera tutti i record dalla Event tabella:

Event

È possibile usare il carattere barra verticale (|) per separare i comandi. L'output del primo comando diventa l'input del comando successivo. È possibile aggiungere qualsiasi numero di comandi a una singola query. La query seguente recupera i record dalla Event tabella e quindi li error cerca in qualsiasi proprietà:

Event

| search error

È possibile creare la query con operatori tabulari e scalari che KQL combina in più istruzioni di espressione tabulare, che producono i risultati della query.

source1 | operator1 | operator2

Nell'esempio seguente l'origine è AzureActivity. Il primo operatore è where, che filtra i record in base all'espressione logica. Il secondo operatore è di nuovo where:

AzureActivity

| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'

Per impostazione predefinita, Log Analytics limita le query a un intervallo di tempo delle ultime 24 ore. Per impostare un intervallo di tempo diverso, è possibile aggiungere un filtro esplicito TimeGenerated alla query o usare il Time range controllo . Ad esempio, la query seguente restituisce i dati dell'ora precedente:


AzureActivity

| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
| where TimeGenerated > ago (1h)

È possibile combinare le query con alcuni degli operatori usati più di frequente:

  • count. restituisce il conteggio delle righe della tabella.
  • take. restituisce un numero massimo specificato di righe di dati.
  • project. seleziona un subset di colonne.
  • sort. Ordina le righe della tabella di input in base a una o più colonne.
  • top. Restituisce i primi N record ordinati in base alle colonne specificate.
  • extend. calcola le colonne derivate.
  • summarize. aggrega gruppi di righe.
  • render. esegue il rendering dei risultati come output grafico.

Per combinare i record di due origini (tabelle), è possibile usare l'operatore join . L'operatore union combina due o più tabelle in una.

Per altre informazioni, vedere l'esercitazione su Log Analytics Microsoft che usa le funzionalità di Log Analytics per creare ed eseguire una query anziché usare la query stessa.

Per informazioni su KQL, è anche possibile usare l'esercitazione su Esplora dati di Azure.

Nota

Log Analytics di Microsoft Sentinel non supporta tutta la sintassi di KQL usata in Esplora dati di Azure.

Repository di Microsoft Sentinel in GitHub

È anche possibile usare il repository di Microsoft Sentinel in GitHub per cercare query e cartelle di lavoro specifiche per la protezione dell'ambiente e la ricerca di minacce. Ad esempio, la query seguente dal repository GitHub di Microsoft Sentinel visualizza eventi sospetti di delega delle autorizzazioni agli account utente.

let timeframe = 7d;
AzureActivity
| where TimeGenerated >= ago(timeframe)
| where OperationName == "Create role assignment"
| where ActivityStatus == "Succeeded"
| project Caller, CallerIpAddress
| evaluate basket()
| extend AccountCustomEntity = Caller, IPCustomEntity = CallerIpAddress

La query analizza l'indirizzo IP da cui l'amministratore concede l'accesso ad altri utenti alle risorse di Azure. Se un'operazione non viene eseguita da un indirizzo IP valido, la query segnala un'attività sospetta, sulla quale è possibile indagare ulteriormente.

Se si vogliono provare alcuni esempi, usare l'ambiente dimostrativo nel portale di Azure.

Verificare le conoscenze

1.

Quale degli strumenti seguenti può usare un amministratore per eseguire query sui dati in Microsoft Sentinel?

2.

Quale dei caratteri seguenti può usare un amministratore per separare i comandi nella query?