Обзор языка запросов Kusto

Переключайте службы в раскрывающемся списке Версия. Дополнительные сведения о навигации.
Область применения: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel

Язык запросов Kusto (KQL) — это мощный инструмент для анализа данных и выявления закономерностей, обнаружения аномалий и выбросов, создания статистических моделей и многого другого.

KQL — это простой и мощный язык для запроса структурированных, полуструктурированных и неструктурированных данных. Язык выразительный, его легко читать и понимать смысл запроса, и он оптимизирован для удобства разработки. KQL является оптимальным для запроса телеметрии, метрик и журналов с глубокой поддержкой поиска текста и синтаксического анализа, операторов временных рядов и функций, аналитики и агрегирования, геопространственных, векторных поисков сходства и многих других языковых конструкций, которые обеспечивают наиболее оптимальный язык для анализа данных. Запрос использует сущности схемы, упорядоченные в иерархии, аналогичной SQL: базам данных, таблицам и столбцам.

Если у вас есть опыт в написании скриптов или работе с базами данных, большая часть материала этой статьи покажется вам знакомой. Если нет, не беспокойтесь: интуитивно понятная природа языка позволит быстро начать писать собственные запросы и получать ценность для вашей организации.

В этой статье объясняется язык запросов и предлагаются практические упражнения, которые помогут вам начать писать запросы. Чтобы получить доступ к среде запроса, используйте веб-пользовательского интерфейса Azure Data Explorer. Чтобы узнать, как использовать KQL, ознакомьтесь с руководством Руководство. Изучение распространенных операторов.

В этой статье объясняется язык запросов и предлагаются практические упражнения, которые помогут вам начать писать запросы. Чтобы получить доступ к среде выполнения запросов, используйте набор запросов KQL. Чтобы узнать, как использовать KQL, ознакомьтесь с учебником «Изучение распространенных операторов».

KQL также является языком, используемым для работы с данными и управления ими в Microsoft Sentinel. Журналы, которые вы загружаете в рабочую область, немногого стоят, если вы не можете их анализировать и получать важную информацию, скрытую во всём этом объёме данных. KQL имеет не только мощность и гибкость, чтобы получить эту информацию, но и простоту, чтобы помочь вам быстро приступить к работе.

В этой статье представлены основы KQL, охватывающие некоторые из наиболее используемых функций и операторов, которые должны решать 75–80 процентов запросов, которые пользователи записывают день в день. Если требуется более подробная глубина или выполнение более сложных запросов, вы можете воспользоваться преимуществами книги Advanced KQL для Microsoft Sentinel.

Почему KQL для Microsoft Sentinel?

Решение Microsoft Sentinel построено на основе службы Azure Monitor и использует ее рабочие области Log Analytics для хранения всех данных. К этим данным относятся следующие:

  • данные, загруженные из внешних источников в предопределённые таблицы с помощью коннекторов данных Microsoft Sentinel
  • данные, загружаемые из внешних источников в настраиваемые таблицы, определяемые пользователем, с помощью специально созданных соединителей данных и некоторых типов готовых встроенных соединителей.
  • данные, созданные самим решением Microsoft Sentinel в результате анализа, например оповещения, инциденты и сведения, связанные с UEBA;
  • данные, загруженные в Microsoft Sentinel для помощи в обнаружении и анализе, например каналы аналитики угроз и списки наблюдения.

KQL был разработан в рамках службы Azure Data Explorer , поэтому он оптимизирован для поиска через хранилища больших данных в облачной среде. Он создан, чтобы помочь вам глубже погрузиться в данные и раскрыть их скрытые ценные сведения.

KQL также используется в Azure Monitor и поддерживает дополнительные возможности Azure Monitor, которые позволяют извлекать, визуализировать, анализировать и разбирать данные из хранилищ данных Log Analytics. В Microsoft Sentinel вы используете средства на основе KQL всякий раз, когда вы визуализируете и анализируете данные и ищете угрозы, будь то в существующих правилах и книгах или в создании собственных.

