你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Jupyter 笔记本提供了一个交互式环境,用于浏览、分析和可视化Microsoft Sentinel数据湖和联合表中的数据。 借助笔记本,你可以在一个位置编写和执行代码、记录工作流和查看结果。 这样就可以轻松地执行数据浏览、生成高级分析解决方案,并与其他人共享见解。 通过利用 Visual Studio Code 中的 Python 和 Apache Spark,笔记本可帮助将原始安全数据转换为可操作的智能。
本文介绍如何在 Visual Studio Code 中使用 Jupyter 笔记本浏览 Data Lake 数据并与之交互。
先决条件
载入到Microsoft Sentinel数据湖
若要在Microsoft Sentinel数据湖中使用笔记本,必须先加入到数据湖。 如果尚未加入Sentinel数据湖,请参阅载入到Microsoft Sentinel数据湖。 如果最近已加入数据湖,可能需要一段时间才能引入足够的数据量,然后才能使用笔记本创建有意义的分析。
权限
Microsoft Entra ID角色提供跨数据湖中所有工作区的广泛访问权限。 或者,可以使用 Azure RBAC 角色授予对单个工作区的访问权限。 具有Microsoft Sentinel工作区的 Azure RBAC 权限的用户可以对数据湖层中的这些工作区运行笔记本。 有关详细信息,请参阅 Microsoft Sentinel 中的角色和权限。
(可选)可以将Microsoft Sentinel范围或行级 RBAC 配置为进一步限制工作区中的数据访问。 启用后,行级别范围根据用户分配的范围限制查询返回的数据。 如果未配置行级别范围,则现有的工作区级别权限模型将保持不变。 有关详细信息,请参阅配置Microsoft Sentinel范围 (行级别 RBAC) (预览版) 。
若要在分析层中创建新的自定义表,必须在 Log Analytics 工作区中为 Data Lake 托管标识分配 Log Analytics 参与者 角色。
若要分配角色,请执行以下步骤:
- 在Azure 门户中,导航到要向其分配角色的 Log Analytics 工作区。
- 在左侧导航窗格中 选择“访问控制 (IAM) ”。
- 选择 “添加角色分配”。
- 在“角色”表中,选择“Log Analytics 参与者”,然后选择“下一步”
- 选择“ 托管标识”,然后选择“ 选择成员”。
- Data Lake 托管标识是系统分配的托管标识,名为
msg-resources-<guid>。 选择托管标识,然后选择 “选择”。 - 选择“ 查看并分配”。
有关向托管标识分配角色的详细信息,请参阅使用 Azure 门户分配Azure角色。
安装 Visual Studio Code 和 Microsoft Sentinel 扩展
如果还没有Visual Studio Code,请下载并安装适用于 Mac、Linux 或 Windows的 Visual Studio Code。
Visual Studio Code (VS Code) 的 Microsoft Sentinel 扩展是从扩展市场安装的。 若要安装扩展,请执行以下步骤:
- 在左侧工具栏中选择“扩展市场”。
- 搜索Sentinel。
- 选择Microsoft Sentinel扩展,然后选择“安装”。
- 安装扩展后,Microsoft Sentinel左侧工具栏中会显示
图标。
安装适用于 Visual Studio Code 的 GitHub Copilot 扩展,以便在笔记本中启用代码完成和建议。
- 在扩展市场中搜索GitHub Copilot并安装它。
- 安装后,使用 GitHub 帐户登录到 GitHub Copilot。
浏览数据湖层表
安装 Microsoft Sentinel 扩展后,可以开始浏览数据湖层表并创建 Jupyter 笔记本来分析数据。
登录到 Microsoft Sentinel 扩展
选择左侧工具栏
图标Microsoft Sentinel。此时将显示一个对话框,其中包含以下文本 扩展“Microsoft Sentinel”希望使用 Microsoft 登录。 选择 “允许”。
选择帐户名称以完成登录。
如果有多个与登录名关联的来宾帐户,则可以在帐户之间无缝切换。 若要在帐户之间切换,请选择Visual Studio Code窗口左下角的帐户名称。 一次只能选择一个帐户。
重要
在帐户之间切换会断开任何活动的 pyspark 会话。
查看数据湖表和作业
登录后,Sentinel扩展会在左窗格中显示 Lake 表和作业的列表。 表按数据库和类别分组。 联合表显示在“系统表”下的“联合表”类别下。 选择一个表以查看列定义。
有关作业的信息,请参阅 作业和计划。 有关联合表的详细信息,请参阅在 Microsoft Sentinel data Lake 中使用联合表。
创建新笔记本
若要创建新的笔记本,请使用以下方法之一。
在新笔记本中,将以下代码粘贴到第一个单元格中。
from sentinel_lake.providers import MicrosoftSentinelProvider data_provider = MicrosoftSentinelProvider(spark) table_name = "EntraGroups" df = data_provider.read_table(table_name) df_filtered = df.select("displayName", "groupTypes", "mail", "mailNickname", "description", "tenantId").show(100, truncate=False) # Transform the dataframe df_transformed = df.filter(df.mail.isNotNull()).select("displayName", "groupTypes", "mail", "mailNickname", "description", "tenantId") write_options = { 'mode': 'overwrite' } # Save to a new table data_provider.save_as_table(df_transformed, "EntraGroups_Processed_SPRK", write_options=write_options)
编辑器为 MicrosoftSentinelProvider 数据湖中的 类和表名提供智能感知代码完成。
选择“ 中等 ”,在中型运行时池中运行笔记本。 有关不同运行时的详细信息,请参阅选择适当的Microsoft Sentinel运行时。
注意
选择内核将启动 Spark 会话,并在笔记本中运行代码。 选择池后,可能需要 3-5 分钟才能启动会话。 后续运行速度更快,因为会话已处于活动状态。
会话启动时,笔记本中的代码将运行,结果将显示在代码单元下方的输出窗格中,例如:
有关演示如何与Microsoft Sentinel数据湖交互的示例笔记本,请参阅Microsoft Sentinel数据湖的示例笔记本。
状态栏
笔记本底部的状态栏提供有关笔记本和 Spark 会话的当前状态的信息。 状态栏包括以下信息:
所选 Spark 池的 vCore 利用率百分比。 将鼠标悬停在百分比上可查看使用的 vCore 数和池中可用的 vCore 总数。 这些百分比表示登录帐户的交互式工作负载和作业工作负载的当前使用情况。
Spark 会话的连接状态,例如
Connecting、Connected或Not Connected。
设置会话超时
可以为交互式笔记本设置会话超时和超时警告。 这些设置将保留在扩展设置中,以便跨会话保留这些设置。
若要更改超时,请在笔记本底部的状态栏中选择连接状态。 从以下选项中选择:
设置会话超时期限:设置会话超时前的时间(以分钟为单位)。默认值为 30 分钟。
重置会话超时期限:将会话超时重置为默认值 30 分钟。
设置会话超时警告期限:设置超时前显示会话即将超时的警告的时间(以分钟为单位)。默认值为 5 分钟。
重置会话超时警告期:将会话超时警告重置为默认值 5 分钟。
在笔记本中使用GitHub Copilot
使用GitHub Copilot帮助你在笔记本中编写代码。 GitHub Copilot基于代码上下文提供代码建议和自动完成。 若要使用 GitHub Copilot,请确保在 Visual Studio Code 中安装了 GitHub Copilot 扩展。
从Microsoft Sentinel数据湖的示例笔记本复制代码,并将其保存在笔记本文件夹中,以便为GitHub Copilot提供上下文。 然后,GitHub Copilot将能够根据笔记本的上下文建议代码完成。
以下示例演示生成代码评审GitHub Copilot。
Microsoft Sentinel Provider 类
若要连接到 Microsoft Sentinel data Lake,请使用 SentinelLakeProvider 类。
此类是模块的一部分, access_module.data_loader 提供与数据湖交互的方法。 若要使用此类,请导入它并使用会话创建类的 spark 实例。
from sentinel_lake.providers import MicrosoftSentinelProvider
data_provider = MicrosoftSentinelProvider(spark)
有关可用方法的详细信息,请参阅 Microsoft Sentinel Provider 类参考。
选择适当的运行时池
有三个运行时池可用于在 Microsoft Sentinel 扩展中运行 Jupyter 笔记本。 每个池都针对不同的工作负载和性能要求而设计。 运行时池的选择会影响 Spark 作业的性能、成本和执行时间。
| 运行时池 | 建议的用例 | 特征 |
|---|---|---|
| Small | 开发、测试和轻型探索分析。 具有简单转换的小型工作负载。 成本效率优先。 |
适用于小型工作负载 简单转换。 成本更低,执行时间更长。 |
| Medium | 具有联接、聚合和 ML 模型训练的 ETL 作业。 具有复杂转换的中等工作负荷。 |
性能比 Small 有所提高。 处理并行度和中等内存密集型操作。 |
| Large | 深度学习和 ML 工作负载。 大量的数据洗牌、大型联接或实时处理。 关键执行时间。 |
高内存和计算能力。 最小延迟。 最适合大型、复杂或时间敏感型工作负载。 |
注意
首次访问内核选项可能需要大约 30 秒才能加载。
选择运行时池后,可能需要 3-5 分钟才能启动会话。
查看消息、日志和错误
消息日志和错误消息显示在 Visual Studio Code 的三个区域中。
“ 输出 ”窗格。
- 在“输出”窗格中,从下拉列表中选择“Microsoft Sentinel”。
- 选择“ 调试 ”以包含详细的日志条目。
笔记本中的内联消息提供有关代码单元执行的反馈和信息。 这些消息包括与前面的单元格中的代码相关的执行状态更新、进度指示器和错误通知
Visual Studio Code右下角的通知弹出窗口(也称为 Toast 消息)提供有关笔记本和 Spark 会话中操作状态的实时警报和更新。 这些通知包括消息、警告和错误警报,例如成功连接到 Spark 会话和超时警告。
作业和计划
可以使用适用于Visual Studio Code的 Microsoft Sentinel 扩展计划作业在特定时间或间隔运行。 作业允许自动执行数据处理任务,以汇总、转换或分析Microsoft Sentinel数据湖中的数据。 作业还用于处理数据并将结果写入数据湖层或分析层中的自定义表。 有关创建和管理作业的详细信息,请参阅 创建和管理 Jupyter 笔记本作业。
VS Code Notebook 的服务参数和限制
以下部分列出了使用 VS Code Notebooks 时Microsoft Sentinel数据湖的服务参数和限制。
| 类别 | 参数/限制 |
|---|---|
| 分析层中的自定义表 | 无法从笔记本中删除分析层中的自定义表;使用 Log Analytics 删除这些表。 有关详细信息,请参阅添加或删除Azure监视日志中的表和列 |
| 网关 Web 套接字超时 | 2 小时 |
| 交互式查询超时 | 2 小时 |
| 交互式会话非活动超时 | 20 分钟 |
| 语言 | Python |
| 图形查询超时 | 7.5 分钟 |
| 笔记本作业超时 | 8 小时 |
| 最大并发笔记本作业数 | 3,后续作业已排队 |
| 交互式查询的最大并发用户数 | 大型池上的 8-10 |
| 会话启动时间 | Spark 计算会话大约需要 5-6 分钟才能启动。 可以在 VS Code Notebook 底部查看会话的状态。 |
| 支持的库 | 仅支持Azure Synapse库 3.4 和用于抽象函数的 Microsoft Sentinel 提供程序库来查询数据湖。 不支持 Pip 安装或自定义库。 |
| 显示记录的 VS Code UX 限制 | 100,000 行 |
疑难解答
有关使用笔记本时的常见错误和解决方案,请参阅排查Microsoft Sentinel数据湖上的笔记本问题。