Кибербезопасность и информационная безопасность

Как написать Analytics Rule в Microsoft Sentinel

7 мин чтенияОпубликовано: 5 августа 2026 г.
Профессиональная визуальная иллюстрация Analytics Rule в Microsoft Sentinel в области SIEM и обнаружения
Быстрый ответ

Хорошее правило Analytics Rule в Microsoft Sentinel начинается с поведения, которое вы хотите обнаружить, и источников, которые могут его подтвердить. Затем вы пишете KQL, которое возвращает четкую единицу расследования, определяете частоту и Lookback, сопоставляете Entities, устанавливаете Severity и MITRE, выбираете Grouping и выполняете Test и Tuning. Цель правила — не генерировать много Alerts, а создавать Incidents, которые можно понять, проверить и на которые можно отреагировать.

Легко написать Query, которая возвращает строки. Сложнее превратить ее в стабильное Detection. Analytics Rule работает долгое время с меняющимися данными, генерирует Alerts, влияет на рабочую нагрузку аналитиков и иногда запускает Automation. Ошибка в определении временного окна, Entity или Threshold может привести к дублированию, пропускам или неправильной реакции.

Microsoft Sentinel поддерживает несколько типов Analytics rules. Scheduled rules являются наиболее распространенными и основаны на KQL, которая выполняется через определенные промежутки времени и проверяет Lookback period. Также существуют NRT — Near Real-Time — и встроенные шаблоны или обнаружения в зависимости от платформы. Руководство сосредоточено на Scheduled query rule, поскольку оно позволяет понять все компоненты планирования.

Примером является Password Spray в лабораторной среде. Оно не предназначено для несанкционированного мониторинга людей, и Thresholds не являются универсальной рекомендацией. Их следует калибровать в соответствии с Baseline, архитектурой идентификации и VPN/Proxy организации.

Шаг 1: Напишите спецификацию Detection перед KQL

Use Case должен отвечать на четкие вопросы: какое поведение мы будем обнаруживать? Почему оно опасно? Какие Data sources необходимы? Какова Expected benign activity? Кто Owner? Что будет делать аналитик, когда правило сработает? С какой MITRE technique оно связано?

ЭлементПример для Password Spray
ГипотезаОдин исходный IP-адрес пытается потерпеть неудачу с множеством пользователей, чтобы найти действительный пароль
ИсточникЖурналы входа с указанием времени, пользователя, IP и результата
Результирующая единицаIP и временное окно с количеством попыток и пользователей
Ожидаемые исключенияVPN, проверки Red Team, старый сервис или Identity provider
Действие аналитикаПроверка пользователей, успехов, MFA, Reputation и последующей активности
Owner и ReviewDetection engineer; ежемесячная проверка или после изменения источника

Также определите границы. Правило не доказывает Account compromise. Оно обнаруживает Pattern, который требует расследования. Если есть успех, это может повысить Priority, но все равно необходимо убедиться в последовательности и контексте.

Шаг 2: Убедитесь в готовности данных

Откройте таблицу и проверьте Sample events. Является ли ResultType числом или строкой? Является ли IPAddress пустым в некоторых событиях? Появляются ли Service principals рядом с пользователями? Какова Ingestion delay? Существуют ли Tenant или Application, которые требуют исключения?

Правило, основанное на нестабильном поле, сломается. Задокументируйте Schema, Connector, Normalization и Data health query. Если источник перестает отправлять данные, Dashboard должен выдавать предупреждение; «нет Alerts» не обязательно означает безопасное состояние.

Шаг 3: Напишите Query, которая возвращает полезные Evidence

Базовая Query для Password Spray в лаборатории может группировать сбои по IP и временному окну и требовать определенное количество уникальных пользователей:

let Lookback = 15m;
let MinimumAttempts = 20;
let MinimumUsers = 5;
SigninLogs
| where TimeGenerated > ago(Lookback)
| where tostring(ResultType) != "0"
| summarize Attempts=count(),
            Users=dcount(UserPrincipalName),
            UserList=make_set(UserPrincipalName, 20),
            FirstSeen=min(TimeGenerated),
            LastSeen=max(TimeGenerated)
  by IPAddress, bin(TimeGenerated, 5m)