Так как KQL является частью почти всего, что вы делаете в Microsoft Sentinel, четкое понимание того, как это работает, помогает получить это больше из вашей SIEM.

Что такое запрос Kusto?

Запрос Kusto — это запрос, предназначенный только для чтения, который обрабатывает данные и возвращает результаты. Запрос указывается в виде обычного текста, используя модель потока данных, которую легко читать, создавать и автоматизировать. Запросы Kusto состоят из одной или нескольких инструкций запроса.

Запрос Kusto не записывает данные. Запросы работают с данными, организованными в иерархию баз данных, таблиц и столбцов, как в SQL.

Что такое инструкция запроса?

Существует три типа инструкций запросов пользователей:

Все инструкции запроса отделяются друг от друга символом ; (точка с запятой) и влияют только на текущий запрос.

Заметка

Сведения об инструкциях запроса приложения см. в инструкции запросов приложения.

Наиболее распространенным типом инструкции запроса является табличное выражение инструкции, что означает, что входные и выходные данные состоят из таблиц или табличных наборов данных. Табличные операторы содержат ноль или более операторов, каждая из которых начинается с табличных входных данных и возвращает табличные выходные данные. Операторы разделяются символом | (вертикальная черта). Данные передаются, или направляются по конвейеру, от одного оператора к другому. Данные фильтруются или управляются на каждом шаге, а затем передаются на следующий шаг.

Это как воронка, где вы начинаете с всей таблицы данных. Каждый раз, когда данные проходят через другой оператор, фильтруются, переупорядочены или суммируются. Так как передача информации от одного оператора к другому является последовательной, порядок оператора запроса важен и может повлиять как на результаты, так и на производительность. В конце воронки получается доработанный результат.

Рассмотрим пример запроса.

StormEvents
| where StartTime between (datetime(2007-11-01) .. datetime(2007-12-01))
| where State == "FLORIDA"
| count
Количество
28

Заметка

В KQL регистр учитывается во всём — в именах таблиц, именах столбцов таблиц, операторах, функциях и так далее. Ключевые слова можно использовать в качестве идентификаторов, заключив их в скобки и кавычки ([' и '] или [" и "]). Например, ['where']. Дополнительные сведения см. в разделе Правила именования идентификаторов

Этот запрос содержит один оператор табличного выражения. Инструкция начинается со ссылки на таблицу с именем StormEvents и содержит несколько операторов, where и count, каждый из которых разделен каналом. Строки данных для исходной таблицы фильтруются по значению столбца StartTime, а затем фильтруются по значению столбца State. В последней строке запрос возвращает таблицу с одним столбцом и одной строкой, содержащей количество оставшихся строк.

Чтобы попробовать еще несколько запросов Kusto, см. Руководство: Написание запросов Kusto.

Команды управления

В отличие от запросов Kusto, команды управления являются запросами к Kusto для обработки или изменения данных или метаданных. Например, следующая команда управления создает новую таблицу Kusto с двумя столбцами, Level и Text:

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

Команды управления имеют собственный синтаксис, который не является частью синтаксиса KQL, хотя два используют множество концепций. В частности, команды управления отличаются от запросов путем первого символа в тексте команды — символом точки (.) (который не может запустить запрос). Это различие предотвращает множество атак безопасности, просто потому что он предотвращает внедрение команд управления в запросы.

Не все команды управления изменяют данные или метаданные. Большой класс команд, начинающихся с .show, используется для отображения метаданных или данных. Например, команда .show tables возвращает список всех таблиц в текущей базе данных.

Дополнительные сведения о командах управления см. в обзорекоманд управления.

KQL в других службах

KQL используется многими другими службами Майкрософт. Дополнительные сведения об использовании KQL в этих средах см. по следующим ссылкам: