Dotazy na data pomocí jazyka Kusto (KQL)
Ke vyhledávání a filtrování shromážděných dat můžete použít dotazovací jazyk Kusto (KQL) v Microsoft Sentinelu.
Kusto Query Language
KQL poskytuje možnost vytvářet, ukládat a spouštět interaktivní analýzy shromážděných dat. Microsoft Sentinel používá KQL k vizualizaci a analýze důležitých dat. Pomocí KQL můžete vytvářet složité analytické dotazy, které obsahují některé z následujících operátorů:
- Počítané sloupce
- Funkce Join
- Seskupení podle agregací
Zápis a spouštění základních dotazů
Dotaz je požadavek jen pro čtení, který zpracovává data a vrací výsledky tohoto zpracování beze změny dat nebo metadat. Podobně jako dotazy SQL, používají dotazy KQL entity schématu, které jsou uspořádány v hierarchii, jako jsou databáze, tabulky a sloupce. Schéma je kolekce tabulek seskupených do logických kategorií. Dotazy se skládají ze sekvencí příkazů dotazu, které se oddělují středníkem (;).
Při vytváření dotazu začínáte názvem tabulky nebo vyhledávacím příkazem. Například následující dotaz načte všechny záznamy z Event
tabulky:
Event
K oddělení příkazů můžete použít znak svislé čáry (|). Výstup prvního příkazu se stává vstupem dalšího příkazu. Do jednoho dotazu můžete přidat libovolný počet příkazů. Následující dotaz načte záznamy z Event
tabulky a pak je vyhledá error
v libovolné vlastnosti:
Event
| search error
Dotaz můžete sestavit pomocí tabulkových a skalárních operátorů, které KQL zkombinuje do více tabulkových příkazů výrazu, čímž vzniknou výsledky dotazu.
source1 | operator1 | operator2
V následujícím příkladu je AzureActivity
zdrojem . Prvním operátorem je where
, který filtruje záznamy na základě logického výrazu. Druhý operátor je znovu where
:
AzureActivity
| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
Ve výchozím nastavení Log Analytics omezuje dotazy na časový rozsah posledních 24 hodin. Pokud chcete nastavit jiný časový rozsah, můžete do dotazu přidat explicitní TimeGenerated
filtr nebo použít Time range
ovládací prvek. Následující například dotaz vrátí data z předchozí hodiny:
AzureActivity
| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
| where TimeGenerated > ago (1h)
Dotazy můžete kombinovat s některými z nejčastěji používaných operátorů:
count
. Vrátí počet řádků v tabulce.take
. Vrátí maximálně zadaný počet řádků dat.project
. Vybere podmnožinu sloupců.sort
. Seřadí řádky vstupní tabulky v pořadí podle jednoho nebo více sloupců.top
. Vrátí prvních N záznamů seřazených podle zadaných sloupců.extend
. Vypočítá odvozené sloupce.summarize
. Agreguje skupiny řádků.render
. Vykreslí výsledky do grafického výstupu.
Ke kombinování záznamů ze dvou zdrojů (tabulek) můžete použít join
operátor. Operátor union
kombinuje dvě nebo více tabulek do jedné.
Další informace najdete v kurzu Log Analytics, který k sestavení a spuštění dotazu využívá funkce služby Log Analytics namísto práce s samotným dotazem.
K získání informací o KQL můžete použít také kurz Azure Data Explorer.
Poznámka:
Microsoft Sentinel Log Analytics nepodporuje všechny syntaxe KQL, která se používá v Azure Data Exploreru.
Úložiště Microsoft Sentinel na GitHubu
Úložiště Microsoft Sentinel na GitHubu můžete také použít k vyhledání specializovaných dotazů a sešitů, které vám pomůžou zabezpečit vaše prostředí a vyhledávat hrozby. Například následující dotaz z úložiště GitHub služby Microsoft Sentinel zobrazuje podezřelé delegování oprávnění k uživatelským účtům.
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
Dotaz zanalyzuje IP adresu, ze které správce uděluje přístup dalším uživatelům k prostředkům Azure. Pokud operace není z platné IP adresy, dotaz signalizuje podezřelou aktivitu, kterou můžete dále prozkoumat.
Pokud chcete vyzkoušet některé příklady, použijte ukázkové prostředí na webu Azure Portal.