你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Microsoft Sentinel 中使用联合数据源

设置联合数据连接器后,可以通过 Microsoft Sentinel 中的多个接口访问联合表。 联合表的使用方式与其他数据湖表相同。 本文介绍如何查看联合表、使用 KQL (Kusto 查询语言) 查询它们,以及如何在 Jupyter 笔记本中使用这些表。

先决条件

在开始之前,请确保:

了解联合表命名

联合表名称遵循模式 <tableName>_<connectorInstanceName>。 例如:

原始表名称 连接器实例名称 联合表名称
widgets ADLS01 widgets_ADLS01
sales_data AzureDBX01 sales_data_AzureDBX01
inventory Fabric01 inventory_Fabric01

如果连接器实例中的多个表具有相同的表名称,则会在连接器实例名称后面追加数字标识符,例如 widgets_ADLS01_1 ,当连接器实例中的 ADLS01 两个表称为 widgets时。

从Sentinel数据湖查询数据时,请使用联合表名称。

在表管理中查看联合表

表管理视图概述了Sentinel数据湖中的所有表,包括联合表。

  1. 导航到Microsoft Sentinel>配置>
  2. 选择“ 类型” 筛选器。
  3. 选择“ 联合 ”,然后选择“ 应用”。

显示已筛选以显示联合表的表管理视图的屏幕截图。

查看表详细信息

选择表格行以打开详细信息面板。 面板包含三个选项卡:

Tab 说明
概述 有关联合表的基本信息,包括源类型和连接状态。
数据源 显示哪些连接器实例为此表提供数据。
架构 显示表列的列、数据类型和说明。 有权写入数据湖系统表的用户可以选择“ 刷新架构” 来更新源中的列和其他架构元数据。

显示联合表详细信息浮出控件的屏幕截图,其中包含“概述”、“数据源”和“架构”选项卡。

使用 KQL 查询联合表

Microsoft Sentinel 中的 KQL 查询页允许查询联合表以及本机Sentinel数据。 KQL 作业、交互式和异步查询以及 MCP 工具支持联合表。

  1. 导航到 Microsoft Sentinel>Data Lake 浏览>KQL 查询

  2. 在信息栏中选择 “所选工作区 ”按钮。

  3. 选择“ 系统表” 作为工作区之一。

  4. 在“ 架构 ”选项卡中,展开“ 系统表” 部分。

  5. 展开 “联合表 ”部分。

  6. 查找数据源的联合类型,例如 Microsoft Fabric、Azure Databricks 或 Azure Data Lake Storage Gen2。

  7. 展开联合类型以查看联合表。

  8. 展开表以查看其列。

注意

由于 KQL 中的查询性能优化,联合表中的新数据最多可能需要 15 分钟才能可供查询。

显示“KQL 查询架构”选项卡的屏幕截图,其中展开了联合表。

编写和执行查询

针对联合表的查询与对本机湖表的查询类似,有一些重要区别:

  • 外部源中表的架构可能会发生更改。 这可能会导致在指示列不存在的查询期间失败。 通过选择联合表、选择“ 架构 ”选项卡并选择“ 刷新架构”,刷新“表管理”页上的列。

  • 没有 TimeGenerated 列的联合表,或者存在 TimeGenerated 格式错误的列的联合表,不能在数据湖资源管理器中使用用户界面中的时间选取器来选择时间范围。 在 KQL 正文中定义与联合表的日期格式匹配的日期筛选器。

从联合查询创建 KQL 作业

可以根据使用联合表的查询创建 KQL 作业:

  1. 使用联合表编写和测试 KQL 查询。
  2. 选择查询面板右上角的 “创建作业 ”按钮。
  3. 配置作业设置,包括计划和输出目标。
  4. 保存作业。

注意

  • 不支持将数据写入联合表。 KQL 输出是根据创建 KQL 作业时使用的相同条件创建的,可在其中根据所选目标写出到新的表或现有表。

  • 如果联合表不包含 TimeGenerated 列,或者输出不包含 TimeGenerated 每行具有正确格式的日期值的列,则 KQL 查询在湖中创建表后将无法对表起作用。