| where Attempts >= MinimumAttempts and Users >= MinimumUsers
| project TimeGenerated, IPAddress, Attempts, Users, UserList, FirstSeen, LastSeen
SigninLogs | where ResultType == "50126" // Incorrect password or username | summarize FailureCount = count(), UserList = make_list(UserPrincipalName), UniqueUsers = dcount(UserPrincipalName), FirstAttempt = min(TimeGenerated), LastAttempt = max(TimeGenerated) by IPAddress, bin(TimeGenerated, 1h) | where FailureCount > 10 and UniqueUsers > 5 | extend Description = "Multiple failed login attempts from a single IP address to various user accounts."

Результат должен содержать поля, необходимые аналитику, и поля, которые будут сопоставлены с Entities. В данном случае IPAddress является центральной Entity, а UserList — Context. Динамический список пользователей не обязательно подходит для сопоставления с одной учетной записью, поэтому можно создать Alert по IP и добавить Custom details, или изменить структуру результата в соответствии с Workflow.

Проверьте Query для нескольких диапазонов: час, день и неделя. Вручную пометьте True, False и Benign Positives. Посмотрите, обнаруживает ли оно активность VPN или Health checks. Не корректируйте Threshold только для того, чтобы получить ноль Alerts.

Шаг 4: Частота и Lookback

Query frequency определяет, как часто выполняется правило. Query period или Lookback определяет, как далеко назад оно проверяет данные. Если правило выполняется каждые пять минут и проверяет 15 минут, один и тот же Pattern может появиться в нескольких выполнениях. Механизмы Event grouping, Alert grouping или Suppression могут уменьшить дублирование, но необходимо понимать их влияние.

Lookback должен быть достаточно длинным, чтобы охватить Ingestion delay и обнаружить поведение, но не слишком широким. Медленный Password Spray может потребовать более широкого окна или другого Baseline. Слишком быстрое правило может создать шум; слишком медленное правило увеличивает время обнаружения.

НастройкаПрофессиональный вопрос
Run everyНасколько быстро нужно обнаружить и сколько стоит запуск?
Lookup data from lastКакова продолжительность поведения и задержка данных?
ThresholdСколько результатов составляют один Alert?
Start runningТребуется ли время для первых данных?
SuppressionСкроет ли временная блокировка истинное изменение?

Шаг 5: Severity, MITRE и сведения об Alert

Severity должна отражать риск при выполнении условия, а не конечный результат расследования. Password Spray без успеха может быть Medium, но попытка против Privileged учетных записей или успех после сбоев может оправдать другую оценку. Можно использовать Alert details override для динамического отображения IP, пользователя или Count в заголовке, сохраняя при этом читаемый заголовок.

Сопоставление MITRE ATT&CK помогает объяснить поведение противника и построить Coverage map. Выберите Tactics и Techniques, которые соответствуют фактической логике. Не сопоставляйте длинный список только для того, чтобы выглядеть всеобъемлющим.

Custom details должны отображать Context, который сокращает Triage: Attempts, Users, FirstSeen, LastSeen, Application или Tenant. Избегайте передачи конфиденциальной информации, которая не требуется.

Шаг 6: Сопоставление сущностей

Entity mapping позволяет Sentinel идентифицировать IP, Account, Host, URL и многое другое. Качественная Entity позволяет проводить Investigation, Enrichment, UEBA и связываться с другими Incidents. Убедитесь, что поле в выходных данных является Scalar и имеет соответствующий формат.

В примере IP.Address сопоставляется с IPAddress. Если правило возвращает один UserPrincipalName для каждой строки, можно сопоставить Account.FullName или AadUserId в соответствии с Schema. Когда Query суммирует многих пользователей в списке, не заставляйте сопоставлять, которое не представляет одну Entity.

Шаг 7: Группировка событий и группировка предупреждений

Event grouping определяет, станет ли каждая строка Query отдельным Alert или все результаты будут объединены. Если каждый IP является отдельным Case, строка для каждого IP и Alert для каждого Result могут быть логичными. Если все объединено в один Alert, аналитик может получить огромный Incident с несвязанными IP-адресами.

