Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Записные книжки 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.
Чтобы назначить роль, выполните следующие действия.
- На портале Azure перейдите в рабочую область Log Analytics, которой нужно назначить роль.
- Выберите элемент управления доступом (IAM) в области навигации слева.
- выберите Добавить назначение ролей.
- В таблице ролей выберите "Участник Log Analytics", а затем нажмите кнопку "Далее"
- Выберите управляемое удостоверение, а затем выберите "Выбрать членов".
- Управляемое удостоверение вашего хранилища данных — это системное управляемое удостоверение с именем
msg-resources-<guid>. Выберите управляемое удостоверение, а затем нажмите кнопку "Выбрать". - Выберите Рецензирование и назначение.
Для получения дополнительной информации о назначении ролей управляемым удостоверениям см. Назначение ролей Azure с помощью портала Azure.
Установка Visual Studio Code и расширения Microsoft Sentinel
Если у вас еще нет Visual Studio Code, скачайте и установите Visual Studio Code для Mac, Linux или Windows.
Расширение Microsoft Sentinel для Visual Studio Code (VS Code) устанавливается из магазина расширений. Чтобы установить расширение, выполните следующие действия.
- Выберите Extensions Marketplace на панели инструментов слева.
- Найдите Sentinel.
- Выберите расширение Microsoft Sentinel и нажмите кнопку "Установить".
- После установки расширения значок щита Microsoft Sentinel появится на левой панели инструментов.
Установите расширение GitHub Copilot для Visual Studio Code, чтобы включить завершение кода и предложения в записных книжках.
- Найдите GitHub Copilot в Extensions Marketplace и установите его.
- После установки войдите в GitHub Copilot с помощью учетной записи GitHub.
Изучение уровневых таблиц хранилища данных
После установки расширения Microsoft Sentinel можно начать исследование таблиц уровня хранилища данных и создание записных книжек Jupyter для анализа данных.
Вход в расширение Microsoft Sentinel
Щелкните значок щита Microsoft Sentinel на левой панели инструментов.
Откроется диалоговое окно со следующим текстом расширение "Microsoft Sentinel" хочет войти с помощью учетной записи Microsoft. Выберите Разрешить.
Выберите имя учетной записи, чтобы завершить вход.
Просмотр таблиц и заданий озера данных
После входа расширение Sentinel отображает список таблиц Lake и заданий в левой области. Таблицы группируются по базе данных и категории. Выберите таблицу, чтобы просмотреть определения столбцов.
Дополнительные сведения о заданиях см. в разделе "Задания" и "Планирование".
Создание записной книжки
Чтобы создать записную книжку, используйте один из следующих методов.
Введите > в поле поиска или нажмите клавиши Ctrl+Shift+P, а затем введите Создать новый Jupyter Notebook.
Выберите "Создать файл > ", а затем выберите Jupyter Notebook в раскрывающемся списке.
В новой записной книжке вставьте следующий код в первую ячейку.
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 класса, так и для имен таблиц в озере данных.
Выберите треугольник Запустить, чтобы выполнить код в ноутбуке. Результаты отображаются в области вывода под ячейкой кода.
Выберите Microsoft Sentinel из списка для списка пулов среды выполнения.
Выберите Средний, чтобы запустить блокнот в пуле выполнения среднего размера. Дополнительные сведения о различных средах выполнения см. в разделе "Выбор соответствующей среды выполнения 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 генерирует рецензию кода.
Класс Поставщика 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.
Панель вывода.
- В области вывода выберите Microsoft Sentinel в раскрывающемся списке.
- Выберите "Отладка", чтобы включить подробные записи журнала.
В строковых сообщениях записной книжки содержатся отзывы и сведения о выполнении ячеек кода. Эти сообщения включают обновления состояния выполнения, индикаторы хода выполнения и уведомления об ошибках, связанные с кодом в предыдущей ячейке.
Всплывающее окно уведомления в правом нижнем углу 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 | Произошла ошибка. Перезапустите сеанс и повторите попытку. | Эта проблема является временной и может быть решена, перезагрузив сеанс и повторите попытку. Если эта проблема сохранится, обратитесь в службу поддержки. |