KQL 作业、异步查询和 MCP 工具完全支持联合表。

使用联合表查询创建 MCP 工具

可以根据使用联合表的查询创建 MCP 工具:

  1. 使用联合表编写和测试 KQL 查询。

  2. 选择查询编辑器上方的 “另存为工具 ”按钮。

  3. 根据需要调整查询,例如参数化值。

  4. 对于联合表的任何引用,请确保在表名称前面加上 workspace("default").。 例如,如果表为 widgets_ADLS01,则代码显示 workspace("default").widgets_ADLS01 该表。

  5. 保存该工具。

在 Jupyter 笔记本中使用联合表

可以通过 Microsoft Sentinel VS Code 扩展在 Jupyter 笔记本中访问联合表。

在 Microsoft Sentinel VS Code 扩展中,联合表显示在:湖表>系统表>联合表

显示“系统表”“联合表”下Microsoft Sentinel VS Code 扩展中的联合表的屏幕截图。

在 Jupyter 笔记本中使用联合表遵循与本机系统表相同的模式:

  1. 使用完整的表名:使用 格式引用 <tableName>_<connectorInstance> 表。
  2. 不指定工作区名称:读取操作不需要工作区规范。
  3. 只读访问:联合表是只读的;无法将数据写回到联合源。

注意

首次启用数据联合后,最多可能需要 24 小时才能在 Jupyter 笔记本中看到联合表。

Jupyter 笔记本作业

可以创建使用联合表的计划 Jupyter 笔记本作业,其方式与为本机 Data Lake 表创建笔记本作业的方式相同:

  1. 使用联合表查询开发笔记本。
  2. 测试笔记本以确保联合查询正确执行。
  3. 从笔记本创建作业。
  4. 配置作业计划和参数。

注意

笔记本作业只能写入Sentinel工作区或系统表作为目标。 无法将数据写入联合表。

最佳做法

查询优化

  • 尽早应用筛选器:尽可能在源处筛选数据,以减少数据传输。
  • 限制结果集:在开发过程中使用 takelimit 子句。
  • 使用投影:仅选择提高性能所需的列。

示例:优化的查询

large_dataset_adls_connector
| where EventTime >= ago(1h)           // Filter early
| where EventType == "Login"           // Reduce data volume
| project EventTime, UserId, SourceIP  // Select needed columns
| take 10000                           // Limit results

联接策略

  • 使用适当的联接类型:根据需要选择 innerleftouterrightouter
  • 联接前筛选:在联接操作之前减少数据量。
  • 考虑数据大小:将较小的表放在联接的右侧。

错误处理

  • 检查连接状态:在查询之前验证联合连接器实例是否已连接。
  • 处理 null 值:外部数据可能包含意外的 null 值;use coalesce()isnull() functions。
  • 监视查询性能:跟踪联合查询的执行时间,以确定性能问题。

疑难解答

查询不返回任何结果

  • 验证连接器实例是否处于连接状态。
  • 验证外部数据源以及查询中面向的表是否可用。
  • 验证是否未从服务主体中删除权限,或者未根据目标数据源Sentinel托管标识。
  • 检查是否使用了正确的联合表名称格式。
  • 确保“系统表”在 KQL 查询或笔记本会话的导航窗格中可用。

查询速度缓慢

  • 应用筛选器以减少从外部源查询的数据量。
  • 检查外部源的性能和可用性。
  • 请考虑为经常访问的数据创建摘要表。

架构不匹配

  • 在表管理视图中查看表架构。
  • 调整查询以处理架构差异。
  • 检查外部表架构自创建连接器后是否已更改。

无法为联合表运行 MCP 工具

确保在 MCP 工具中引用联合表的任何位置都为 workspace("default"). 表名称添加前缀。

后续步骤