Поделиться через


Запуск записных книжек в озере данных Microsoft Sentinel

Записные книжки Jupyter предоставляют интерактивную среду для изучения, анализа и визуализации данных в озере данных Microsoft Sentinel. С помощью записных книжек можно написать и выполнить код, документируйте рабочий процесс и просмотрите результаты— все в одном месте. Это позволяет легко выполнять исследование данных, создавать расширенные решения аналитики и обмениваться аналитическими сведениями с другими пользователями. Используя Python и Apache Spark в Visual Studio Code, записные книжки помогают преобразовать необработанные данные безопасности в практический интеллект.

В этой статье показано, как исследовать и взаимодействовать с данными хранилища данных, используя Jupyter-ноутбуки в Visual Studio Code.

Предпосылки

Подключение к озеру данных Microsoft Sentinel

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

Разрешения

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

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

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

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

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

Установка Visual Studio Code и расширения Microsoft Sentinel

Если у вас еще нет Visual Studio Code, скачайте и установите Visual Studio Code для Mac, Linux или Windows.

Расширение Microsoft Sentinel для Visual Studio Code (VS Code) устанавливается из магазина расширений. Чтобы установить расширение, выполните следующие действия.

  1. Выберите Extensions Marketplace на панели инструментов слева.
  2. Найдите Sentinel.
  3. Выберите расширение Microsoft Sentinel и нажмите кнопку "Установить".
  4. После установки расширения значок щита Microsoft Sentinel появится на левой панели инструментов.

Снимок экрана, показывающий рынок расширений.

Установите расширение GitHub Copilot для Visual Studio Code, чтобы включить завершение кода и предложения в записных книжках.

  1. Найдите GitHub Copilot в Extensions Marketplace и установите его.
  2. После установки войдите в GitHub Copilot с помощью учетной записи GitHub.

Изучение уровневых таблиц хранилища данных

После установки расширения Microsoft Sentinel можно начать исследование таблиц уровня хранилища данных и создание записных книжек Jupyter для анализа данных.

Вход в расширение Microsoft Sentinel

  1. Щелкните значок щита Microsoft Sentinel на левой панели инструментов.

  2. Откроется диалоговое окно со следующим текстом расширение "Microsoft Sentinel" хочет войти с помощью учетной записи Microsoft. Выберите Разрешить.

    Снимок экрана: диалоговое окно входа.

  3. Выберите имя учетной записи, чтобы завершить вход.

    Снимок экрана: список выбора учетной записи в верхней части страницы.

Просмотр таблиц и заданий озера данных

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

Дополнительные сведения о заданиях см. в разделе "Задания" и "Планирование".

Снимок экрана: список таблиц, заданий и метаданных выбранной таблицы.

Создание записной книжки

  1. Чтобы создать записную книжку, используйте один из следующих методов.

  2. Введите > в поле поиска или нажмите клавиши Ctrl+Shift+P, а затем введите Создать новый Jupyter Notebook. Снимок экрана: создание записной книжки на панели поиска.

  3. Выберите "Создать файл > ", а затем выберите Jupyter Notebook в раскрывающемся списке.
    Снимок экрана: создание новой записной книжки в меню файла.

  4. В новой записной книжке вставьте следующий код в первую ячейку.

    from sentinel_lake.providers import MicrosoftSentinelProvider
    data_provider = MicrosoftSentinelProvider(spark)
    
    table_name = "EntraGroups"  
    df = data_provider.read_table(table_name)  
    df.select("displayName", "groupTypes", "mail", "mailNickname", "description", "tenantId").show(100,   truncate=False)  
    

Редактор предоставляет завершение кода IntelliSense как для MicrosoftSentinelProvider класса, так и для имен таблиц в озере данных.

  1. Выберите треугольник Запустить, чтобы выполнить код в ноутбуке. Результаты отображаются в области вывода под ячейкой кода.
    Снимок экрана: запуск ячейки записной книжки.

  2. Выберите Microsoft Sentinel из списка для списка пулов среды выполнения. Снимок экрана: средство выбора среды выполнения.

  3. Выберите Средний, чтобы запустить блокнот в пуле выполнения среднего размера. Дополнительные сведения о различных средах выполнения см. в разделе "Выбор соответствующей среды выполнения Microsoft Sentinel". Снимок экрана: средство выбора размера пула запуска.

Замечание

При выборе ядра запускается сеанс Spark и выполняется код в записной книжке. После выбора пула может потребоваться 3–5 минут для запуска сеанса. Последующие запуски выполняются быстрее, так как сеанс уже активен.

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

Например записные книжки, демонстрирующие, как взаимодействовать с озером данных Microsoft Sentinel, см. в разделе Примеры записных книжек для озера данных Microsoft Sentinel.

Строка состояния

