-
Notifications
You must be signed in to change notification settings - Fork 205
Description
Description
Implementing alert suppression for EQL non-sequence-based alerts while disabling it for sequence alerts involves two main scenarios:
Scenario 1:
When a user inputs a sequence query, suppression fields are automatically disabled. A tooltip appears when hovering over any suppression field, indicating "Suppression is not enabled for EQL sequence queries."
Scenario 2:
If suppression fields are configured prior, and the user edits an EQL rule that wasn't originally a sequence query but is changed to one, a validation error occurs below the suppression group by fields. The error message states: "Suppression is not enabled for EQL sequence queries. Please reset the suppression fields." Once the user removes the suppression fields, they are disabled, following the behavior outlined in Scenario 1.
Explaining the second Scenario:
https://github.com/elastic/security-docs/assets/12671903/9eafe84e-c8dd-4c39-9c90-5c76ea2b8e9a
Details
-
When users create an Eql rule, they can specify the fields they want to be grouped for suppression. For EQL rules, the minimum number of field names that can be specified is 1. The max is 3.
-
The maximum number of alerts that can be suppressed is tied to the
max_signalssetting. -
If enabling suppression causes the EQL rule to timeout during the rule preview or when the rule is enabled and running, there are two possible ways to resolve this:
- Turn off suppression on the rule.
- Shorten the rule's look-back time to reduce the number of documents the rule analyzes.
-
Fields with an array of values are treated as a single group and suppressed together (i.e., they're treated as a single suppression value). When you check the
kibana.alert.suppression.termsfield, you'll see an array of values for suppressed fields.- Imagine we have the below document:
{ id, '@timestamp': timestamp, host: { name: ['host-a', 'host-b'] }, };- We indexed this document 3 times with different timestamps
- We have the below threat index
{ host: { name: 'host-a', }, };- We enabled suppression for the IM rule
- we will end up having 1 alert generated only and the suppression count will be 2 and the
suppression.termswill be an array, not a single value as in the Query rule case
kibana.alert.suppression.terms: [ { field: 'host.name', value: ['host-a', 'host-b'], }, ], -
The new
alert_supressionparam for eql rules has the same functionality as the query rule. -
The default maximum number of alerts that can be suppressed for each rule type:
- Custom query rule: indefinite number of alerts
- Threshold: The
max_signalsvalue (100 by default) - Indicator match rule: Five times the
max_signalsvalue (500 by default) - Eql non-sequence rule: The
max_signalsvalue (100 by default)
Background & resources
- PRs: [Detection Engine][Rule Suppression] Add Suppression to EQL Non-sequence based queries kibana#176422
- Issues/metas: https://github.com/elastic/security-team/issues/7773 https://github.com/elastic/security-team/issues/8432
- Point of contact:
- Test environments: ESS and serverless
Which documentation set does this change impact?
ESS and serverless
ESS release
8.14
Serverless release
Around 8.14 release
Feature differences
ESS: Alert suppression is available for Platinum license
Serverless: available for Essentials and Complete tiers
API docs impact
Adds alert_suppression field to Eql rule create/update/patch rule APIs
Prerequisites, privileges, feature flags
ESS: requires Platinum license
Feature Flag: alertSuppressionForNonSequenceEqlRuleEnabled