Skip to content

[Request] [Detection Engine] add EQL alert suppression docs for non-sequence queries  #4977

@WafaaNasr

Description

@WafaaNasr

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_signals setting.

  • 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.terms field, you'll see an array of values for suppressed fields.

    1. Imagine we have the below document:
    {
              id,
              '@timestamp': timestamp,
              host: { name: ['host-a', 'host-b'] },
            };
    
    1. We indexed this document 3 times with different timestamps
    2. We have the below threat index
    {
                host: {
                      name: 'host-a',
                  },
     };
    
    1. We enabled suppression for the IM rule
    2. we will end up having 1 alert generated only and the suppression count will be 2 and the suppression.terms will 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_supression param 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_signals value (100 by default)
    • Indicator match rule: Five times the max_signals value (500 by default)
    • Eql non-sequence rule: The max_signals value (100 by default)

Background & resources

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

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions