你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
KQL 作业是对 Microsoft Sentinel 数据湖中的数据进行的一次性或按计划的异步 KQL 查询。 作业在调查和分析场景中是有用的,例如:
- 用于事件调查和事件响应 (IR) 的长时间运行的一次性查询
- 使用低保真度日志支持扩充工作流的数据聚合任务
- 历史威胁情报(TI)匹配扫描用于回顾分析
- 异常检测扫描,用于识别多个表中的异常模式
当查询使用跨不同数据集的联接或联合时,KQL 作业特别有效。
作业还用于将数据从数据湖层提升到分析层。 进入分析层后,使用高级搜寻 KQL 编辑器查询数据。 将数据提升到分析层具有以下优势:
- 合并分析层中的当前数据和历史数据,对数据运行高级分析和机器学习模型。
- 通过在分析层中运行查询来降低查询成本。
- 将数据从多个工作区合并到分析层中的单个工作区。
- 将 Microsoft Entra ID、Microsoft 365 和 Microsoft Resource Graph 数据合并到分析层中,以跨数据源运行高级分析。
注释
分析层中的存储会产生比 Data Lake 层更高的计费费率。 为了减少成本,仅推广那些需要进一步分析的数据。 在查询中使用 KQL 以便仅投影所需的列,并筛选数据以减少提升到分析层的数据量。
可以将数据提升到新表,或将结果追加到分析层中的现有表。 创建新表时,表名称后缀为 _KQL_CL ,以指示表是由 KQL 作业创建的。
先决条件
在 Microsoft Sentinel data lake 中创建和管理 KQL 作业需要满足以下先决条件。
加入数据湖
若要在 Microsoft Sentinel data lake 中创建和管理 KQL 作业,必须先载入到 Data Lake。 有关加入到数据湖的详细信息,请参阅加入到 Microsoft Sentinel 数据湖。
权限
Microsoft Entra ID 角色提供对数据湖中所有工作区的广泛访问权限。 若要在所有工作区中读取表、写入分析层,并使用 KQL 查询来计划作业,您必须拥有受支持的 Microsoft Entra ID 角色之一。 有关角色和权限的详细信息,请参阅 Microsoft Sentinel data lake 角色和权限。
若要在分析层中创建新的自定义表,必须在 Log Analytics 工作区中为 Data Lake 托管标识分配 Log Analytics 参与者 角色。
若要分配角色,请执行以下步骤:
- 在 Azure 门户中,导航到要向其分配角色的 Log Analytics 工作区。
- 在左侧导航窗格中,选择“访问控制 (IAM)”。
- 选择“添加角色分配”。
- 在“角色”表中,选择“Log Analytics 参与者”,然后选择“下一步”
- 选择 托管标识,然后选择 选择成员。
- 数据湖托管标识是一个名为
msg-resources-<guid>的系统分配托管标识 选择托管标识,然后选择“选择”。 - 选择“查看并分配”。
有关给托管标识分配角色的详细信息,请参阅 使用 Azure 门户分配 Azure 角色。
创建职位
可以创建任务以按计划或一次性运行。 创建作业时,需要指定结果的目标工作区和表。 结果可以写入新表或追加到分析层中的现有表。
从 KQL 查询编辑器或作业管理页启动作业创建过程。
输入 作业名称。 作业名称对于租户必须是唯一的。 作业名称最多可以包含 256 个字符。 不能在作业名称中使用
#或-。输入提供作业上下文和用途的 作业说明 。
从 “选择工作区 ”下拉列表中,选择目标工作区。 这是分析层中你要将查询结果写入其中的工作区。
选择目标表:
若要创建新表,请选择“ 创建新表 ”并输入表名称。 KQL 作业创建的表将 _KQL_CL 作为表名的后缀。
若要追加到现有表,请选择“ 添加到现有表 ”,然后选择表格名称,形成下拉列表。 添加到现有表时,查询结果必须与现有表的架构匹配。
在 “准备查询 ”面板中查看或写入查询。 如果查询中未指定日期范围,请检查时间选取器是否设置为作业所需的时间范围。
从 “所选工作区 ”下拉列表中选择要对其运行查询的工作区。 这些是你希望查询其表的源工作区。 您选择的工作区将决定可供查询的表。 所选工作区适用于查询编辑器中的所有查询选项卡。 使用多个工作区时,
union()运算符默认应用于具有不同工作区中相同名称和架构的表。 使用workspace()运算符从特定工作区查询表,例如workspace("MyWorkspace").AuditLogs。注释
如果要写入现有表,查询必须返回与目标表架构匹配的架构的结果。 如果查询未返回具有正确架构的结果,则运行作业时将失败。
选择“下一步”。
在 “计划查询作业 ”页上,选择是要运行作业一次还是按计划运行。 如果选择 一次,则作业在作业定义完成后立即运行。 如果选择“ 计划”,则可以指定要运行的作业的日期和时间,或按定期计划运行作业。
选择 一次性任务 或 定时任务。
注释
编辑一次性任务将立即触发其执行。
如果选择了 “计划”,请输入以下详细信息:
- 从下拉列表中选择 “重复频率 ”。 可以选择“ 按分钟”、“ 每小时”、“ 每日”、“ 每周”或 “每月”。
- 根据所选频率,设置“重复间隔”值,以确定作业的运行频率。
- 在 “设置计划”下,输入 “开始日期 ”日期和时间。 创建作业后,“ 发件人 ”字段中的作业开始时间必须至少为 30 分钟。 从该日期和时间起,作业根据“运行频率”下拉列表中选择的频率运行。
- 选择“结束”日期和时间以指定作业计划何时完成。 如果希望计划无限期继续,请选择“ 设置作业”以无限期运行。
作业的起始时间和结束时间按照用户的区域设置进行设置。
选择 “下一步 ”以查看作业详细信息。
查看作业详细信息,然后选择 “提交 ”以创建作业。 如果作业是一次性作业,则它在选择 “提交”后运行。 如果作业已安排,则会将其添加到 “作业” 页中的作业列表中,并根据开始日期和时间运行。
注意事项和限制
在 Microsoft Sentinel data lake 中创建作业时,请考虑以下限制和最佳做法:
KQL
除以下各项外,所有 KQL 运算符和函数均受支持:
adx()arg()externaldata()ingestion_time()
用户定义的函数不受支持。
职位
- 作业名称对于租户必须是唯一的。
- 作业名称最多可以包含 256 个字符。
- 作业名称不能包含
#或-。 - 作业开始时间在创建或编辑作业后必须至少为 30 分钟。
列名
导出不支持以下标准列。 引入期间,目标层将覆盖这些列:
租户ID
_TimeReceived
类型
SourceSystem
_资源ID
_SubscriptionId(订阅编号)
_ItemId
_BilledSize(账单大小)
_IsBillable
_WorkspaceId
如果
TimeGenerated超过 2 天,则会被覆盖。 若要保留原始事件时间,建议将源时间戳写入单独的列。
有关服务限制,请参阅 Microsoft Sentinel data Lake 服务限制。
注释
如果作业的查询超过一小时的限制,则可能会提升部分结果。
KQL 作业的服务参数和限制
下表列出了 Microsoft Sentinel data lake 中 KQL 作业的服务参数和限制。
| 类别 | 参数/限制 |
|---|---|
| 每个租户的并发作业执行 | 3 |
| 作业查询执行超时 | 1 小时 |
| 每个租户的作业数(已启用作业) | 100 |
| 每个作业的输出表数 | 1 |
| 查询范围 | 多个工作区 |
| 查询时间范围 | 最长 12 年 |
有关故障排除提示和错误消息,请参阅 对 Microsoft Sentinel data lake 的 KQL 查询进行故障排除。