Adatok lekérdezése a Kusto lekérdezési nyelv használatával
- 5 perc
A Kusto Query Language (KQL) a Microsoft Sentinelben az összegyűjtött adatok keresésére és szűrésére használható.
Kusto lekérdezésnyelv
A KQL lehetővé teszi interaktív elemzések létrehozását, tárolását és futtatását az összegyűjtött adatokon. A Microsoft Sentinel a KQL használatával vizualizálja és elemzi a fontos adatokat. A KQL használatával összetett elemzési lekérdezéseket hozhat létre, amelyek az alábbi operátorok némelyikét tartalmazzák:
- Számított oszlopok
- Illesztés függvények
- Csoportosítás összesítések szerint
Alapszintű lekérdezések írása és futtatása
A lekérdezés egy írásvédett kérés, amely adatokat dolgoz fel, és az adatok vagy metaadatok módosítása nélkül adja vissza a feldolgozás eredményeit. Az SQL-lekérdezésekhez hasonlóan a KQL-lekérdezések olyan séma-entitásokat használnak, amelyek hierarchia szerint vannak rendszerezve, például adatbázisokban, táblákban és oszlopokban. A séma logikai kategóriák szerint csoportosított táblák gyűjteménye. A lekérdezések pontosvesszővel tagolt lekérdezési utasítások sorozataiból állnak (;).
Lekérdezés létrehozásakor táblanévvel vagy keresési paranccsal kell kezdenie. A következő lekérdezés például az összes rekordot lekéri a Event táblából:
Event
A parancsok elválasztásához használhatja a cső (|) karaktert. Az első parancs kimenete a következő parancs bemenete lesz. Tetszőleges számú parancsot hozzáadhat egyetlen lekérdezéshez. Az alábbi lekérdezés lekéri a rekordokat a Event táblából, majd megkeresi őket a kifejezésre error bármely tulajdonságban:
Event
| search error
A lekérdezést táblázatos és skaláris operátorokkal is létrehozhatja, amelyeket a KQL több táblázatos kifejezési utasításba egyesít, amelyek a lekérdezés eredményeit eredményezik.
source1 | operator1 | operator2
A következő példában a forrás a következő AzureActivity. Az első operátor az where, amely a logikai kifejezés alapján szűri ki a rekordokat. A második operátor ismét where:
AzureActivity
| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
A Log Analytics alapértelmezés szerint az elmúlt 24 óra időtartományára korlátozza a lekérdezéseket. Ha másik időtartományt szeretne beállítani, explicit szűrőt TimeGenerated adhat hozzá a lekérdezéshez, vagy használhatja a vezérlőt Time range . A következő lekérdezés például az előző óra adatait adja vissza:
AzureActivity
| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
| where TimeGenerated > ago (1h)
A lekérdezéseket egyesítheti a leggyakrabban használt operátorokkal:
-
count. A tábla sorainak számát adja vissza. -
take. A megadott számú adatsort adja vissza. -
project. Kiválasztja az oszlopok egy részhalmazát. -
sort. A beviteli táblázat sorait rendezi sorrendbe egy vagy több oszlop szerint. -
top. A megadott oszlopok szerint rendezett első N rekordot adja vissza. -
extend. Kiszámítja a származtatott oszlopokat. -
summarize. Sorcsoportok összesítése. -
render. Az eredményeket grafikus kimenetként jeleníti meg.
Két forrás (tábla) rekordjainak kombinálásához használhatja az operátort join . Az union operátor két vagy több táblát egyesít egybe.
További információkért tekintse meg a Microsoft Log Analytics-oktatóanyagot , amely a Log Analytics funkcióit használja a lekérdezések létrehozásához és futtatásához a lekérdezés használata helyett.
Az Azure Data Explorer oktatóanyaga a KQL megismeréséhez is használható.
Megjegyzés:
A Microsoft Sentinel Log Analytics nem támogatja az Azure Data Explorerben használt összes KQL-szintaxist.
Microsoft Sentinel-adattár a GitHubon
A GitHubOn található Microsoft Sentinel-adattár segítségével speciális lekérdezéseket és munkafüzeteket is kereshet a környezet védelméhez és a fenyegetések kereséséhez. A Microsoft Sentinel GitHub-adattár következő lekérdezése például a felhasználói fiókokra vonatkozó engedélyek gyanús delegálását jeleníti meg.
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
A lekérdezés elemzi azt az IP-címet, ahonnan a rendszergazda hozzáférést biztosít más felhasználóknak az Azure-erőforrásokhoz. Ha egy művelet nem érvényes IP-címről származik, a lekérdezés gyanús tevékenységet jelez, amelyet tovább vizsgálhat.
Ha néhány példát szeretne kipróbálni, használja a bemutató környezetet az Azure Portalon.