使用 Kusto 查询语言查询数据

已完成

可在 Microsoft Sentinel 中使用 Kusto 查询语言 (KQL) 来搜索和筛选收集的数据。

Kusto 查询语言

KQL 使你能够对收集的数据创建、存储和运行交互式分析。 Microsoft Sentinel 使用 KQL 来可视化和分析重要数据。 可使用 KQL 创建复杂的分析查询,其中包括以下运算符:

  • 计算列
  • 联接函数
  • 按聚合分组

编写和运行基本查询

查询是一个只读请求,该请求处理数据并返回此处理的结果,而不会修改数据或元数据。 与 SQL 查询类似,KQL 查询使用层次结构中组织的架构实体,如数据库、表和列。 架构是分组到逻辑类别下的表集合。 查询由分号 (;) 分隔的一系列查询语句组成。

构造查询时,可从表名称或搜索命令开始。 例如,下面的查询将检索 Event 表中的所有记录:

Event

可使用竖线 (|) 字符分隔命令。 第一个命令的输出将成为下一个命令的输入。 可在单个查询中添加任意数目的命令。 以下查询检索 Event 表中的记录,然后在这些记录中搜索任何属性中的 error 一词:

Event

| search error

可使用表格和标量运算符构造查询,KQL 将这些运算符合并为多个表格表达式语句,从而生成查询结果。

source1 | operator1 | operator2

在以下示例中,源为 AzureActivity。 第一个运算符是 where,它根据逻辑表达式筛选出记录。 第二个运算符同样为 where

AzureActivity

| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'

默认情况下,Log Analytics 会将查询时间范围限制为过去 24 小时。 若要设置不同的时间范围,可将显式 TimeGenerated 筛选器添加到查询,或使用 Time range 控件。 例如,以下查询将返回前一小时内的数据:


AzureActivity

| where OperationName == 'Delete Virtual Machine'
| where ActivityStatus == 'Accepted'
| where TimeGenerated > ago (1h)

可将查询与一些最常用的运算符组合使用:

  • count。 返回表中的行数。
  • take。 返回最多指定数量的数据行。
  • project。 选择列的子集。
  • sort。 按一列或多列的顺序对输入表中的行进行排序。
  • top。 返回按指定列排序的前 N 列。
  • extend。 计算派生的列。
  • summarize。 聚合行组。
  • render。 以图形输出的形式呈现结果。

若要合并两个源(表)中的记录,可使用 join 运算符。 union 运算符将多个表合并为一个表。

有关详细信息,请参阅 Microsoft Log Analytics 教程,该教程使用 Log Analytics 的功能生成并运行查询,而不是使用查询本身。

还可使用 Azure 数据资源管理器教程了解 KQL。

注意

Microsoft Sentinel Log Analytics 不支持 Azure 数据资源管理器中使用的所有 KQL 语法。

GitHub 上的 Microsoft Sentinel 存储库

还可使用 GitHub 上的 Microsoft Sentinel 存储库搜索专用查询和工作簿,以帮助保护你的环境并搜寻威胁。 例如,Microsoft Sentinel GitHub 存储库中的以下查询显示对用户帐户的可疑权限委派。

let timeframe = 7d;
AzureActivity
| where TimeGenerated >= ago(timeframe)
| where OperationName == "Create role assignment"
| where ActivityStatus == "Succeeded"
| project Caller, CallerIpAddress
| evaluate basket()
| extend AccountCustomEntity = Caller, IPCustomEntity = CallerIpAddress

查询会分析管理员向其他用户授予对 Azure 资源的访问权限时使用的 IP 地址。 如果操作不是来自有效的 IP 地址,则查询会标识可疑活动,可进一步调查该活动。

如果要尝试一些示例,请使用 Azure 门户上的演示环境

知识检查

1.

管理员可使用下列哪种工具在 Microsoft Sentinel 中查询数据?

2.

管理员可使用以下哪种字符来分隔查询中的命令?