Создавайте задания KQL в озере данных Microsoft Sentinel

Задачи Kusto Query Language (KQL) — это одноразовые или запланированные запросы KQL к данным в озере данных Microsoft Sentinel и федеративных таблицах. Федеративные таблицы — это внешние источники данных, такие как Microsoft Entra ID, Microsoft 365 и таблицы Microsoft Resource Graph, которые вы можете задавать вместе с таблицами «озера данных» без погружения данных в рабочее пространство. Используйте задания для исследовательских и аналитических сценариев, таких как:

  • Длительные одноразовые запросы для расследования инцидентов и реагирования на инциденты (IR)
  • Задачи агрегирования данных, поддерживающие рабочие процессы обогащения с использованием журналов с низкой точностью
  • Исторические сканирования на совпадение с данными об угрозах (TI) для ретроспективного анализа
  • Сканирование обнаружения аномалий, выявляющее необычные закономерности в нескольких таблицах

Задания KQL особенно эффективны, когда запросы используют соединения или объединения в разных наборах данных. Перед началом работы убедитесь, что вы соответствуете предварительным требованиям, включая подключение к озеру данных и наличие необходимых разрешений.

Используйте задания для перемещения данных с уровня озера данных на аналитический уровень. На уровне аналитики используйте редактор KQL для расширенного поиска, чтобы выполнять запросы к данным. Повышение уровня данных на уровень аналитики имеет следующие преимущества:

  • Объедините текущие и исторические данные на уровне аналитики или из федеративных таблиц для запуска моделей расширенной аналитики и машинного обучения на своих данных.
  • Сократите затраты на запросы, выполняя запросы на уровне аналитики.
  • Объединение данных из нескольких рабочих областей в одну рабочую область на уровне аналитики.
  • Объединение данных Microsoft Entra ID, Microsoft 365 и Microsoft Resource Graph на уровне аналитики для выполнения расширенной аналитики в разных источниках данных.

Примечание.

Хранение на уровне аналитики тарифицируется по более высоким ставкам, чем на уровне озера данных. Чтобы снизить затраты, передавайте дальше только те данные, которые нужно анализировать далее. Используйте язык KQL в запросе, чтобы выбирать только нужные столбцы и фильтровать данные, уменьшая объём данных, передаваемых на аналитический уровень.

Вы можете перенести данные в новую таблицу или добавить результаты в существующую таблицу на аналитическом уровне. При создании новой таблицы имя таблицы суффиксируется _KQL_CL , чтобы указать, что таблица была создана заданием KQL.

При необходимости можно записать результаты выполнения задания KQL в другую таблицу в уровне озера данных, чтобы ускорить расследование или использовать обогащенные данные для поиска угроз. При создании новой таблицы к имени таблицы добавляется суффикс _KQL, если вы выполняете запись в рабочую область System tables.

Предварительные условия

Чтобы создавать задания KQL и управлять ими в озере данных Microsoft Sentinel, необходимы следующие предварительные условия.

Подключиться к озеру данных

Чтобы создавать задания KQL и управлять ими в озере данных Microsoft Sentinel, необходимо сначала подключить озеро данных. Дополнительные сведения о подключении к озеру данных см. в статье Подключение к озеру данных Microsoft Sentinel.

Разрешения

Роли Microsoft Entra ID обеспечивают широкий доступ ко всем рабочим областям в озере данных. Для чтения таблиц во всех рабочих областях, записи на уровень аналитики и планирования заданий с помощью запросов KQL требуется одна из поддерживаемых ролей Microsoft Entra ID. Дополнительные сведения о ролях и разрешениях см. в разделе роли и разрешения озера данных Microsoft Sentinel.

Чтобы создать новые пользовательские таблицы на уровне Analytics, назначьте управляемой идентичности озера данных роль Log Analytics Contributor в рабочей области Log Analytics.

Чтобы назначить роль, выполните следующие действия.

  1. На портале Azure перейдите в рабочую область Log Analytics, для которой нужно назначить роль.
  2. Выберите Управление доступом (IAM) в области навигации слева.
  3. Выберите Добавить назначение ролей.
  4. В таблице Роли выберите *Участник Log Analytics, а затем нажмите кнопку Далее.
  5. Выберите Управляемый идентификатор, а затем выберите Выбрать участников.
  6. Управляемый идентификатор вашего озера данных — это управляемый идентификатор, назначенный системой, с именем msg-resources-<guid>. Выберите управляемое удостоверение, а затем выберите Выбрать.
  7. Выберите Проверить и назначить.

Дополнительные сведения о назначении ролей для управляемых удостоверений см. в статье Назначение ролей Azure с помощью портала Azure.

Создание задания

Можно создавать задания для выполнения по расписанию или однократно. При создании задания необходимо указать целевую рабочую область и таблицу для результатов. Вы можете записать результаты в новую таблицу или добавить их в существующую таблицу на уровне аналитики или озера данных. Невозможно записать результаты в федеративные таблицы. Вы можете создать новое задание KQL или задание из шаблона, содержащего запрос и параметры задания. Дополнительные сведения см. в статье Создание задания KQL на основе шаблона.

  1. Запустите процесс создания задания из редактора запросов KQL или со страницы управления заданиями.

    1. Чтобы создать задание из редактора запросов KQL, нажмите кнопку Создать задание в правом верхнем углу редактора запросов. Снимок экрана: кнопка создания задания в редакторе запросов KQL.

    2. Чтобы создать задание на странице управления заданиями, выберите Microsoft Sentinel>Исследование озера данных>Задания, затем нажмите кнопку Создать задание. Снимок экрана: кнопка создания задания на странице управления заданиями.

  2. Введите имя задания. Имя задания должно быть уникальным для арендатора. Имена заданий могут содержать до 256 символов. Нельзя использовать # или - в названии задания.

  3. Введите описание задания , указав контекст и назначение задания.

  4. В раскрывающемся списке Выбор рабочей области выберите целевую рабочую область. Это рабочее пространство может быть либо рабочим пространством System tables, либо рабочим пространством Sentinel, в которое нужно записать результаты запроса.

  5. Выберите целевую таблицу:

    1. Чтобы добавить в существующую таблицу, выберите Добавить в существующую таблицу и выберите имя таблицы из раскрывающегося списка. При добавлении в существующую таблицу результаты запроса должны соответствовать схеме существующей таблицы.
  6. Нажмите кнопку Далее. Снимок экрана: страница сведений о новом задании.

  7. Просмотрите или напишите запрос на панели Подготовка запроса . Убедитесь, что для средства выбора времени задан требуемый диапазон времени для задания, если диапазон дат не указан в запросе.

  8. Выберите рабочие области для выполнения запроса в раскрывающемся списке Выбранные рабочие области . Эти рабочие области являются исходными рабочими областями, таблицы которых требуется запрашивать. В выбранной рабочей области определяются таблицы, доступные для выполнения запросов. Выбранные рабочие области применяются ко всем вкладкам запросов в редакторе запросов. При использовании нескольких рабочих областей union() оператор по умолчанию применяется к таблицам с одинаковым именем и схемой из разных рабочих областей. Используйте оператор workspace(), чтобы запросить таблицу из определенной рабочей области, например workspace("MyWorkspace").AuditLogs.

    Примечание.

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

    Запись заданий KQL в системные таблицы в настоящее время доступна в предварительной версии.

  9. Нажмите кнопку Далее.

    Снимок экрана: панель запроса на проверку.

    На странице Планирование задания запроса укажите, нужно ли выполнять задание один раз или по расписанию. Если выбрать один раз, задание выполняется сразу после завершения определения задания. Если выбрать расписание, можно указать дату и время выполнения задания или выполнить задание по повторяющимся расписаниям.

  10. Выберите Один раз или Задача по расписанию.

    Примечание.

    При редактировании одноразового задания немедленно запускается его выполнение.

  11. Если вы выбрали Расписание, введите следующие сведения:

    1. Выберите частоту повтора в раскрывающемся списке. Вы можете выбрать поминутно, ежечасно, ежедневно, еженедельно или ежемесячно.
    2. Задайте для параметра Повторять все значения для частоты выполнения задания с учетом выбранной частоты.
    3. В разделе Задать расписаниевыберите дата от и введите время. Время начала задания в поле From должно составлять не менее 30 минут после создания задания. Задание выполняется с этой даты и времени в соответствии с частотой, выбранной в раскрывающемся списке Запуск каждого .
    4. Выберите дату До и введите время, чтобы указать, когда заканчивается расписание задания. Если вы хотите, чтобы расписание продолжалось на неопределенный срок, выберите Задать задание для неограниченного выполнения.

    Время начала и окончания задания задаются в соответствии с локалью пользователя.

    Примечание.

    Если вы планируете выполнение задания с высокой частотой, например каждые 30 минут, необходимо учитывать время, затраченное на то, чтобы данные стали доступными в озере данных. Как правило, задержка составляет до 15 минут, прежде чем новые данные будут доступны для запроса.

  12. Нажмите кнопку Далее , чтобы просмотреть сведения о задании.

    Снимок экрана: панель задания расписания.

  13. Просмотрите сведения о задании и нажмите кнопку Отправить , чтобы создать задание. Если задание является одноразовым, оно выполняется после нажатия кнопки Отправить. Если задание запланировано, оно добавляется в список заданий на странице Задания и выполняется в соответствии с данными о начале и временем. Снимок экрана, на котором показана панель сведений о задании на проверку.

  14. Задача запланирована, и отображается следующая страница. Чтобы просмотреть задание, перейдите по ссылке. Снимок экрана: страница создания задания.

Создание задания на основе шаблона

Задание KQL можно создать на основе предопределенного шаблона задания. Шаблоны заданий содержат запрос KQL и параметры задания, такие как целевая рабочая область и таблица, расписание и описание. Вы можете создавать собственные шаблоны заданий или использовать встроенные шаблоны, предоставляемые корпорацией Майкрософт.

Чтобы создать задание на основе шаблона, выполните следующие действия.

  1. На странице Задания или в редакторе запросов KQL выберите Создать задание, а затем выберите Создать из шаблона.

  2. На странице Шаблоны заданий выберите нужный шаблон из списка доступных шаблонов.

  3. Просмотрите описание и запрос KQL из шаблона.

  4. Выберите Создать задание на основе шаблона.

    Снимок экрана: страница шаблонов заданий.

  5. Мастер создания задания открывается на странице Создание нового задания KQL. Сведения о задании, предварительно заполненные из шаблона, за исключением целевой рабочей области.

  6. Выберите целевую рабочую область в раскрывающемся списке Выбор рабочей области .

  7. Просмотрите и измените сведения о задании при необходимости, а затем нажмите кнопку Далее , чтобы продолжить работу с мастером создания заданий.

  8. Остальные шаги совпадают с действиями, описанными в разделе "Создание задания". Поля предварительно заполнены из шаблона и могут быть изменены по мере необходимости.

Доступны следующие шаблоны:

Имя шаблона Категория
Увеличение числа аномальных мест входа в систему
Анализировать тренды в журналах входов Entra ID для выявления необычных изменений местоположения пользователей в разных приложениях путем вычисления линий тренда разнообразия местоположений. Он выделяет три учётные записи с наиболее резким увеличением вариативности местоположения и перечисляет связанные с ними местоположения в 21-дневных интервалах.

Целевая таблица: UserAppSigninLocationTrend

Обратный просмотр запроса: 1 день

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Охота
Аномальное поведение при входе в систему при изменении местоположения
Определите аномальное поведение входа на основе изменений расположения пользователей и приложений с идентификаторами Entra для обнаружения внезапных изменений в поведении.

Целевая таблица: UserAppSigninLocationAnomalies

Обратный просмотр запроса: 1 день

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Обнаружение аномалий
Аудит редкой активности по приложениям
Найдите приложения, выполняющие редкие действия (например, согласие, предоставление), которые могут спокойно создавать привилегии. Сравните текущий день с последними 14 днями аудита, чтобы определить новые действия аудита. Полезно для отслеживания вредоносных действий, связанных с добавлением или удалением пользователей или групп с помощью приложений Azure и автоматических утверждений.

Целевая таблица: AppAuditRareActivity

Обратный просмотр запроса: 14 дней

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Охота
Редкие операции Azure на уровне подписки
Определите конфиденциальные события Azure уровня подписки на основе журналов действий Azure. Например, мониторинг основан на имени операции "Создание или обновление моментального снимка", которая используется для создания резервных копий, но может быть использована злоумышленниками для дампа хэшей или извлечения конфиденциальной информации с диска.

Целевая таблица: AzureSubscriptionSensitiveOps

Обратный просмотр запроса: 14 дней

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Охота
Тенденции ежедневной активности по приложениям в AuditLogs
За последние 14 дней определите все случаи выполнения операции "Согласие для приложения" пользователем или приложением. Это может означать, что разрешения на доступ к указанному Приложению Azure были предоставлены злоумышленнику. Согласие на приложение, добавление субъекта-службы и добавление событий Auth2PermissionGrant должно быть редким. При наличии дополнительный контекст добавляется из AuditLogs на основе CorrleationId из той же учетной записи, которая выполнила "Согласие на приложение".

Целевая таблица: AppAuditActivityBaseline

Обратный просмотр запроса: 14 дней

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Базовый уровень
Ежедневная динамика местоположения для каждого пользователя или приложения в SignInLogs
Формируйте ежедневные тренды по всем входам пользователей, количеству местоположений и использованию ими приложений.

Целевая таблица: UserAppSigninLocationBaseline

Обратный просмотр запроса: 1 день

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Базовый уровень
Тенденция ежедневного сетевого трафика на IP-адрес назначения
Создайте базовый профиль, включающий объём данных в байтах и уникальные узлы, для выявления маячковой активности и эксфильтрации данных.

Целевая таблица: NetworkTrafficDestinationIPDailyBaseline

Обратный просмотр запроса: 1 день

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Базовый уровень
Тенденция ежедневного сетевого трафика на IP-адрес назначения со статистикой передачи данных
Определите внутренний узел, который установил соединение с внешним узлом назначения, включая динамику объёмов трафика, чтобы оценить масштаб воздействия.

Целевая таблица: NetworkTrafficDestinationIPTrend

Период ретроспективного анализа запроса: 1 день

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Охота
Тенденция ежедневного сетевого трафика на IP-адрес источника
Создайте базовый профиль, включающий объём данных в байтах и уникальные узлы, для выявления маячковой активности и эксфильтрации данных.

Целевая таблица: NetworkTrafficSourceIPDailyBaseline

Обратный просмотр запроса: 1 день

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Базовый уровень
Тенденция ежедневного сетевого трафика на IP-адрес источника со статистикой передачи данных
Сегодняшние соединения и объём переданных данных сравниваются с дневным базовым уровнем хоста, чтобы определить, значительно ли наблюдаемое поведение отклоняется от установившейся модели.

Целевая таблица: NetworkTrafficSourceIPTrend

Обратный просмотр запроса: 1 день

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Охота
Динамика ежедневного местоположения входа в систему по каждому пользователю и приложению
Создайте базовый профиль входа для каждого пользователя или приложения с типичной географией и IP-адресами, что позволит эффективно и экономично обнаруживать аномалии в масштабе.

Целевая таблица: UserAppSigninLocationDailyBaseline

Обратный просмотр запроса: 1 день

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Базовый уровень
Тенденция к выполнению ежедневного процесса
Определите новые процессы и распространенность, упрощая обнаружение новых редких процессов.

Целевая таблица: EndpointProcessExecutionBaseline

Обратный просмотр запроса: 1 день

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Базовый уровень
Entra ID: редкий пользовательский агент для каждого приложения
Установите базовый уровень для типа UserAgent (то есть браузера, офисного приложения и т. д.), который обычно используется для конкретного приложения, на основе данных за несколько предыдущих дней. Затем в данных за текущий день выполняется поиск каких-либо отклонений от этой модели, то есть типов User-Agent, которые ранее не встречались в сочетании с этим приложением.

Целевая таблица: UserAppRareUserAgentAnomalies

Обратный просмотр запроса: 7 дней

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Обнаружение аномалий
Сопоставление журналов сетевого трафика с IOC
Определите все IP-индикаторы компрометации (IOCs) из аналитики угроз (TI), выполнив поиск совпадений в CommonSecurityLog.

Целевая таблица: NetworkLogIOCMatches

Обратный просмотр запроса: 1 час

Расписание: ежечасно

Дата начала: Текущая дата + 1 час
Охота
Новые процессы, наблюдаемые за последние 24 часа
Новые процессы в стабильных средах могут указывать на вредоносные действия. Анализ сеансов входа, в которых выполнялись эти двоичные файлы, может помочь выявить атаки.

Таблица назначения: EndpointNewProcessExecutions

Обратный просмотр запроса: 14 дней

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Охота
Операция с файлом SharePoint через ранее невидимые IP-адреса
Выявляйте аномалии с помощью поведения пользователей, задав пороговое значение для значительных изменений в действиях отправки и скачивания файлов с новых IP-адресов. Он устанавливает базовый план типичного поведения, сравнивает его с недавним действием и помечает отклонения, превышающие пороговое значение по умолчанию 25.

Целевая таблица: SharePointFileOpsNewIPs

Обратный просмотр запроса: 14 дней

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Охота
Пало Альто потенциальный сетевой маяк
Выявите паттерны маячной активности в журналах сетевого трафика Palo Alto Networks на основе повторяющихся временных интервалов. Запрос использует различные функции KQL для вычисления временных интервалов, а затем сравнивает их с общим числом событий, зафиксированных за день, чтобы определить процент событий с признаками маячковой активности.

Таблица назначения: PaloAltoNetworkBeaconingTrend

Обратный просмотр запроса: 1 день

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Охота
Подозрительный вход Windows в нерабочее время
Определите необычные события входа в Windows за пределами обычного времени пользователя, сравнивая с действиями входа за последние 14 дней, помечая аномалии на основе исторических шаблонов.

Целевая таблица: WindowsLoginOffHoursAnomalies

Обратный просмотр запроса: 14 дней

Расписание: ежедневно

Дата начала: Текущая дата + 1 час
Обнаружение аномалий

Рекомендации и ограничения

При создании заданий в озере данных Microsoft Sentinel учитывайте следующие ограничения и рекомендации по работе:

Выберите уровень хранения данных для выходных данных задания KQL

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

Особенности KQL для заданий в озере данных

К заданиям озера данных применяются следующие ограничения KQL:

  • Поддерживаются все операторы и функции KQL, кроме следующих:

    • adx()
    • arg()
    • externaldata()
    • ingestion_time()
  • При использовании stored_query_results команды укажите диапазон времени в запросе KQL. Селектор времени над редактором запросов не работает с этой командой.

  • Определяемые пользователем функции не поддерживаются.

Ограничения именования заданий и планирования

Для заданий KQL действуют следующие ограничения именования и планирования:

  • Имена заданий должны быть уникальными для клиента.
  • Имена заданий могут содержать до 256 символов.
  • Имена заданий не могут содержать символ # или -.
  • Время начала задания должно быть не менее 30 минут после создания или редактирования задания.

Удаление исходных рабочих пространств

Если исходное рабочее пространство, на которое ссылается запланированное задание KQL, удаляется, задание может продолжать выполняться и выходить из строя при каждом запланированном выполнении до истечения срока расписания или изменения задачи. Чтобы предотвратить повторные сбои и ненужное потребление ресурсов, задания с ссылкой на удалённые исходные рабочие пространства автоматически переводятся в состояние Отключённые и требуют действий пользователя перед возобновлением.

Задержка загрузки данных в озеро данных

Уровень озера данных хранит данные в холодном хранилище. В отличие от горячих или почти работающих в реальном времени аналитических уровней, холодное хранилище оптимизировано для долгосрочного хранения и экономической эффективности и не предоставляет немедленного доступа к недавно поступившим данным. При добавлении новых строк в существующие таблицы в озере данных или в федеративных таблицах обычно возникает задержка до 15 минут, прежде чем данные будут доступны для запроса. Учитывайте задержку приема при выполнении запросов и планировании заданий KQL, гарантируя, что окна обратного просмотра и расписания заданий настроены таким образом, чтобы избежать данных, которые еще не доступны.

Чтобы избежать запросов к данным, которые могут быть недоступны, включите параметр delay в запросы или задания KQL. Например, при планировании автоматических заданий задайте для параметра время окончания запроса значение now() - delay, где delay соответствует типичной задержке готовности к данным в 15 минут. Такой подход гарантирует, что запросы обращаются только к данным, которые были полностью загружены и готовы к анализу.

Следующий запрос KQL обнаруживает события в течение 15-минутного окна обратного просмотра с учётом задержки поступления. Переменная lookback управляет временным диапазоном запроса, а delay переменная смещает окно, чтобы запросить только полностью поглощённые данные.

let lookback = 15m;
let delay = 15m;
let endTime = now() - delay;
let startTime = endTime - lookback;
CommonSecurityLog
| where TimeGenerated between (startTime .. endTime)

Этот подход эффективен для заданий с короткими окнами обратного просмотра или частыми интервалами выполнения.

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

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

Имена столбцов

Имена столбцов должны начинаться с буквы.

Следующие стандартные столбцы не поддерживаются для экспорта. Процесс загрузки данных перезаписывает следующие столбцы в целевом уровне:

  • Идентификатор арендатора

  • _TimeReceived

  • Тип

  • SourceSystem

  • _ResourceId

  • _SubscriptionId

  • _ItemId

  • _BilledSize

  • _IsBillable

  • _WorkspaceId

  • TimeGenerated перезаписывается, если старше двух дней. Чтобы сохранить исходное время события, запишите метку времени источника в отдельный столбец.

Сведения об ограничениях службы см. в разделе Ограничения службы озера данных Microsoft Sentinel.

Примечание.

Частичные результаты могут быть повышены, если запрос задания превышает ограничение в один час.

Параметры службы и ограничения для заданий KQL

В следующей таблице перечислены параметры службы и ограничения для заданий KQL в озере данных Microsoft Sentinel.

Примечание.

Все ограничения в этой таблице применяются для каждого клиента. Ограничения на пользователя отсутствуют. Задания KQL имеют собственную квоту параллелизма и не используют общие счетчики с запросами KQL.

При превышении лимита параллельного выполнения заданий запрос отклоняется и не помещается в очередь. Счетчик уменьшается на единицу, как только выполняющееся задание завершается.

Категория Параметр или ограничение
Параллельное выполнение задач для каждого арендатора 5
Время ожидания выполнения запроса задания 1 час
Задания на клиент (включенные задания) 100
Количество выходных таблиц для каждого задания 1
Область запросов Несколько рабочих областей
Диапазон времени запроса До 12 лет

Советы по устранению неполадок и сообщения об ошибках см. в статье Устранение неполадок в запросах KQL для озера данных Microsoft Sentinel.