Alert grouping может присоединять Alerts к Incident по Entities или деталям. Определите окно и обнаружение реальной связи. Слишком агрессивная Grouping скрывает развитие и смешивает Scopes; слишком слабая Grouping создает Incident для каждого запуска.

Шаг 8: Автоматизация и задачи

На первом этапе автоматизация может назначить Owner, добавить Tags, создать Tasks, обогатить IP или отправить Notification. Автоматические действия Containment требуют высокого Confidence, Exceptions, утверждения и возможности Rollback. Новое Detection обычно требует периода Monitor перед значимой автоматической реакцией.

Приложите Tasks, которые направляют аналитика: проверьте успехи с того же IP, проверьте MFA, проверьте Reputation, ищите дальнейшую активность и свяжитесь с владельцем учетной записи. Таким образом, Rule генерирует процесс, а не только Alert.

Тестирование и настройка

  1. Вручную выполните Query на исторических данных и отметьте результаты.
  2. Выполните Unit test с имитированными событиями, представляющими Positive и Negative cases.
  3. Активируйте Rule в режиме мониторинга без опасной Automation.
  4. Измерьте Volume, True/False/Benign Positive, время Triage и качество Context.
  5. Измените Threshold, exclusions или grouping с документацией причины.
  6. Выполните Regression test после изменения Parser, Connector или Query.
  7. Установите Review date и Owner; Rule без обслуживания становится долгом обнаружения.

Контрольный список перед запуском

  • Use Case и гипотеза задокументированы.
  • Data source, Schema и Delay проверены.
  • Query возвращает четкую единицу расследования.
  • Frequency и Lookback охватывают поведение без необычного дублирования.
  • Severity и MITRE соответствуют логике.
  • Entities и Custom details корректны.
  • Grouping проверен по нескольким результатам.
  • Существуют Playbook, Owner и Review date.
  • Проверены Privacy, стоимость и разрешения.
  • Существует Rollback для изменений и Automation.

Распространенные ошибки

  • Начинать с Query, найденной в Интернете, без локального Use Case.
  • Сопоставлять Entity из списка или из нестабильного поля.
  • Использовать перекрывающийся Lookback без понимания дублирования.
  • Устанавливать High severity для каждого Rule.
  • Исключать IP или пользователя навсегда без Expiration.
  • Добавлять Suppression, которое скрывает эскалацию активности.
  • Активировать автоматическую блокировку до периода Tuning.
  • Не проверять Data health и Schema changes.

Резюме и CTA

Выберите один Use Case в лаборатории и напишите одностраничную спецификацию Detection перед KQL. Затем создайте Rule, запустите ее на смоделированных данных и задокументируйте три результата: True, False и Benign Positive. Самое важное улучшение — это не еще одно условие в Query, а Incident, который следующий аналитик может быстро и последовательно расследовать.

Вопросы и ответы

В чем разница между Scheduled rule и NRT rule?

Scheduled rule запускает KQL через определенные промежутки времени и проверяет Lookback. NRT предназначена для обнаружения в режиме, близком к реальному времени, с различными ограничениями и настройками. Выбор зависит от Use Case и поддержки платформы.

Как выбрать Threshold?

Начинают с поведения и риска, исследуют исторический Baseline и отмечают результаты. Threshold — это отправная точка для калибровки, а не универсальное число.

Должна ли каждая строка Query быть Alert?

Не обязательно. Event grouping должно соответствовать единице расследования. Иногда каждый IP или Host является отдельным Alert; иногда правильно объединять.

Почему Entity mapping важен?

Entities позволяют получить контекст, провести Investigation, связать Alerts и обогатить данные. Правило без Entities может быть сложнее расследовать.

Когда активировать автоматическую реакцию?

Когда Confidence, Impact и Exceptions понятны, есть организационное одобрение и Rollback, а Rule прошла достаточные Test и Tuning.

Хотите проверить, подходит ли вам эта программа?

Оставьте контакты — консультант HPI перезвонит вам для короткого разговора, без обязательств.

Ваши данные хранятся безопасно.

Для обучения SOC и кибербезопасности в рамках программы Cybersecurity & AI

Хотите узнать подробности программы? Оставьте контакты — мы свяжемся.

Похожие статьи