Строка состояния в нижней части записной книжки содержит сведения о текущем состоянии записной книжки и сеансе Spark. Строка состояния содержит следующие сведения:

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

  • Состояние подключения сеанса Spark, например Connecting, Connectedили Not Connected.

Снимок экрана: строка состояния в нижней части записной книжки.

Настройка времени ожидания сеанса

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

  • Задайте период времени ожидания сеанса: задает время за несколько минут до истечения времени ожидания сеанса. Значение по умолчанию — 30 минут.

  • Сброс периода времени ожидания сеанса: сбрасывает время ожидания сеанса до значения по умолчанию 30 минут.

  • Задайте период предупреждения времени ожидания сеанса: задает время в минутах до истечения времени ожидания, когда отображается предупреждение о времени ожидания сеанса. Значение по умолчанию — 5 минут.

  • Сброс периода предупреждения времени ожидания сеанса: сбрасывает предупреждение времени ожидания сеанса до значения по умолчанию 5 минут.

    Снимок экрана: параметр времени ожидания сеанса.

Использование GitHub Copilot в записных книжках

Используйте GitHub Copilot для написания кода в записных книжках. GitHub Copilot предоставляет предложения кода и автозавершение на основе контекста кода. Чтобы использовать GitHub Copilot, убедитесь, что у вас установлено расширение GitHub Copilot в Visual Studio Code.

Скопируйте код из примера записных книжек для озера данных Microsoft Sentinel и сохраните его в папке записных книжек, чтобы предоставить контекст для GitHub Copilot. Затем GitHub Copilot сможет предложить завершение кода на основе контекста записной книжки.

В следующем примере GitHub Copilot генерирует рецензию кода.

Снимок экрана: GitHub Copilot, создающий проверку кода.

Класс Поставщика Microsoft Sentinel

Чтобы подключиться к озеру данных Microsoft Sentinel, используйте класс SentinelLakeProvider. Этот класс является частью access_module.data_loader модуля и предоставляет методы взаимодействия с озером данных. Чтобы использовать этот класс, импортируйте его и создайте экземпляр класса с помощью сеанса spark .

from sentinel_lake.providers import MicrosoftSentinelProvider
data_provider = MicrosoftSentinelProvider(spark)

Дополнительные сведения о доступных методах см. в справочнике по классу поставщика Microsoft Sentinel.

Выберите соответствующий пул среды выполнения

Существует три пула среды выполнения, доступные для запуска записных книжек Jupyter в расширении Microsoft Sentinel. Каждый пул предназначен для различных рабочих нагрузок и требований к производительности. Выбор пула среды выполнения влияет на производительность, затраты и время выполнения заданий Spark.

Пул среды выполнения Рекомендуемые варианты использования Характеристики
Small Разработка, тестирование и легкий исследовательский анализ.
Небольшие рабочие нагрузки с простыми преобразованиями.
Приоритетная эффективность затрат.
Подходит для небольших рабочих нагрузок
Простые преобразования.
Более низкая стоимость, более длительное время выполнения.
Средний Задания ETL с объединениями, агрегацией и обучением модели машинного обучения.
Умеренные рабочие нагрузки с сложными преобразованиями.
Улучшенная производительность по сравнению с Small.
Обрабатывает параллелизм и умеренные операции с интенсивным объемом памяти.
крупный Рабочие нагрузки глубокого обучения и машинного обучения.
Обширное перемещение данных, большие объединения или обработка в реальном времени.
Критическое время выполнения.
Высокая память и вычислительные мощности.
Минимальные задержки.
Лучше всего подходит для больших, сложных или срочных по времени рабочих нагрузок.

Замечание

При первом доступе параметры ядра могут занять около 30 секунд для загрузки.
После выбора пула среды выполнения может потребоваться 3–5 минут для запуска сеанса.

Просмотр сообщений, журналов и ошибок

Журналы сообщений и сообщения об ошибках отображаются в трех областях в Visual Studio Code.

  1. Панель вывода.

    1. В области вывода выберите Microsoft Sentinel в раскрывающемся списке.
    2. Выберите "Отладка", чтобы включить подробные записи журнала.

    Снимок экрана: область вывода.

  2. В строковых сообщениях записной книжки содержатся отзывы и сведения о выполнении ячеек кода. Эти сообщения включают обновления состояния выполнения, индикаторы хода выполнения и уведомления об ошибках, связанные с кодом в предыдущей ячейке.

  3. Всплывающее окно уведомления в правом нижнем углу Visual Studio Code, также известное как тост-сообщение, предоставляет оповещения в режиме реального времени и обновляет состояние операций в ноутбуке и сеансе работы с Spark. Эти уведомления включают сообщения, предупреждения и оповещения об ошибках, такие как успешное подключение к сеансу Spark и предупреждения времени ожидания.

    Снимок экрана: всплывающее сообщение и сообщение об ошибке в строке.

