重要
注意:2026 年 8 月 18 日,根据 世纪互联发布的公告,在中国地区的 Azure 中,所有 Microsoft Sentinel 的功能将正式停用。
Microsoft Sentinel 中的监视列表可帮助安全分析师有效地关联和扩充事件数据。 他们为你提供了一种灵活的方法来管理引用数据,例如高价值资产列表或被终止的员工。 将监视列表集成到检测规则、威胁搜寻和响应工作流中,以减少警报疲劳并更快地响应威胁。 本文介绍如何在 Microsoft Sentinel 中使用监视列表,概述关键方案和限制,并提供有关创建和查询监视列表以增强安全作的指导。
在搜索查询、检测规则、威胁搜寻和响应操作手册中使用监视列表。 监视列表以名称/值对的形式存储在表中的Microsoft Sentinel工作区Watchlist中,并缓存以获得最佳查询性能。
重要
监视列表模板的功能以及从 Azure 存储中的文件创建监视列表的功能目前为预览版。 Azure 预览版补充条款包含适用于 beta 版、预览版或其他尚未正式发布的 Azure 功能的其他法律条款。
何时使用监视列表
在这些情境中使用监视列表:
通过导入逗号分隔值 (CSV) 文件中的 IP 地址、文件哈希和其他数据来调查威胁,然后在警报规则、威胁搜寻、工作簿、笔记本和查询中使用监视列表中的名称-值对进行联接和筛选。
导入业务数据作为观察列表。 例如,导入具有特权系统访问权限的用户列表或离职员工列表。 然后,使用监视列表创建允许列表和阻止列表来检测或阻止这些用户登录到网络。
缓解警报疲劳。 创建允许列表以抑制来自一组用户的警报,例如来自授权 IP 地址的用户,他们执行的任务通常会触发警报。 防止良性事件成为警报。
使用来自外部数据源的名称/值组合来扩充事件数据。
关注列表限制
在创建监视列表之前,请查看以下限制:
| 限度 | 详细信息 |
|---|---|
| 监视列表名称和别名长度 | 监视列表名称和别名必须介于 3 到 64 个字符之间。 第一个字符和最后一个字符必须是字母数字;允许在两者之间使用空格、连字符和下划线。 |
| 预期用途 | 仅将关注列表用于参考数据。 关注列表不是为大数据量而设计的。 |
| 最大活动关注列表项数 | 在一个工作区的所有关注列表中,最多可以有 1000 万个活动关注列表项。 已删除的项目不计数。 对于较大数量的数据,请使用 自定义日志。 |
| 数据保留 | Log Analytics 监视列表表中的数据将保留 28 天。 |
| 刷新间隔 | 监视列表每 12 天刷新一次,更新 TimeGenerated 字段。 |
| 跨工作区管理 | 不支持使用 Azure Lighthouse 跨工作区管理监视列表。 |
| 本地文件上传大小 | 本地文件上传限制为最多 3.8 MB 的文件。 |
| Azure 存储文件上传大小(预览版) | Azure 存储上传限制为最多 500 MB 的文件。 |
| 列和表限制 | 监视列表的列和名称必须遵循 Kusto 查询语言 (KQL) 实体命名限制。 |
Microsoft Sentinel 监视列表创建方法
若要在Microsoft Sentinel中创建监视列表,请使用以下方法之一:
- 从本地文件夹或Azure 存储帐户上传文件。
- 从Microsoft Sentinel下载监视列表模板,添加数据并上传文件。
若要从大型文件(最多 500 MB)创建监视列表,请将该文件上传到 Azure 存储帐户。 创建共享访问签名 (SAS) URL,以便Microsoft Sentinel 可以检索监视列表数据。 SAS URL 包含资源的资源 URI 和用于资源的 SAS 令牌,例如存储帐户中的 CSV 文件。 在 Microsoft Sentinel 中将监视列表添加到工作区。
有关详细信息,请参见:
用于搜索和检测规则查询的监视列表
若要将监视列表数据与其他 Microsoft Sentinel 数据相关联,请将 Kusto 表格运算符(如 join 和 lookup)与 Watchlist 表配合使用。 Microsoft Sentinel提供以下内置函数来帮助查询监视列表:
-
_GetWatchlistAlias- 返回所有关注列表的别名 -
_GetWatchlist- 查询指定监视列表的名称/值对
创建监视列表时,定义 SearchKey。 搜索键是监视列表中你希望用作与其他数据的联接或用作常见搜索对象的列的名称。 例如,假设你有一个服务器监视列表,其中包含国家/地区名称及其各自的两字母国家/地区代码。 你预计会经常使用国家/地区代码来进行搜索或联接。 因此,使用国家/地区代码列作为搜索关键字。
Heartbeat
| lookup kind=leftouter _GetWatchlist('mywatchlist')
on $left.RemoteIPCountry == $right.SearchKey
让我们看看其他一些示例查询。
假设你想要在分析规则中使用监视列表。 你创建了一个名为ipwatchlist的监视列表,其中包含IPAddress和Location列。 您将IPAddress设置为SearchKey。
IPAddress,Location |
|---|
10.0.100.11,Home |
172.16.107.23,Work |
10.0.150.39,Home |
172.20.32.117,Work |
若要仅包含监视列表中来自 IP 地址的事件,可以使用包含 watchlist 作为变量或内联的查询。
此示例查询使用监视列表作为变量:
//Watchlist as a variable
let watchlist = (_GetWatchlist('ipwatchlist') | project IPAddress);
Heartbeat
| where ComputerIP in (watchlist)
此示例查询将监视列表与查询直接结合使用,并使用为监视列表定义的搜索键。
//Watchlist inline with the query
//Use SearchKey for the best performance
Heartbeat
| where ComputerIP in (
(_GetWatchlist('ipwatchlist')
| project SearchKey)
)
有关使用监视列表生成查询和检测规则的详细信息,请参阅使用Microsoft Sentinel中的监视列表生成查询和检测规则,有关 Kusto 运算符和语句,请参阅以下文章:
有关 KQL 的更多信息,请参阅 Kusto 查询语言 (KQL) 概述。
其他资源:
在事件期间排查监视列表和查询问题
排查门户网站或 API 可用性问题
如果 “监视列表 ”页为空、重复刷新或监视列表操作返回 502 Bad Gateway 或其他 5XX 响应,请先确定问题是否可能是服务端,然后再更改监视列表配置。
使用以下检查:
确认问题是否影响所有监视列表或多个监视列表。
确认问题是否影响多个用户。
确认问题是否影响Azure门户和自动化或基于 API 的操作。
验证监视列表数据是否仍可从日志中查询:
_GetWatchlistAlias如果您知道该监视列表的别名,也请测试:
_GetWatchlist('watchlist-alias') | take 10查看Azure 服务运行状况和当前事件通报,了解与 Microsoft Sentinel 相关的影响。
避免在事件处于活动状态时重复删除并重新创建尝试。 门户或 API 失败不一定表示监视列表数据丢失。
如果门户显示为空白,或者监视列表的创建、读取、更新和删除(CRUD)操作在多个用户或工作区中返回
502或其他5XX错误,在排除更广泛的平台影响之前,应将其视为潜在的服务事件。如果调用监视列表操作的逻辑应用工作流开始返回
502 Bad Gateway或类似的暂时性故障,请在假设问题由连接器权限或工作流配置导致之前验证Microsoft Sentinel服务运行状况。 即使在工作流标识和配置不变的情况下,自动化失败也会在监视列表服务事件期间显示为通用访问或网关错误。
在服务事件期间,最安全的第一个验证是确认监视列表是否仍可查询。 如果查询访问也失败,请在打开支持请求之前捕获时间戳、操作和 HTTP 状态代码。
了解保留和刷新行为
28 天保留值并不意味着监视列表在 28 天后变得不可用。
监视列表将一直可用,直到删除它们。 保留值适用于基础Log Analytics监视列表表中的记录,而监视列表服务会定期刷新监视列表数据。 由于监视列表会定期刷新,因此除非删除该监视列表或其他问题会影响可用性,否则它会在一段时间内保持可查询状态。
当你计划长期分析或验证监视列表是否仍应出现在查询结果中时,这一区别非常重要。
排查创建后显示零行的监视列表问题
如果成功创建了监视列表,但门户或 _GetWatchlist() 未返回任何行,请在排查问题时查看工作区引入限制。
确认在预期的工作区中创建了监视列表。
按别名查询监视列表:
_GetWatchlist('watchlist-alias') | take 10查看用于引入限制的Log Analytics工作区配置,包括每日上限。
如果工作区已达到每日上限,请待数据引入恢复后,再次验证监视列表。
零行结果并不总是指示缺少监视列表定义。 与数据引入相关的工作区限制可能会影响监视列表数据何时在工作区中可见。
排查管理平面和查询行为差异问题
在暂时性服务问题期间,查询访问和管理访问的行为可能有所不同。
在某些情况下,即使门户体验、编辑操作或其他管理平面操作暂时不可用,你仍然可以通过 _GetWatchlistAlias 或 _GetWatchlist() 查询监视列表。 如果返回查询结果,但门户为空或监视列表更新失败,请在假定删除监视列表或其架构更改之前验证服务运行状况。
KQL 查询成功表明,即使管理体验受影响,观察列表数据也仍可能在工作区中可用。
对空或部分查询结果进行故障排除
重要
监视列表查询结果可能受查询时间范围和周围查询中应用的筛选器的影响。
监视列表按定期间隔刷新,查询函数从基础监视列表数据返回当前监视列表状态。 如果在故障排除时应用窄全局日期时间范围或其他限制性筛选器,查询可以排除返回预期监视列表内容所需的记录。 在这种情况下,即使监视列表仍然存在, _GetWatchlist() 也可能返回空或部分结果。
排查意外出现的空结果时:
- 确认正在查询正确的监视列表别名。
- 移除或放宽查询级别的时间范围。
- 重新运行查询并比较结果。
对于依赖查询级别日期时间范围的场景,请使用足够大的时间范围,以涵盖监视列表的刷新周期。