抑制检测告警
当检测规则运行时,它可能会为相似的事件生成大量告警——有时针对同一威胁会产生数百个几近相同的告警。告警抑制通过将相关事件分组并创建一个代表性告警(而不是为每个事件创建一个告警),帮助您消除这些噪音。
在以下情况下,告警抑制非常有用:
- 规则针对同一活动生成了过多告警(例如,来自同一 IP 地址的重复登录失败尝试)
- 您希望分析人员将注意力集中在独特的威胁上,而不是重复的威胁上
- 您需要在不削弱检测覆盖范围的情况下减少告警量
告警抑制不会忽略事件——它会将事件分组。您仍然可以调查与被抑制告警相关的所有原始事件。
在没有抑制的情况下,规则会为每个匹配其条件的事件创建一个告警。启用抑制后:
- 您指定一个或多个用于对事件进行分组的字段(例如
host.name或source.ip)。 - 当多个事件共享相同的字段值时,它们会被分到一组。
- 规则不会为每个事件创建单独的告警,而是为每个组创建一个告警。
- 对于某些规则类型,您还可以控制创建告警的频率
- 每次规则执行:每次规则运行(如果存在匹配事件)时都会创建一个新告警。
- 按时间段:在您指定的时间窗口内,为所有匹配的事件创建一个告警。
您可以在创建或编辑规则时配置告警抑制。
-
选择要分组的字段
在配置规则时(新规则的 Define rule 步骤,或现有规则的 Definition 选项卡),指定您希望如何对告警进行分组:
对于阈值规则之外的所有规则类型在 Suppress alerts by 中,输入一个或多个用于对告警进行分组的字段名称。这些字段具有相同值的事件将被分到一组。
-
您最多可以输入 5 个字段。 -
您最多可以输入 3 个字段。
对于 ES|QL 规则,在 ES|QL 查询中创建的字段(例如通过
EVAL命令创建的字段)可供在 Suppress alerts by 中选择。仅限阈值规则在 Group by 中,输入最多 5 个用于对事件进行分组的字段名称,或者将此设置留空以将所有符合条件的事件分到一组。
提示如果您要根据包含数组的字段进行抑制,请参阅包含数组值的字段的抑制,了解有关不同规则类型如何处理这些字段的详细信息。
-
-
选择抑制频率
选择为符合条件的事件创建告警的频率
每次规则执行:每次规则运行并找到匹配事件时创建一个告警。
按时间段:在指定的时间窗口内发生的所有匹配事件创建一个告警。该窗口从事件首次匹配并创建一个告警时开始。
例如,如果规则每 5 分钟运行一次,但您不需要如此频繁的告警,您可以将抑制时间段设置为 1 小时。规则在首次匹配时创建一个告警,然后在接下来的一个小时内抑制任何后续的匹配事件。
注意按时间段是阈值规则唯一可用的选项。
-
处理缺失字段
在 If a suppression field is missing 下,选择如何处理一个或多个抑制字段不存在的事件:
- Suppress and group alerts for events with missing fields:将缺失的字段视为具有
null值。具有缺失字段的事件将被分到一组并被抑制。 - Do not suppress alerts for events with missing fields:为每个具有缺失字段的事件创建一个单独的告警。这会使这些事件恢复为常规的告警行为。
注意除阈值规则外,这些选项适用于所有规则类型。
- Suppress and group alerts for events with missing fields:将缺失的字段视为具有
-
保存并启用规则
配置任何其他规则设置,然后保存并启用规则。
提示- 在保存之前使用 Rule preview(规则预览),以根据历史数据直观查看告警抑制将如何影响告警。
- 如果规则在启用抑制时超时,请尝试缩短规则的回溯时间或关闭抑制以提高性能。
当您按包含多个值(数组)的字段抑制告警时,其行为取决于规则类型:
| 规则类型 | 行为 |
|---|---|
| 自定义查询或阈值 | 告警按每个唯一值分别进行分组。例如,如果 destination.ip 包含 [127.0.0.1, 127.0.0.2, 127.0.0.3],则会创建三个独立的告警组——每个 IP 地址对应一个。 |
| 指标匹配、事件关联(非序列)、新术语、ES|QL 或机器学习 | 具有完全相同数组的告警会被分到一组。整个数组必须完全匹配。 |
| 事件关联(序列查询) | 仅当数组完全匹配且顺序相同时,告警才会被分组。例如,[1.1.1.1, 0.0.0.0] 和 [1.1.1.1, 192.168.0.1] 不会分到一组,即使它们共享一个元素。 |
当在启用抑制的情况下创建告警时,Elastic Security 应用会显示几个指示器。
关闭被抑制的告警可能会影响抑制行为。有关详细信息,请参阅关闭被抑制告警的影响。
Rule 列中的图标:将鼠标悬停在图标上可查看被抑制告警的数量。
Suppressed alerts count 列:选择 Fields 以打开字段浏览器,然后将
kibana.alert.suppression.docs_count添加到表格中。
打开 Insights > Correlations 部分以查看抑制详情。
尽管被抑制的事件不会生成自己的告警,但您仍然可以访问原始事件进行分析。使用以下方法之一打开包含与被抑制告警相关的所有事件的时间线:
- 告警表格——在 Actions 列中选择 Investigate in timeline。
- 告警详情浮出控件——选择 Take action > Investigate in timeline。
时间线中可见的事件取决于规则类型:
- 自定义查询规则:时间线显示所有被抑制的源事件,包括分组在该告警下的附加事件。由于基于查询的抑制工作原理,这是自定义查询规则所特有的。
- 所有其他规则类型:时间线仅显示与生成的告警绑定的事件,而不显示计入抑制总数的附加事件。这是预期行为。
默认情况下,在抑制窗口仍处于活动状态时关闭被抑制的告警会重置抑制。下一个符合条件的事件将启动一个新的抑制窗口并创建一个新告警。
例如,假设您将抑制时间设置为 5 分钟,按 host.name 分组。当有事件匹配时,会创建一个告警。在接下来的 5 分钟内,匹配的事件将被抑制并与该告警分到一组。如果您在 5 分钟窗口结束前关闭该告警,抑制将停止。下一个匹配的事件将创建一个新告警并启动一个新的 5 分钟窗口。
securitySolution:suppressionBehaviorOnAlertClosure 高级设置更改为 Continue until suppression window ends。
某些规则类型会限制可以抑制的告警数量。自定义查询规则没有抑制限制。
| 规则类型 | 最大被抑制告警数 |
|---|---|
| 阈值、事件关联、ES|QL 和机器学习 | 等于规则的 Max alerts per run 高级设置(默认值:100) |
| 指标匹配和新术语 | 规则的 Max alerts per run 设置的五倍(默认值:500) |
被抑制的告警会计入此最大值,即使它们没有被单独创建为告警文档。此外,xpack.alerting.rules.run.alerts.max Kibana 设置充当系统级上限,可以进一步限制每次规则执行的告警总数。
您可以使用规则表格中的 Bulk actions 菜单一次性为多个规则应用或移除告警抑制。
- 对于大多数规则类型,请使用 Apply alert suppression 选项。
- 对于阈值规则,请使用专门针对阈值规则标记的批量菜单选项。