Задания и планирование

Вы можете запланировать выполнение заданий в определенное время или интервалы с помощью расширения Microsoft Sentinel для Visual Studio Code. Задания позволяют автоматизировать задачи обработки данных для суммирования, преобразования или анализа данных в озере данных Microsoft Sentinel. Задания также используются для обработки данных и записи результатов в пользовательские таблицы на уровне хранения данных или уровне аналитики. Дополнительные сведения о создании заданий и управлении ими см. в статье "Создание заданий записной книжки Jupyter и управление ими".

Параметры службы и ограничения для ноутбуков VS Code

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

Категория Параметр или ограничение
Настраиваемая таблица на уровне аналитики Пользовательские таблицы на уровне аналитики нельзя удалить из ноутбука; используйте Log Analytics для удаления этих таблиц. Дополнительные сведения см. в разделе "Добавление или удаление таблиц и столбцов" в журналах Azure Monitor
Время ожидания веб-сокета шлюза 2 часа
Время ожидания интерактивного запроса 2 часа
Время бездействия для ожидания интерактивного сеанса 20 минут.
Язык Питон
Время ожидания задания записной книжки 8 часов
Максимальное число параллельных заданий записной книжки 3, следующие задания помещаются в очередь
Максимальное число одновременных пользователей при интерактивном запросе 8-10 в большом пуле
Время запуска сеанса Сеанс вычислений Spark занимает около 5–6 минут. Состояние сеанса можно просмотреть в нижней части записной книжки VS Code.
Поддерживаемые библиотеки Для запроса озера данных поддерживаются только библиотеки Azure Synapse 3.4 и библиотека Microsoft Sentinel Provider для абстрактных функций. Установка pip или пользовательские библиотеки не поддерживаются.
Ограничение пользовательского интерфейса VS Code для отображения записей 100 000 строк

Устранение неполадок

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

