Wykonywanie zapytań dotyczących danych przy użyciu języka Kusto Query Language

Ukończone

Do wyszukiwania i filtrowania zebranych danych można użyć język zapytań Kusto (KQL) w usłudze Microsoft Sentinel.

Kusto Query Language

Język KQL umożliwia tworzenie, przechowywanie i uruchamianie interaktywnej analizy na zebranych danych. Usługa Microsoft Sentinel używa języka KQL do wizualizacji i analizowania ważnych danych. Za pomocą języka KQL można tworzyć złożone zapytania analityczne, które zawierają niektóre z następujących operatorów:

  • Kolumny obliczeniowe
  • Funkcje sprzężenia
  • Grupowanie według agregacji

Pisanie i uruchamianie zapytań podstawowych

Zapytanie jest żądaniem tylko do odczytu, które przetwarza dane i zwraca wyniki tego przetwarzania bez modyfikowania danych lub metadanych. Podobnie jak zapytania języka SQL, zapytania języka KQL używają jednostek schematu, które są organizowane w formie hierarchii, takiej jak bazy danych, tabele i kolumny. Schemat to zbiór tabel pogrupowanych w kategorie logiczne. Zapytania składają się z sekwencji instrukcji, które są rozdzielone średnikami (;).

Konstruując zapytanie, należy rozpocząć od nazwy tabeli lub polecenia wyszukiwania. Na przykład następujące zapytanie pobiera wszystkie rekordy z Event tabeli:

Event

Aby oddzielić polecenia, można użyć znaku kreski pionowej (|). Dane wyjściowe pierwszego polecenia stają się danymi wejściowymi następnego polecenia. Do pojedynczego zapytania można dodać dowolną liczbę poleceń. Następujące zapytanie pobiera rekordy z Event tabeli, a następnie wyszukuje je error w dowolnej właściwości:

Event

| search error

Można utworzyć zapytanie z operatorami tabelarycznymi i skalarnymi, które język KQL łączy w wiele instrukcji wyrażeń tabelarycznych, generujących wyniki zapytania.

source1 | operator1 | operator2

W poniższym przykładzie źródłem jest AzureActivity. Pierwszy operator to where, który filtruje rekordy na podstawie wyrażenia logicznego. Drugi operator to ponownie where:

AzureActivity

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

Domyślnie usługa Log Analytics ogranicza zapytania do zakresu czasu wynoszącego ostatnie 24 godziny. Aby ustawić inny zakres czasu, możesz dodać jawny TimeGenerated filtr do zapytania lub użyć kontrolki Time range . Następujące zapytanie zwraca na przykład dane z poprzedniej godziny:


AzureActivity

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

Zapytania można łączyć za pomocą kilku powszechnie używanych operatorów:

  • count. Zwraca liczbę wierszy w tabeli.
  • take. Zwraca maksymalnie podaną liczbę wierszy danych.
  • project. Wybiera podzestaw kolumn.
  • sort. Sortuje wiersze tabeli wejściowej w kolejności określonej za pomocą jednej lub większej liczby kolumn.
  • top. Zwraca N pierwszych rekordów i sortuje je według określonych kolumn.
  • extend. Oblicza kolumny pochodne.
  • summarize. Agreguje grupy wierszy.
  • render. Renderuje wyniki w formie graficznych danych wyjściowych.

Aby połączyć rekordy z dwóch źródeł (tabel), możesz użyć join operatora . Operator union łączy co najmniej dwie tabele w jedną.

Aby uzyskać więcej informacji, zapoznaj się z samouczkiem usługi Log Analytics firmy Microsoft, w którym zamiast pracy z samym zapytaniem, do kompilowania i uruchamiania zapytania są używane funkcje usługi Log Analytics.

Możesz również skorzystać z samouczka usługi Azure Data Explorer, aby dowiedzieć się więcej o języku KQL.

Uwaga

Usługa Log Analytics usługi Microsoft Sentinel nie obsługuje całej składni języka KQL używanej w usłudze Azure Data Explorer.

Repozytorium usługi Microsoft Sentinel w witrynie GitHub

Możesz również użyć repozytorium Usługi Microsoft Sentinel w usłudze GitHub, aby wyszukać wyspecjalizowane zapytania i skoroszyty, aby ułatwić zabezpieczanie środowiska i wyszukiwanie zagrożeń. Na przykład następujące zapytanie z repozytorium GitHub usługi Microsoft Sentinel wyświetla podejrzane delegowanie uprawnień do kont użytkowników.

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

Zapytanie analizuje adres IP, z którego administrator przyznaje dostęp do zasobów platformy Azure innym użytkownikom. Jeśli operacja nie pochodzi z prawidłowego adresu IP, zapytanie sygnalizuje podejrzane działania, które można dokładniej zbadać.

Jeśli chcesz wypróbować kilka przykładów, użyj środowiska demonstracyjnego w witrynie Azure Portal.

Sprawdź swoją wiedzę

1.

Którego z poniższych narzędzi administrator może użyć do wykonywania zapytań dotyczących danych w usłudze Microsoft Sentinel?

2.

Którego z następujących znaków może użyć administrator, aby oddzielić polecenia w zapytaniu.