Категория ошибок Имя ошибки Код ошибки Сообщение об ошибке Рекомендуемое действие
DatabaseError Ошибка: DatabaseNotFound (База данных не найдена) 2001 База данных {DatabaseName} не найдена. Убедитесь, что база данных существует. Если база данных является новой, дождитесь обновления метаданных.
DatabaseError НеоднозначноеИмяБазыДанных 2002 Несколько баз данных (идентификаторы: {DatabaseID1}, {DatabaseID2}, ...) используют имя {DatabaseName}. Укажите определенный идентификатор базы данных. Укажите идентификатор базы данных, если несколько баз данных имеют одинаковое имя.
DatabaseError НесоответствиеIdБазыДанных 2003 База данных ({DatabaseName}, идентификатор {DatabaseID}) не найден. Проверьте имя базы данных и идентификатор. Чтобы получить идентификаторы баз данных, перечислить все базы данных.
DatabaseError ListDatabasesFailure 2004 Не удается получить базы данных. Перезапустите сеанс и повторите попытку. Перезапустите сеанс и повторите операцию через несколько минут.
ОшибкаТаблицы ТаблицаНеСуществует 2100 год. Таблица {TableName} не найдена в базе данных {DatabaseName}. Убедитесь, что таблица существует в базе данных. Если таблица или база данных новая, подождите несколько минут и повторите попытку.
ОшибкаТаблицы Подготовка незавершённо 2101 Таблица {TableName} не готова. Подождите несколько минут и повторите попытку. Таблица подготавливается. Подождите несколько минут и повторите попытку.
ОшибкаТаблицы DeltaTableMissing 2102 Таблица {TableName} пуста. Новые таблицы могут занять до нескольких часов, чтобы быть готовыми. Для полной синхронизации таблицы аналитики в озеро данных может потребоваться несколько часов. Для таблиц, которые находятся только в озере данных, проверьте, нужно ли загружать или восстанавливать данные.
ОшибкаТаблицы ТаблицаНеСуществуетДляУдаления 2103 Не удается удалить таблицу. Таблица {TableName} не найдена. Убедитесь, что таблица существует в базе данных. Если таблица или база данных новая, подождите несколько минут и повторите попытку.
AuthorizationFailure Ошибка: отсутствует SAS-токен (MissingSASToken) 2201 Не удается получить доступ к таблице. Перезапустите сеанс и повторите попытку. Сбой авторизации при попытке получить маркер доступа для таблицы. Перезапустите сеанс и повторите попытку.
AuthorizationFailure InvalidSASToken 2202 Не удается получить доступ к таблице. Перезапустите сеанс и повторите попытку. Сбой авторизации при попытке получить маркер доступа для таблицы. Перезапустите сеанс и повторите попытку.
AuthorizationFailure Срок действия токена истек 2203 Не удается получить доступ к таблице. Перезапустите сеанс и повторите попытку. Сбой авторизации при попытке получить маркер доступа для таблицы. Перезапустите сеанс и повторите попытку.
AuthorizationFailure ТаблицаНедостаточныеПрава 2204 Доступ, необходимый для таблицы {TableName} в базе данных {DatabaseName}. Обратитесь к администратору, чтобы запросить доступ к таблице или базе данных (рабочей области).
AuthorizationFailure ВнутреннийДоступКТаблицеЗапрещён 2205 Доступ к таблице {TableName} ограничен. Доступ к системным или пользовательским таблицам можно получить только из ноутбука.
AuthorizationFailure ОшибкаАвторизацииТаблицы 2206 Не удается сохранить данные в таблицу. Перезапустите сеанс и повторите попытку. Сбой авторизации при попытке сохранить данные в таблицу. Перезапустите сеанс и повторите попытку.
ОшибкаКонфигурации HadoopConfigFailure 2301 Не удается обновить конфигурацию сеанса. Перезапустите сеанс и повторите попытку. Эта проблема является временной и может быть решена, перезагрузив сеанс и повторите попытку. Если эта проблема сохранится, обратитесь в службу поддержки.
DataError JsonParsingFailure 2302 Метаданные таблицы повреждены. Обратитесь за помощью в службу поддержки. Обратитесь за помощью в службу поддержки. Укажите идентификатор арендатора, имя таблицы и имя базы данных.
TableSchemaError НесоответствиеСхемыТаблицы 2401 Столбец не найден в целевой таблице. Выровняйте схему DataFrame и целевую таблицу или используйте режим перезаписи. Обновите схему Кадра данных, чтобы она соответствовала таблице в целевой базе данных. Вы также можете полностью заменить таблицу в режиме перезаписи.
TableSchemaError ОтсутствуютТребуемыеСтолбцы 2402 Столбец {ColumnName} отсутствует в кадре данных. Проверьте схему DataFrame и выровняйте ее с целевой таблицей. Обновите схему Кадра данных, чтобы она соответствовала таблице в целевой базе данных. Вы также можете полностью заменить таблицу в режиме перезаписи.
TableSchemaError ИзменениеТипаСтолбцаЗапрещено 2403 Не удается изменить тип данных столбца {ColumnName}. Изменение типа данных не допускается для столбца. Проверьте существующие столбцы в целевой таблице и приведите в соответствие все типы данных в DataFrame.
TableSchemaError Изменение пустоплотности столбца не разрешено 2404 Не удается изменить значение NULL столбца {ColumnName}. Не удается обновить параметры nullability столбца. Проверьте целевую таблицу и согласуйте параметры с DataFrame.
ПриемError ОшибкаСозданияПапки 2501 Не удается создать хранилище для таблицы {TableName}. Эта проблема является временной и может быть решена, перезагрузив сеанс и повторите попытку. Если эта проблема сохранится, обратитесь в службу поддержки.
ПриемError ОшибкаЗапросаПодзадачи 2502 Не удается создать задание приема для таблицы {TableName}. Эта проблема является временной и может быть решена, перезагрузив сеанс и повторите попытку. Если эта проблема сохранится, обратитесь в службу поддержки.
ПриемError Ошибка создания подзадачи 2503 Не удается создать задание приема для таблицы {TableName}. Эта проблема является временной и может быть решена, перезагрузив сеанс и повторите попытку. Если эта проблема сохранится, обратитесь в службу поддержки.
InputError НеправильныйРежимЗаписи 2601 Недопустимый режим записи. Используйте добавление или перезапись. Укажите допустимый режим записи (добавление или перезапись) перед сохранением кадра данных.
InputError Секционирование не разрешено 2602 Не удается секционирование таблиц аналитики. Удалите любое секционирование для всех столбцов в таблицах аналитики.
InputError MissingTableSuffixLake 2603 Недопустимое имя настраиваемой таблицы. Все названия пользовательских таблиц в хранилище данных должны заканчиваться на _SPRK. Добавьте _SPRK в качестве суффикса к имени таблицы перед его записью в озеро данных.
InputError Отсутствует_суффикс_таблицы_LA 2604 Недопустимое имя настраиваемой таблицы. Все имена таблиц пользовательской аналитики должны заканчиваться _SPRK_CL. Добавьте _SPRK_CL в качестве суффикса в имя таблицы перед записью в хранилище аналитики.
Неизвестная ошибка ВнутренняяОшибкаСервера 2901 Произошла ошибка. Перезапустите сеанс и повторите попытку. Эта проблема является временной и может быть решена, перезагрузив сеанс и повторите попытку. Если эта проблема сохранится, обратитесь в службу поддержки.