From 441939028248c3ddc8d17d2f5647baad5aff3f7b Mon Sep 17 00:00:00 2001 From: "Devin W. Hurley" Date: Thu, 30 Jan 2025 14:55:53 -0500 Subject: [PATCH 01/11] [Security Solution] [Detection Engine] Logs shard failures for eql event queries on rule details page and in event log (#207396) ## Summary Related: https://github.com/elastic/elasticsearch/pull/116388/ Adds support for shard failures for EQL event queries in the detection engine. --- .../eql/build_eql_search_request.test.ts | 161 +- .../eql/build_eql_search_request.ts | 6 + .../detection_engine/rule_types/eql/eql.ts | 16 + .../rule_types/translations.ts | 21 + .../rule_types/utils/log_shard_failure.ts | 29 + .../packetbeat/default/data.json.gz | Bin 0 -> 78491 bytes .../packetbeat/default/mappings.json | 3284 +++++++++++++++++ .../eql/trial_license_complete_tier/eql.ts | 33 + .../detections_response/utils/index.ts | 1 + .../detections_response/utils/runtime.ts | 39 + 10 files changed, 3512 insertions(+), 78 deletions(-) create mode 100644 x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/log_shard_failure.ts create mode 100644 x-pack/test/security_solution_api_integration/es_archive/serverless/packetbeat/default/data.json.gz create mode 100644 x-pack/test/security_solution_api_integration/es_archive/serverless/packetbeat/default/mappings.json create mode 100644 x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/runtime.ts diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.test.ts index d9232b99a49c8..8a7edc88eb784 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.test.ts @@ -57,6 +57,7 @@ describe('buildEqlSearchRequest', () => { ], }, }, + allow_partial_search_results: true, fields: [ { field: '*', @@ -141,6 +142,7 @@ describe('buildEqlSearchRequest', () => { ], }, }, + allow_partial_search_results: true, fields: [ { field: '*', @@ -198,6 +200,7 @@ describe('buildEqlSearchRequest', () => { ], }, }, + allow_partial_search_results: true, fields: [ { field: '*', @@ -235,97 +238,98 @@ describe('buildEqlSearchRequest', () => { exceptionFilter: filter, }); expect(request).toMatchInlineSnapshot(` - Object { - "allow_no_indices": true, - "body": Object { - "event_category_field": undefined, - "fields": Array [ - Object { - "field": "*", - "include_unmapped": true, - }, - Object { - "field": "@timestamp", - "format": "strict_date_optional_time", - }, - ], - "filter": Object { - "bool": Object { - "filter": Array [ - Object { - "range": Object { - "@timestamp": Object { - "format": "strict_date_optional_time", - "gte": "now-5m", - "lte": "now", - }, + Object { + "allow_no_indices": true, + "body": Object { + "allow_partial_search_results": true, + "event_category_field": undefined, + "fields": Array [ + Object { + "field": "*", + "include_unmapped": true, + }, + Object { + "field": "@timestamp", + "format": "strict_date_optional_time", + }, + ], + "filter": Object { + "bool": Object { + "filter": Array [ + Object { + "range": Object { + "@timestamp": Object { + "format": "strict_date_optional_time", + "gte": "now-5m", + "lte": "now", }, }, - Object { - "bool": Object { - "filter": Array [], - "must": Array [], - "must_not": Array [ - Object { - "bool": Object { - "should": Array [ - Object { - "bool": Object { - "filter": Array [ - Object { - "nested": Object { - "path": "some.parentField", - "query": Object { - "bool": Object { - "minimum_should_match": 1, - "should": Array [ - Object { - "match_phrase": Object { - "some.parentField.nested.field": "some value", - }, + }, + Object { + "bool": Object { + "filter": Array [], + "must": Array [], + "must_not": Array [ + Object { + "bool": Object { + "should": Array [ + Object { + "bool": Object { + "filter": Array [ + Object { + "nested": Object { + "path": "some.parentField", + "query": Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "match_phrase": Object { + "some.parentField.nested.field": "some value", }, - ], - }, + }, + ], }, - "score_mode": "none", }, + "score_mode": "none", }, - Object { - "bool": Object { - "minimum_should_match": 1, - "should": Array [ - Object { - "match_phrase": Object { - "some.not.nested.field": "some value", - }, + }, + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "match_phrase": Object { + "some.not.nested.field": "some value", }, - ], - }, + }, + ], }, - ], - }, + }, + ], }, - ], - }, + }, + ], }, - ], - "should": Array [], - }, + }, + ], + "should": Array [], }, - ], - }, + }, + ], }, - "query": "process where true", - "runtime_mappings": undefined, - "size": 100, - "timestamp_field": undefined, }, - "index": Array [ - "testindex1", - "testindex2", - ], - } - `); + "query": "process where true", + "runtime_mappings": undefined, + "size": 100, + "timestamp_field": undefined, + }, + "index": Array [ + "testindex1", + "testindex2", + ], + } + `); }); test('should build a request with filters', () => { @@ -415,6 +419,7 @@ describe('buildEqlSearchRequest', () => { ], }, }, + allow_partial_search_results: true, fields: [ { field: '*', diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.ts index 5110e7fc10c85..0e855befb3f8a 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/build_eql_search_request.ts @@ -87,6 +87,12 @@ export const buildEqlSearchRequest = ({ filter: requestFilter, }, }, + // the allow_partial_search_results query parameter will supersede + // the corresponding xpack settings on cluster + // @ts-expect-error unknown property allow_partial_search_results + // TODO: remove this ts-expect when 8.18 elasticsearch client is released. + // issue: https://github.com/elastic/kibana/issues/208760 + allow_partial_search_results: true, runtime_mappings: runtimeMappings, timestamp_field: timestampField, event_category_field: eventCategoryOverride, diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/eql.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/eql.ts index 756f220f06d55..de3972abf2ae9 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/eql.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/eql/eql.ts @@ -15,6 +15,8 @@ import type { } from '@kbn/alerting-plugin/server'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { Filter } from '@kbn/es-query'; +import isEmpty from 'lodash/isEmpty'; + import { buildEqlSearchRequest } from './build_eql_search_request'; import { createEnrichEventsFunction } from '../utils/enrichments'; @@ -55,6 +57,8 @@ import type { RulePreviewLoggedRequest } from '../../../../../common/api/detecti import { logEqlRequest } from '../utils/logged_requests'; import * as i18n from '../translations'; import { alertSuppressionTypeGuard } from '../utils/get_is_alert_suppression_active'; +import { isEqlSequenceQuery } from '../../../../../common/detection_engine/utils'; +import { logShardFailures } from '../utils/log_shard_failure'; interface EqlExecutorParams { inputIndex: string[]; @@ -120,6 +124,8 @@ export const eqlExecutor = async ({ uiSettingsClient: services.uiSettingsClient, }); + const isSequenceQuery = isEqlSequenceQuery(ruleParams.query); + const request = buildEqlSearchRequest({ query: ruleParams.query, index: inputIndex, @@ -165,6 +171,16 @@ export const eqlExecutor = async ({ let newSignals: Array> | undefined; + // @ts-expect-error shard_failures exists in + // elasticsearch response v9 + // needs to be spec needs to be backported + // https://github.com/elastic/elasticsearch-specification/pull/3372#issuecomment-2621835599 + // TODO: remove ts-expect-error when ES lib version is updated + const shardFailures = response.shard_failures; + if (!isEmpty(shardFailures)) { + logShardFailures(isSequenceQuery, shardFailures, result, ruleExecutionLogger); + } + const { events, sequences } = response.hits; if (events) { diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/translations.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/translations.ts index b9bd6f858b9ae..be04cba2df7f8 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/translations.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/translations.ts @@ -28,6 +28,27 @@ export const EQL_SEARCH_REQUEST_DESCRIPTION = i18n.translate( } ); +export const EQL_SHARD_FAILURE_MESSAGE = ( + isEqlSequenceQuery: boolean, + shardFailuresMessage: string +) => + isEqlSequenceQuery + ? i18n.translate( + 'xpack.securitySolution.detectionEngine.eqlSequenceRuleType.eqlShardFailures', + { + defaultMessage: `The EQL query failed to run successfully due to unavailable shards: {shardFailures}`, + values: { + shardFailures: shardFailuresMessage, + }, + } + ) + : i18n.translate('xpack.securitySolution.detectionEngine.eqlEventRuleType.eqlShardFailures', { + defaultMessage: `The EQL event query was only executed on the available shards. The query failed to run successfully on the following shards: {shardFailures}`, + values: { + shardFailures: shardFailuresMessage, + }, + }); + export const FIND_THRESHOLD_BUCKETS_DESCRIPTION = (afterBucket?: string) => afterBucket ? i18n.translate( diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/log_shard_failure.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/log_shard_failure.ts new file mode 100644 index 0000000000000..a5110f7ea11bb --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_types/utils/log_shard_failure.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ShardFailure } from '@elastic/elasticsearch/lib/api/types'; +import type { IRuleExecutionLogForExecutors } from '../../rule_monitoring'; +import type { SearchAfterAndBulkCreateReturnType } from '../types'; +import * as i18n from '../translations'; + +export const logShardFailures = ( + isSequenceQuery: boolean, + shardFailures: ShardFailure[], + result: SearchAfterAndBulkCreateReturnType, + ruleExecutionLogger: IRuleExecutionLogForExecutors +) => { + const shardFailureMessage = i18n.EQL_SHARD_FAILURE_MESSAGE( + isSequenceQuery, + JSON.stringify(shardFailures) + ); + ruleExecutionLogger.error(shardFailureMessage); + if (isSequenceQuery) { + result.errors.push(shardFailureMessage); + } else { + result.warningMessages.push(shardFailureMessage); + } +}; diff --git a/x-pack/test/security_solution_api_integration/es_archive/serverless/packetbeat/default/data.json.gz b/x-pack/test/security_solution_api_integration/es_archive/serverless/packetbeat/default/data.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..7646502cf2be21f4b21096672ee61b2146ebebe0 GIT binary patch literal 78491 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 z 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 L+8Ux62@(DaA0&$# literal 0 HcmV?d00001 diff --git a/x-pack/test/security_solution_api_integration/es_archive/serverless/packetbeat/default/mappings.json b/x-pack/test/security_solution_api_integration/es_archive/serverless/packetbeat/default/mappings.json new file mode 100644 index 0000000000000..7b65387c5e685 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/es_archive/serverless/packetbeat/default/mappings.json @@ -0,0 +1,3284 @@ +{ + "type": "index", + "value": { + "aliases": { + "packetbeat-8.0.0": { + "is_write_index": true + } + }, + "index": "packetbeat-8.0.0-2019.02.19-000001", + "mappings": { + "_meta": { + "beat": "packetbeat", + "version": "8.0.0" + }, + "date_detection": false, + "dynamic_templates": [ + { + "container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "container.labels.*" + } + }, + { + "fields": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "fields.*" + } + }, + { + "docker.container.labels": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "docker.container.labels.*" + } + }, + { + "amqp.headers": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "amqp.headers.*" + } + }, + { + "cassandra.response.supported": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "cassandra.response.supported.*" + } + }, + { + "http.request.headers": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "http.request.headers.*" + } + }, + { + "http.response.headers": { + "mapping": { + "type": "keyword" + }, + "match_mapping_type": "string", + "path_match": "http.response.headers.*" + } + }, + { + "strings_as_keyword": { + "mapping": { + "ignore_above": 1024, + "type": "keyword" + }, + "match_mapping_type": "string" + } + } + ], + "properties": { + "@timestamp": { + "type": "date" + }, + "agent": { + "properties": { + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "amqp": { + "properties": { + "app-id": { + "ignore_above": 1024, + "type": "keyword" + }, + "arguments": { + "type": "object" + }, + "auto-delete": { + "type": "boolean" + }, + "class-id": { + "type": "long" + }, + "consumer-count": { + "type": "long" + }, + "consumer-tag": { + "ignore_above": 1024, + "type": "keyword" + }, + "content-encoding": { + "ignore_above": 1024, + "type": "keyword" + }, + "content-type": { + "ignore_above": 1024, + "type": "keyword" + }, + "correlation-id": { + "ignore_above": 1024, + "type": "keyword" + }, + "delivery-mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "delivery-tag": { + "type": "long" + }, + "durable": { + "type": "boolean" + }, + "exchange": { + "ignore_above": 1024, + "type": "keyword" + }, + "exchange-type": { + "ignore_above": 1024, + "type": "keyword" + }, + "exclusive": { + "type": "boolean" + }, + "expiration": { + "ignore_above": 1024, + "type": "keyword" + }, + "headers": { + "type": "object" + }, + "if-empty": { + "type": "boolean" + }, + "if-unused": { + "type": "boolean" + }, + "immediate": { + "type": "boolean" + }, + "mandatory": { + "type": "boolean" + }, + "message-count": { + "type": "long" + }, + "message-id": { + "ignore_above": 1024, + "type": "keyword" + }, + "method-id": { + "type": "long" + }, + "multiple": { + "type": "boolean" + }, + "no-ack": { + "type": "boolean" + }, + "no-local": { + "type": "boolean" + }, + "no-wait": { + "type": "boolean" + }, + "passive": { + "type": "boolean" + }, + "priority": { + "type": "long" + }, + "queue": { + "ignore_above": 1024, + "type": "keyword" + }, + "redelivered": { + "type": "boolean" + }, + "reply-code": { + "type": "long" + }, + "reply-text": { + "ignore_above": 1024, + "type": "keyword" + }, + "reply-to": { + "ignore_above": 1024, + "type": "keyword" + }, + "routing-key": { + "ignore_above": 1024, + "type": "keyword" + }, + "timestamp": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "user-id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes_in": { + "path": "source.bytes", + "type": "alias" + }, + "bytes_out": { + "path": "destination.bytes", + "type": "alias" + }, + "cassandra": { + "properties": { + "no_request": { + "type": "boolean" + }, + "request": { + "properties": { + "headers": { + "properties": { + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "length": { + "type": "long" + }, + "op": { + "ignore_above": 1024, + "type": "keyword" + }, + "stream": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "type": "long" + } + } + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "response": { + "properties": { + "authentication": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "error": { + "properties": { + "code": { + "type": "long" + }, + "details": { + "properties": { + "alive": { + "type": "long" + }, + "arg_types": { + "ignore_above": 1024, + "type": "keyword" + }, + "blockfor": { + "type": "long" + }, + "data_present": { + "type": "boolean" + }, + "function": { + "ignore_above": 1024, + "type": "keyword" + }, + "keyspace": { + "ignore_above": 1024, + "type": "keyword" + }, + "num_failures": { + "ignore_above": 1024, + "type": "keyword" + }, + "read_consistency": { + "ignore_above": 1024, + "type": "keyword" + }, + "received": { + "type": "long" + }, + "required": { + "type": "long" + }, + "stmt_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "table": { + "ignore_above": 1024, + "type": "keyword" + }, + "write_type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "msg": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "event": { + "properties": { + "change": { + "ignore_above": 1024, + "type": "keyword" + }, + "host": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "schema_change": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "change": { + "ignore_above": 1024, + "type": "keyword" + }, + "keyspace": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "object": { + "ignore_above": 1024, + "type": "keyword" + }, + "table": { + "ignore_above": 1024, + "type": "keyword" + }, + "target": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "headers": { + "properties": { + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "length": { + "type": "long" + }, + "op": { + "ignore_above": 1024, + "type": "keyword" + }, + "stream": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "type": "long" + } + } + }, + "result": { + "properties": { + "keyspace": { + "ignore_above": 1024, + "type": "keyword" + }, + "prepared": { + "properties": { + "prepared_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "req_meta": { + "properties": { + "col_count": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "keyspace": { + "ignore_above": 1024, + "type": "keyword" + }, + "paging_state": { + "ignore_above": 1024, + "type": "keyword" + }, + "pkey_columns": { + "type": "long" + }, + "table": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "resp_meta": { + "properties": { + "col_count": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "keyspace": { + "ignore_above": 1024, + "type": "keyword" + }, + "paging_state": { + "ignore_above": 1024, + "type": "keyword" + }, + "pkey_columns": { + "type": "long" + }, + "table": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "rows": { + "properties": { + "meta": { + "properties": { + "col_count": { + "type": "long" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "keyspace": { + "ignore_above": 1024, + "type": "keyword" + }, + "paging_state": { + "ignore_above": 1024, + "type": "keyword" + }, + "pkey_columns": { + "type": "long" + }, + "table": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "num_rows": { + "type": "long" + } + } + }, + "schema_change": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "change": { + "ignore_above": 1024, + "type": "keyword" + }, + "keyspace": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "object": { + "ignore_above": 1024, + "type": "keyword" + }, + "table": { + "ignore_above": 1024, + "type": "keyword" + }, + "target": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "supported": { + "type": "object" + }, + "warnings": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "client": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "process": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "start": { + "ignore_above": 1024, + "type": "keyword" + }, + "working_directory": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "cloud": { + "properties": { + "account": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "availability_zone": { + "ignore_above": 1024, + "type": "keyword" + }, + "instance": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "machine": { + "properties": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "project": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "region": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "container": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "image": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "tag": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "type": "object" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "runtime": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "destination": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "process": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "dhcpv4": { + "properties": { + "assigned_ip": { + "type": "ip" + }, + "client_ip": { + "type": "ip" + }, + "client_mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "hardware_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "hops": { + "type": "long" + }, + "op_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "option": { + "properties": { + "boot_file_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "broadcast_address": { + "type": "ip" + }, + "class_identifier": { + "ignore_above": 1024, + "type": "keyword" + }, + "dns_servers": { + "type": "ip" + }, + "domain_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip_address_lease_time_sec": { + "type": "long" + }, + "max_dhcp_message_size": { + "type": "long" + }, + "message": { + "norms": false, + "type": "text" + }, + "message_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "ntp_servers": { + "type": "ip" + }, + "parameter_request_list": { + "ignore_above": 1024, + "type": "keyword" + }, + "rebinding_time_sec": { + "type": "long" + }, + "renewal_time_sec": { + "type": "long" + }, + "requested_ip_address": { + "type": "ip" + }, + "router": { + "type": "ip" + }, + "server_identifier": { + "type": "ip" + }, + "subnet_mask": { + "type": "ip" + }, + "time_servers": { + "type": "ip" + }, + "utc_time_offset_sec": { + "type": "long" + }, + "vendor_identifying_options": { + "type": "object" + } + } + }, + "relay_ip": { + "type": "ip" + }, + "seconds": { + "type": "long" + }, + "server_ip": { + "type": "ip" + }, + "server_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "transaction_id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "dns": { + "properties": { + "additionals": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "ttl": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "additionals_count": { + "type": "long" + }, + "answers": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "ttl": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "answers_count": { + "type": "long" + }, + "authorities": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "authorities_count": { + "type": "long" + }, + "flags": { + "properties": { + "authentic_data": { + "type": "boolean" + }, + "authoritative": { + "type": "boolean" + }, + "checking_disabled": { + "type": "boolean" + }, + "recursion_available": { + "type": "boolean" + }, + "recursion_desired": { + "type": "boolean" + }, + "truncated_response": { + "type": "boolean" + } + } + }, + "id": { + "type": "long" + }, + "op_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "opt": { + "properties": { + "do": { + "type": "boolean" + }, + "ext_rcode": { + "ignore_above": 1024, + "type": "keyword" + }, + "udp_size": { + "type": "long" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "question": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "etld_plus_one": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "response_code": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "docker": { + "properties": { + "container": { + "properties": { + "labels": { + "type": "object" + } + } + } + } + }, + "ecs": { + "properties": { + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "error": { + "properties": { + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "message": { + "norms": false, + "type": "text" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "event": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "created": { + "type": "date" + }, + "dataset": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "type": "long" + }, + "end": { + "type": "date" + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "outcome": { + "ignore_above": 1024, + "type": "keyword" + }, + "risk_score": { + "type": "float" + }, + "risk_score_norm": { + "type": "float" + }, + "severity": { + "type": "long" + }, + "start": { + "type": "date" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "fields": { + "type": "object" + }, + "file": { + "properties": { + "ctime": { + "type": "date" + }, + "device": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "inode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mtime": { + "type": "date" + }, + "owner": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "type": "long" + }, + "target_path": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "flow": { + "properties": { + "final": { + "type": "boolean" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "vlan": { + "type": "long" + } + } + }, + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "host": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "containerized": { + "type": "boolean" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "codename": { + "ignore_above": 1024, + "type": "keyword" + }, + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "http": { + "properties": { + "request": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "headers": { + "properties": { + "content-length": { + "type": "long" + } + } + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "referrer": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "response": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "headers": { + "properties": { + "content-length": { + "type": "long" + }, + "content-type": { + "type": "keyword" + } + } + }, + "status_code": { + "type": "long" + }, + "status_phrase": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "icmp": { + "properties": { + "request": { + "properties": { + "code": { + "type": "long" + }, + "message": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "type": "long" + } + } + }, + "response": { + "properties": { + "code": { + "type": "long" + }, + "message": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "type": "long" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "kubernetes": { + "properties": { + "annotations": { + "type": "object" + }, + "container": { + "properties": { + "image": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "type": "object" + }, + "namespace": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pod": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "labels": { + "type": "object" + }, + "log": { + "properties": { + "level": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + } + } + }, + "memcache": { + "properties": { + "protocol_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "request": { + "properties": { + "automove": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "cas_unique": { + "type": "long" + }, + "command": { + "ignore_above": 1024, + "type": "keyword" + }, + "count_values": { + "type": "long" + }, + "delta": { + "type": "long" + }, + "dest_class": { + "type": "long" + }, + "exptime": { + "type": "long" + }, + "flags": { + "type": "long" + }, + "initial": { + "type": "long" + }, + "line": { + "ignore_above": 1024, + "type": "keyword" + }, + "noreply": { + "type": "boolean" + }, + "opaque": { + "type": "long" + }, + "opcode": { + "ignore_above": 1024, + "type": "keyword" + }, + "opcode_value": { + "type": "long" + }, + "quiet": { + "type": "boolean" + }, + "raw_args": { + "ignore_above": 1024, + "type": "keyword" + }, + "sleep_us": { + "type": "long" + }, + "source_class": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vbucket": { + "type": "long" + }, + "verbosity": { + "type": "long" + } + } + }, + "response": { + "properties": { + "bytes": { + "type": "long" + }, + "cas_unique": { + "type": "long" + }, + "command": { + "ignore_above": 1024, + "type": "keyword" + }, + "count_values": { + "type": "long" + }, + "error_msg": { + "ignore_above": 1024, + "type": "keyword" + }, + "flags": { + "type": "long" + }, + "opaque": { + "type": "long" + }, + "opcode": { + "ignore_above": 1024, + "type": "keyword" + }, + "opcode_value": { + "type": "long" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "status_code": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "value": { + "type": "long" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "message": { + "norms": false, + "type": "text" + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "mongodb": { + "properties": { + "cursorId": { + "ignore_above": 1024, + "type": "keyword" + }, + "error": { + "ignore_above": 1024, + "type": "keyword" + }, + "fullCollectionName": { + "ignore_above": 1024, + "type": "keyword" + }, + "numberReturned": { + "type": "long" + }, + "numberToReturn": { + "type": "long" + }, + "numberToSkip": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "returnFieldsSelector": { + "ignore_above": 1024, + "type": "keyword" + }, + "selector": { + "ignore_above": 1024, + "type": "keyword" + }, + "startingFrom": { + "ignore_above": 1024, + "type": "keyword" + }, + "update": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "mysql": { + "properties": { + "affected_rows": { + "type": "long" + }, + "error_code": { + "type": "long" + }, + "error_message": { + "ignore_above": 1024, + "type": "keyword" + }, + "insert_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "num_fields": { + "ignore_above": 1024, + "type": "keyword" + }, + "num_rows": { + "ignore_above": 1024, + "type": "keyword" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "network": { + "properties": { + "application": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "community_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "direction": { + "ignore_above": 1024, + "type": "keyword" + }, + "forwarded_ip": { + "type": "ip" + }, + "iana_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "transport": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "nfs": { + "properties": { + "minor_version": { + "type": "long" + }, + "opcode": { + "ignore_above": 1024, + "type": "keyword" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "tag": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "type": "long" + } + } + }, + "notes": { + "path": "error.message", + "type": "alias" + }, + "observer": { + "properties": { + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vendor": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "organization": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "params": { + "norms": false, + "type": "text" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "pgsql": { + "properties": { + "error_code": { + "type": "long" + }, + "error_message": { + "ignore_above": 1024, + "type": "keyword" + }, + "error_severity": { + "ignore_above": 1024, + "type": "keyword" + }, + "num_fields": { + "ignore_above": 1024, + "type": "keyword" + }, + "num_rows": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "process": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" + } + } + }, + "title": { + "ignore_above": 1024, + "type": "keyword" + }, + "working_directory": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "redis": { + "properties": { + "error": { + "ignore_above": 1024, + "type": "keyword" + }, + "return_value": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "related": { + "properties": { + "ip": { + "type": "ip" + } + } + }, + "request": { + "norms": false, + "type": "text" + }, + "resource": { + "ignore_above": 1024, + "type": "keyword" + }, + "response": { + "norms": false, + "type": "text" + }, + "rpc": { + "properties": { + "auth_flavor": { + "ignore_above": 1024, + "type": "keyword" + }, + "cred": { + "properties": { + "gid": { + "type": "long" + }, + "gids": { + "ignore_above": 1024, + "type": "keyword" + }, + "machinename": { + "ignore_above": 1024, + "type": "keyword" + }, + "stamp": { + "type": "long" + }, + "uid": { + "type": "long" + } + } + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "xid": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "process": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "start": { + "ignore_above": 1024, + "type": "keyword" + }, + "working_directory": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "service": { + "properties": { + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "source": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "process": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, + "thrift": { + "properties": { + "exceptions": { + "ignore_above": 1024, + "type": "keyword" + }, + "params": { + "ignore_above": 1024, + "type": "keyword" + }, + "return_value": { + "ignore_above": 1024, + "type": "keyword" + }, + "service": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "tls": { + "properties": { + "alert_types": { + "ignore_above": 1024, + "type": "keyword" + }, + "client_certificate": { + "properties": { + "fingerprint": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_size": { + "type": "long" + }, + "raw": { + "ignore_above": 1024, + "type": "keyword" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "type": "long" + } + } + }, + "client_certificate_requested": { + "type": "boolean" + }, + "client_hello": { + "properties": { + "extensions": { + "properties": { + "_unparsed_": { + "ignore_above": 1024, + "type": "keyword" + }, + "application_layer_protocol_negotiation": { + "ignore_above": 1024, + "type": "keyword" + }, + "ec_points_formats": { + "ignore_above": 1024, + "type": "keyword" + }, + "server_name_indication": { + "ignore_above": 1024, + "type": "keyword" + }, + "session_ticket": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithms": { + "ignore_above": 1024, + "type": "keyword" + }, + "supported_groups": { + "ignore_above": 1024, + "type": "keyword" + }, + "supported_versions": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "fingerprints": { + "properties": { + "ja3": { + "properties": { + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "str": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "handshake_completed": { + "type": "boolean" + }, + "resumed": { + "type": "boolean" + }, + "resumption_method": { + "ignore_above": 1024, + "type": "keyword" + }, + "server_certificate": { + "properties": { + "fingerprint": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_size": { + "type": "long" + }, + "raw": { + "ignore_above": 1024, + "type": "keyword" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "type": "long" + } + } + }, + "server_hello": { + "properties": { + "extensions": { + "properties": { + "_unparsed_": { + "ignore_above": 1024, + "type": "keyword" + }, + "ec_points_formats": { + "ignore_above": 1024, + "type": "keyword" + }, + "session_ticket": { + "ignore_above": 1024, + "type": "keyword" + }, + "supported_versions": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "selected_cipher": { + "ignore_above": 1024, + "type": "keyword" + }, + "selected_compression_method": { + "ignore_above": 1024, + "type": "keyword" + }, + "session_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user": { + "properties": { + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user_agent": { + "properties": { + "device": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "settings": { + "index": { + "mapping": { + "total_fields": { + "limit": "10000" + } + }, + "number_of_replicas": "1", + "number_of_shards": "1", + "query": { + "default_field": [ + "tags", + "message", + "agent.version", + "agent.name", + "agent.type", + "agent.id", + "agent.ephemeral_id", + "client.address", + "client.mac", + "client.domain", + "client.geo.continent_name", + "client.geo.country_name", + "client.geo.region_name", + "client.geo.city_name", + "client.geo.country_iso_code", + "client.geo.region_iso_code", + "client.geo.name", + "cloud.provider", + "cloud.availability_zone", + "cloud.region", + "cloud.instance.id", + "cloud.instance.name", + "cloud.machine.type", + "cloud.account.id", + "container.runtime", + "container.id", + "container.image.name", + "container.image.tag", + "container.name", + "destination.address", + "destination.mac", + "destination.domain", + "destination.geo.continent_name", + "destination.geo.country_name", + "destination.geo.region_name", + "destination.geo.city_name", + "destination.geo.country_iso_code", + "destination.geo.region_iso_code", + "destination.geo.name", + "ecs.version", + "error.id", + "error.message", + "error.code", + "event.id", + "event.kind", + "event.category", + "event.action", + "event.outcome", + "event.type", + "event.module", + "event.dataset", + "event.hash", + "event.timezone", + "file.path", + "file.target_path", + "file.extension", + "file.type", + "file.device", + "file.inode", + "file.uid", + "file.owner", + "file.gid", + "file.group", + "file.mode", + "group.id", + "group.name", + "host.hostname", + "host.name", + "host.id", + "host.mac", + "host.type", + "host.architecture", + "host.os.platform", + "host.os.name", + "host.os.full", + "host.os.family", + "host.os.version", + "host.os.kernel", + "host.geo.continent_name", + "host.geo.country_name", + "host.geo.region_name", + "host.geo.city_name", + "host.geo.country_iso_code", + "host.geo.region_iso_code", + "host.geo.name", + "http.request.method", + "http.request.body.content", + "http.request.referrer", + "http.response.body.content", + "http.version", + "log.level", + "network.name", + "network.type", + "network.iana_number", + "network.transport", + "network.application", + "network.protocol", + "network.direction", + "network.community_id", + "observer.mac", + "observer.hostname", + "observer.vendor", + "observer.version", + "observer.serial_number", + "observer.type", + "observer.os.platform", + "observer.os.name", + "observer.os.full", + "observer.os.family", + "observer.os.version", + "observer.os.kernel", + "observer.geo.continent_name", + "observer.geo.country_name", + "observer.geo.region_name", + "observer.geo.city_name", + "observer.geo.country_iso_code", + "observer.geo.region_iso_code", + "observer.geo.name", + "organization.name", + "organization.id", + "os.platform", + "os.name", + "os.full", + "os.family", + "os.version", + "os.kernel", + "process.name", + "process.args", + "process.executable", + "process.title", + "process.working_directory", + "server.address", + "server.mac", + "server.domain", + "server.geo.continent_name", + "server.geo.country_name", + "server.geo.region_name", + "server.geo.city_name", + "server.geo.country_iso_code", + "server.geo.region_iso_code", + "server.geo.name", + "service.id", + "service.name", + "service.type", + "service.state", + "service.version", + "service.ephemeral_id", + "source.address", + "source.mac", + "source.domain", + "source.geo.continent_name", + "source.geo.country_name", + "source.geo.region_name", + "source.geo.city_name", + "source.geo.country_iso_code", + "source.geo.region_iso_code", + "source.geo.name", + "url.original", + "url.full", + "url.scheme", + "url.domain", + "url.path", + "url.query", + "url.fragment", + "url.username", + "url.password", + "user.id", + "user.name", + "user.full_name", + "user.email", + "user.hash", + "user.group.id", + "user.group.name", + "user_agent.original", + "user_agent.name", + "user_agent.version", + "user_agent.device.name", + "user_agent.os.platform", + "user_agent.os.name", + "user_agent.os.full", + "user_agent.os.family", + "user_agent.os.version", + "user_agent.os.kernel", + "agent.hostname", + "error.type", + "cloud.project.id", + "kubernetes.pod.name", + "kubernetes.pod.uid", + "kubernetes.namespace", + "kubernetes.node.name", + "kubernetes.container.name", + "kubernetes.container.image", + "type", + "server.process.name", + "server.process.args", + "server.process.executable", + "server.process.working_directory", + "server.process.start", + "client.process.name", + "client.process.args", + "client.process.executable", + "client.process.working_directory", + "client.process.start", + "flow.id", + "status", + "method", + "resource", + "path", + "query", + "params", + "request", + "response", + "amqp.reply-text", + "amqp.exchange", + "amqp.exchange-type", + "amqp.consumer-tag", + "amqp.routing-key", + "amqp.queue", + "amqp.content-type", + "amqp.content-encoding", + "amqp.delivery-mode", + "amqp.correlation-id", + "amqp.reply-to", + "amqp.expiration", + "amqp.message-id", + "amqp.timestamp", + "amqp.type", + "amqp.user-id", + "amqp.app-id", + "cassandra.request.headers.flags", + "cassandra.request.headers.stream", + "cassandra.request.headers.op", + "cassandra.request.query", + "cassandra.response.headers.flags", + "cassandra.response.headers.stream", + "cassandra.response.headers.op", + "cassandra.response.result.type", + "cassandra.response.result.rows.meta.keyspace", + "cassandra.response.result.rows.meta.table", + "cassandra.response.result.rows.meta.flags", + "cassandra.response.result.rows.meta.paging_state", + "cassandra.response.result.keyspace", + "cassandra.response.result.schema_change.change", + "cassandra.response.result.schema_change.keyspace", + "cassandra.response.result.schema_change.table", + "cassandra.response.result.schema_change.object", + "cassandra.response.result.schema_change.target", + "cassandra.response.result.schema_change.name", + "cassandra.response.result.schema_change.args", + "cassandra.response.result.prepared.prepared_id", + "cassandra.response.result.prepared.req_meta.keyspace", + "cassandra.response.result.prepared.req_meta.table", + "cassandra.response.result.prepared.req_meta.flags", + "cassandra.response.result.prepared.req_meta.paging_state", + "cassandra.response.result.prepared.resp_meta.keyspace", + "cassandra.response.result.prepared.resp_meta.table", + "cassandra.response.result.prepared.resp_meta.flags", + "cassandra.response.result.prepared.resp_meta.paging_state", + "cassandra.response.authentication.class", + "cassandra.response.warnings", + "cassandra.response.event.type", + "cassandra.response.event.change", + "cassandra.response.event.host", + "cassandra.response.event.schema_change.change", + "cassandra.response.event.schema_change.keyspace", + "cassandra.response.event.schema_change.table", + "cassandra.response.event.schema_change.object", + "cassandra.response.event.schema_change.target", + "cassandra.response.event.schema_change.name", + "cassandra.response.event.schema_change.args", + "cassandra.response.error.msg", + "cassandra.response.error.type", + "cassandra.response.error.details.read_consistency", + "cassandra.response.error.details.write_type", + "cassandra.response.error.details.keyspace", + "cassandra.response.error.details.table", + "cassandra.response.error.details.stmt_id", + "cassandra.response.error.details.num_failures", + "cassandra.response.error.details.function", + "cassandra.response.error.details.arg_types", + "dhcpv4.transaction_id", + "dhcpv4.flags", + "dhcpv4.client_mac", + "dhcpv4.server_name", + "dhcpv4.op_code", + "dhcpv4.hardware_type", + "dhcpv4.option.message_type", + "dhcpv4.option.parameter_request_list", + "dhcpv4.option.class_identifier", + "dhcpv4.option.domain_name", + "dhcpv4.option.hostname", + "dhcpv4.option.message", + "dhcpv4.option.boot_file_name", + "dns.op_code", + "dns.response_code", + "dns.question.name", + "dns.question.type", + "dns.question.class", + "dns.question.registered_domain", + "dns.answers.name", + "dns.answers.type", + "dns.answers.class", + "dns.answers.data", + "dns.authorities.name", + "dns.authorities.type", + "dns.authorities.class", + "dns.additionals.name", + "dns.additionals.type", + "dns.additionals.class", + "dns.additionals.data", + "dns.opt.version", + "dns.opt.ext_rcode", + "http.response.status_phrase", + "icmp.version", + "icmp.request.message", + "icmp.response.message", + "memcache.protocol_type", + "memcache.request.line", + "memcache.request.command", + "memcache.response.command", + "memcache.request.type", + "memcache.response.type", + "memcache.response.error_msg", + "memcache.request.opcode", + "memcache.response.opcode", + "memcache.response.status", + "memcache.request.raw_args", + "memcache.request.automove", + "memcache.response.version", + "mongodb.error", + "mongodb.fullCollectionName", + "mongodb.startingFrom", + "mongodb.query", + "mongodb.returnFieldsSelector", + "mongodb.selector", + "mongodb.update", + "mongodb.cursorId", + "mysql.insert_id", + "mysql.num_fields", + "mysql.num_rows", + "mysql.query", + "mysql.error_message", + "nfs.tag", + "nfs.opcode", + "nfs.status", + "rpc.xid", + "rpc.status", + "rpc.auth_flavor", + "rpc.cred.gids", + "rpc.cred.machinename", + "pgsql.error_message", + "pgsql.error_severity", + "pgsql.num_fields", + "pgsql.num_rows", + "redis.return_value", + "redis.error", + "thrift.params", + "thrift.service", + "thrift.return_value", + "thrift.exceptions", + "tls.version", + "tls.resumption_method", + "tls.client_hello.version", + "tls.client_hello.extensions.server_name_indication", + "tls.client_hello.extensions.application_layer_protocol_negotiation", + "tls.client_hello.extensions.session_ticket", + "tls.client_hello.extensions.supported_versions", + "tls.client_hello.extensions.supported_groups", + "tls.client_hello.extensions.signature_algorithms", + "tls.client_hello.extensions.ec_points_formats", + "tls.client_hello.extensions._unparsed_", + "tls.server_hello.version", + "tls.server_hello.selected_cipher", + "tls.server_hello.selected_compression_method", + "tls.server_hello.session_id", + "tls.server_hello.extensions.session_ticket", + "tls.server_hello.extensions.supported_versions", + "tls.server_hello.extensions.ec_points_formats", + "tls.server_hello.extensions._unparsed_", + "tls.client_certificate.serial_number", + "tls.client_certificate.public_key_algorithm", + "tls.client_certificate.signature_algorithm", + "tls.client_certificate.raw", + "tls.client_certificate.subject.country", + "tls.client_certificate.subject.organization", + "tls.client_certificate.subject.organizational_unit", + "tls.client_certificate.subject.province", + "tls.client_certificate.subject.common_name", + "tls.client_certificate.issuer.country", + "tls.client_certificate.issuer.organization", + "tls.client_certificate.issuer.organizational_unit", + "tls.client_certificate.issuer.province", + "tls.client_certificate.issuer.common_name", + "tls.client_certificate.fingerprint.md5", + "tls.client_certificate.fingerprint.sha1", + "tls.client_certificate.fingerprint.sha256", + "tls.server_certificate.serial_number", + "tls.server_certificate.public_key_algorithm", + "tls.server_certificate.signature_algorithm", + "tls.server_certificate.raw", + "tls.server_certificate.subject.country", + "tls.server_certificate.subject.organization", + "tls.server_certificate.subject.organizational_unit", + "tls.server_certificate.subject.province", + "tls.server_certificate.subject.common_name", + "tls.server_certificate.issuer.country", + "tls.server_certificate.issuer.organization", + "tls.server_certificate.issuer.organizational_unit", + "tls.server_certificate.issuer.province", + "tls.server_certificate.issuer.common_name", + "tls.server_certificate.fingerprint.md5", + "tls.server_certificate.fingerprint.sha1", + "tls.server_certificate.fingerprint.sha256", + "tls.alert_types", + "tls.fingerprints.ja3.hash", + "tls.fingerprints.ja3.str", + "fields.*" + ] + }, + "refresh_interval": "5s" + } + } + } +} diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/eql/trial_license_complete_tier/eql.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/eql/trial_license_complete_tier/eql.ts index 1934982779a98..089c107cadc30 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/eql/trial_license_complete_tier/eql.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/rule_execution_logic/eql/trial_license_complete_tier/eql.ts @@ -45,12 +45,15 @@ import { scheduleRuleRun, stopAllManualRuns, waitForBackfillExecuted, + setBrokenRuntimeField, + unsetBrokenRuntimeField, } from '../../../../utils'; import { createRule, deleteAllRules, deleteAllAlerts, waitForRuleFailure, + waitForRulePartialFailure, routeWithNamespace, } from '../../../../../../../common/utils/security_solution'; import { FtrProviderContext } from '../../../../../../ftr_provider_context'; @@ -77,6 +80,7 @@ export default ({ getService }: FtrProviderContext) => { const isServerless = config.get('serverless'); const dataPathBuilder = new EsArchivePathBuilder(isServerless); const auditPath = dataPathBuilder.getPath('auditbeat/hosts'); + const packetBeatPath = dataPathBuilder.getPath('packetbeat/default'); describe('@ess @serverless @serverlessQA EQL type rules', () => { const { indexListOfDocuments } = dataGeneratorFactory({ @@ -243,6 +247,35 @@ export default ({ getService }: FtrProviderContext) => { ).eql(1); }); + it('parses shard failures for EQL event query', async () => { + await esArchiver.load(packetBeatPath); + const rule: EqlRuleCreateProps = { + ...getEqlRuleForAlertTesting(['auditbeat-*', 'packetbeat-*']), + query: 'any where agent.type == "packetbeat" or broken == 1', + }; + await setBrokenRuntimeField({ es, index: 'auditbeat-*' }); + const createdRule = await createRule(supertest, log, rule); + const createdRuleId = createdRule.id; + await waitForRulePartialFailure({ supertest, log, id: createdRuleId }); + const route = routeWithNamespace(DETECTION_ENGINE_RULES_URL); + const response = await supertest + .get(route) + .set('kbn-xsrf', 'true') + .set('elastic-api-version', '2023-10-31') + .query({ id: createdRule.id }) + .expect(200); + + const ruleResponse = response.body; + expect( + ruleResponse.execution_summary.last_execution.message.includes( + 'The EQL event query was only executed on the available shards. The query failed to run successfully on the following shards:' + ) + ).eql(true); + + await unsetBrokenRuntimeField({ es, index: 'auditbeat-*' }); + await esArchiver.unload(packetBeatPath); + }); + it('generates up to max_alerts for non-sequence EQL queries', async () => { const maxAlerts = 200; const rule: EqlRuleCreateProps = { diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/index.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/index.ts index 68d9cf1b85660..76f83a7ba3547 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/index.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/index.ts @@ -24,3 +24,4 @@ export * from './get_detection_metrics_from_body'; export * from './get_stats_url'; export * from './combine_to_ndjson'; export * from './set_advanced_settings'; +export * from './runtime'; diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/runtime.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/runtime.ts new file mode 100644 index 0000000000000..89c4f598a2167 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/runtime.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Client } from '@elastic/elasticsearch'; + +interface UpdateMappingsProps { + es: Client; + index: string | string[]; +} +export const setBrokenRuntimeField = async ({ es, index }: UpdateMappingsProps) => { + await es.indices.putMapping({ + runtime: { + broken: { + type: 'long', + script: { + lang: 'painless', + source: + "emit(doc['non_existing'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ENGLISH))", + }, + }, + }, + index, + }); +}; + +export const unsetBrokenRuntimeField = async ({ es, index }: UpdateMappingsProps) => { + await es.indices.putMapping({ + runtime: { + // https://www.elastic.co/guide/en/elasticsearch/reference/current/runtime-mapping-fields.html#runtime-updating-scripts + // @ts-expect-error null is valid, see link above + broken: null, + }, + index, + }); +}; From bc5e893aaeec333132a7bd0d9fdc9d4b14574d23 Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Thu, 30 Jan 2025 11:56:24 -0800 Subject: [PATCH 02/11] Use current in documentation link service (#208867) --- .../packages/shared/kbn-doc-links/src/get_doc_meta.test.ts | 2 +- .../packages/shared/kbn-doc-links/src/get_doc_meta.ts | 2 +- .../routes/components/ai_assistant_selection_page.test.tsx | 4 ++-- .../lens/public/datasources/form_based/layer_settings.tsx | 2 +- .../new_job_awaiting_node_shared.tsx | 2 +- .../settings_definition/tail_sampling_settings.test.tsx | 2 +- .../plugins/profiling/public/views/add_data_view/index.tsx | 2 +- .../components/settings/global_params/params_list.tsx | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/platform/packages/shared/kbn-doc-links/src/get_doc_meta.test.ts b/src/platform/packages/shared/kbn-doc-links/src/get_doc_meta.test.ts index 7f0a43ceb6824..9f282f9510b1b 100644 --- a/src/platform/packages/shared/kbn-doc-links/src/get_doc_meta.test.ts +++ b/src/platform/packages/shared/kbn-doc-links/src/get_doc_meta.test.ts @@ -12,7 +12,7 @@ import { getDocLinksMeta } from './get_doc_meta'; describe('getDocLinksMeta', () => { it('returns the correct version for the `main` branch', () => { expect(getDocLinksMeta({ kibanaBranch: 'main', buildFlavor: 'traditional' }).version).toEqual( - 'master' + 'current' ); }); diff --git a/src/platform/packages/shared/kbn-doc-links/src/get_doc_meta.ts b/src/platform/packages/shared/kbn-doc-links/src/get_doc_meta.ts index 4a8779567b73c..df7861918cc43 100644 --- a/src/platform/packages/shared/kbn-doc-links/src/get_doc_meta.ts +++ b/src/platform/packages/shared/kbn-doc-links/src/get_doc_meta.ts @@ -19,7 +19,7 @@ export const getDocLinksMeta = ({ buildFlavor, }: GetDocLinksMetaOptions): DocLinksMeta => { return { - version: kibanaBranch === 'main' ? 'master' : kibanaBranch, + version: kibanaBranch === 'main' ? 'current' : kibanaBranch, ecs_version: 'current', elasticWebsiteUrl: 'https://www.elastic.co/', elasticGithubUrl: 'https://github.com/elastic/', diff --git a/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx b/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx index 640ffa35a5a52..98e18182500a0 100644 --- a/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx +++ b/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx @@ -98,7 +98,7 @@ describe('AiAssistantSelectionPage', () => { screen.getByTestId('pluginsAiAssistantSelectionPageDocumentationLink') ).toHaveAttribute( 'href', - 'https://www.elastic.co/guide/en/observability/master/obs-ai-assistant.html' + 'https://www.elastic.co/guide/en/observability/current/obs-ai-assistant.html' ); }); }); @@ -144,7 +144,7 @@ describe('AiAssistantSelectionPage', () => { screen.getByTestId('securityAiAssistantSelectionPageDocumentationLink') ).toHaveAttribute( 'href', - 'https://www.elastic.co/guide/en/security/master/security-assistant.html' + 'https://www.elastic.co/guide/en/security/current/security-assistant.html' ); }); }); diff --git a/x-pack/platform/plugins/shared/lens/public/datasources/form_based/layer_settings.tsx b/x-pack/platform/plugins/shared/lens/public/datasources/form_based/layer_settings.tsx index fecf71f3f2151..409d6dc1c240b 100644 --- a/x-pack/platform/plugins/shared/lens/public/datasources/form_based/layer_settings.tsx +++ b/x-pack/platform/plugins/shared/lens/public/datasources/form_based/layer_settings.tsx @@ -79,7 +79,7 @@ export function LayerSettingsPanel({ values={{ link: ( diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/jobs_awaiting_node_warning/new_job_awaiting_node_shared/new_job_awaiting_node_shared.tsx b/x-pack/platform/plugins/shared/ml/public/application/components/jobs_awaiting_node_warning/new_job_awaiting_node_shared/new_job_awaiting_node_shared.tsx index 79e523c3abf43..f23bc8eb9da01 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/components/jobs_awaiting_node_warning/new_job_awaiting_node_shared/new_job_awaiting_node_shared.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/components/jobs_awaiting_node_warning/new_job_awaiting_node_shared/new_job_awaiting_node_shared.tsx @@ -151,7 +151,7 @@ const MLJobsAwaitingNodeWarning: FC = ({ jobIds }) => { link: ( { it('return true when tail_sampling_interval is greater than 1s', () => { diff --git a/x-pack/solutions/observability/plugins/profiling/public/views/add_data_view/index.tsx b/x-pack/solutions/observability/plugins/profiling/public/views/add_data_view/index.tsx index 438c3b500bbf3..e52223551ed11 100644 --- a/x-pack/solutions/observability/plugins/profiling/public/views/add_data_view/index.tsx +++ b/x-pack/solutions/observability/plugins/profiling/public/views/add_data_view/index.tsx @@ -410,7 +410,7 @@ EOF`} {i18n.translate('xpack.profiling.tabs.symbols.step2.instructions', { defaultMessage: 'Instructions here', diff --git a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_list.tsx index b16dbcd686d91..45075be2aae77 100644 --- a/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_list.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_list.tsx @@ -232,7 +232,7 @@ export const ParamsList = () => { learnMore: ( {LEARN_MORE} From 970d805f74bb6ef98fbd56ab5ef13c8159305128 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Fri, 31 Jan 2025 06:58:50 +1100 Subject: [PATCH 03/11] skip failing test suite (#209014) --- .../apis/management/index_management/data_streams.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/api_integration/apis/management/index_management/data_streams.ts b/x-pack/test/api_integration/apis/management/index_management/data_streams.ts index 846dc1eb342d0..d7b295e7fda54 100644 --- a/x-pack/test/api_integration/apis/management/index_management/data_streams.ts +++ b/x-pack/test/api_integration/apis/management/index_management/data_streams.ts @@ -26,7 +26,8 @@ export default function ({ getService }: FtrProviderContext) { getDatastream, } = datastreamsHelpers(getService); - describe('Data streams', function () { + // Failing: See https://github.com/elastic/kibana/issues/209014 + describe.skip('Data streams', function () { describe('Get', () => { const testDataStreamName = 'test-data-stream'; From a7b55350cfbac748cbbe27b66600adc8db63de98 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 30 Jan 2025 20:37:26 +0000 Subject: [PATCH 04/11] skip flaky es promotion suites (#167676) --- .../saved_objects/migrations/group3/multiple_es_nodes.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/server/integration_tests/saved_objects/migrations/group3/multiple_es_nodes.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group3/multiple_es_nodes.test.ts index 6898962077b9c..f3b0c77ac59c8 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group3/multiple_es_nodes.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group3/multiple_es_nodes.test.ts @@ -96,7 +96,8 @@ function createRoot({ logFileName, hosts }: RootConfig) { }); } -describe('migration v2', () => { +// FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/167676 +describe.skip('migration v2', () => { let esServer: TestElasticsearchUtils; let root: Root; const migratedIndexAlias = `.kibana_${pkg.version}`; From 777e1fe3897fbc48af7ab3692ac548fe2c3be873 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 30 Jan 2025 20:39:29 +0000 Subject: [PATCH 05/11] skip flaky es promotion suites (#158318) --- .../group3/incompatible_cluster_routing_allocation.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/server/integration_tests/saved_objects/migrations/group3/incompatible_cluster_routing_allocation.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group3/incompatible_cluster_routing_allocation.test.ts index 8213c880c0fa4..4bd49900d482c 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group3/incompatible_cluster_routing_allocation.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group3/incompatible_cluster_routing_allocation.test.ts @@ -92,7 +92,8 @@ async function updateRoutingAllocations( }); } -describe('incompatible_cluster_routing_allocation', () => { +// FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/158318 +describe.skip('incompatible_cluster_routing_allocation', () => { let client: ElasticsearchClient; let root: Root; From 92fc287096af0e05362683e4388c6a88fa986f52 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 30 Jan 2025 20:40:29 +0000 Subject: [PATCH 06/11] skip flaky es promotion suites (#163254) --- .../saved_objects/migrations/group3/read_batch_size.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/server/integration_tests/saved_objects/migrations/group3/read_batch_size.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group3/read_batch_size.test.ts index 9f970ed234d71..227d062cdd7ef 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group3/read_batch_size.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group3/read_batch_size.test.ts @@ -19,7 +19,8 @@ import { getFips } from 'crypto'; const logFilePath = join(__dirname, 'read_batch_size.log'); -describe('migration v2 - read batch size', () => { +// FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/163254 +describe.skip('migration v2 - read batch size', () => { let esServer: TestElasticsearchUtils; let root: Root; let logs: string; From b5df3e256e09930402011e8e2a4d895cce7a45e7 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 30 Jan 2025 20:41:57 +0000 Subject: [PATCH 07/11] skip flaky es promotion suites (#163255) --- .../saved_objects/migrations/group3/read_batch_size.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/server/integration_tests/saved_objects/migrations/group3/read_batch_size.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group3/read_batch_size.test.ts index 227d062cdd7ef..a41c1a8b8136f 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group3/read_batch_size.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group3/read_batch_size.test.ts @@ -20,6 +20,7 @@ import { getFips } from 'crypto'; const logFilePath = join(__dirname, 'read_batch_size.log'); // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/163254 +// FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/163255 describe.skip('migration v2 - read batch size', () => { let esServer: TestElasticsearchUtils; let root: Root; From 2e4245889b563ff27e25e32efaab3b58a72de278 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 30 Jan 2025 22:20:26 +0000 Subject: [PATCH 08/11] chore(NA): update versions after v8.19.0 bump (#208995) This PR is a simple update of our versions file after the recent bumps. --- versions.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/versions.json b/versions.json index c7ab2c0e7050c..a616aaf8b2607 100644 --- a/versions.json +++ b/versions.json @@ -8,11 +8,16 @@ "currentMinor": true }, { - "version": "8.18.0", + "version": "8.19.0", "branch": "8.x", "previousMajor": true, "previousMinor": true }, + { + "version": "8.18.0", + "branch": "8.18", + "previousMajor": true + }, { "version": "8.17.2", "branch": "8.17", From a40314d25495c3fd0089369aaffedf83b4ed9454 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 30 Jan 2025 22:20:42 +0000 Subject: [PATCH 09/11] chore(NA): adds 8.18 into backportrc (#208998) It adds 8.18 into the .backportrc config file --- .backportrc.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.backportrc.json b/.backportrc.json index 931ea6dbfe3a7..913eb829b7374 100644 --- a/.backportrc.json +++ b/.backportrc.json @@ -4,6 +4,7 @@ "targetBranchChoices": [ "main", "8.x", + "8.18", "8.17", "8.16", "8.15", @@ -56,7 +57,7 @@ ], "branchLabelMapping": { "^v9.0.0$": "main", - "^v8.18.0$": "8.x", + "^v8.19.0$": "8.x", "^v(\\d+).(\\d+).\\d+$": "$1.$2" }, "autoMerge": true, From bd31407be578c448a00e3ad204d6a88722c2700f Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 30 Jan 2025 22:20:59 +0000 Subject: [PATCH 10/11] chore(NA): update pipeline resource definitions after bump 8.19.0 (#209004) This PR updates the pipeline resource definitions to support the new 8.17 added branch. --- .../kibana-es-snapshots.yml | 10 +++++++--- .../kibana-on-merge-unsupported-ftrs.yml | 2 +- .../pipeline-resource-definitions/kibana-on-merge.yml | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.buildkite/pipeline-resource-definitions/kibana-es-snapshots.yml b/.buildkite/pipeline-resource-definitions/kibana-es-snapshots.yml index 4ebaed73a25a4..650c9432b881e 100644 --- a/.buildkite/pipeline-resource-definitions/kibana-es-snapshots.yml +++ b/.buildkite/pipeline-resource-definitions/kibana-es-snapshots.yml @@ -22,7 +22,7 @@ spec: SLACK_NOTIFICATIONS_CHANNEL: '#kibana-operations-alerts' ELASTIC_SLACK_NOTIFICATIONS_ENABLED: 'true' allow_rebuilds: true - branch_configuration: main 8.x 8.17 8.16 7.17 + branch_configuration: main 8.x 8.18 8.17 8.16 7.17 default_branch: main repository: elastic/kibana pipeline_file: .buildkite/pipelines/es_snapshots/build.yml @@ -52,6 +52,10 @@ spec: cronline: 0 22 * * * America/New_York message: Daily build branch: '8.x' + Daily build (8.18): + cronline: 0 22 * * * America/New_York + message: Daily build + branch: '8.18' Daily build (8.17): cronline: 0 22 * * * America/New_York message: Daily build @@ -95,7 +99,7 @@ spec: SLACK_NOTIFICATIONS_CHANNEL: '#kibana-operations-alerts' ELASTIC_SLACK_NOTIFICATIONS_ENABLED: 'true' allow_rebuilds: true - branch_configuration: main 8.x 8.17 8.16 7.17 + branch_configuration: main 8.x 8.18 8.17 8.16 7.17 default_branch: main repository: elastic/kibana pipeline_file: .buildkite/pipelines/es_snapshots/promote.yml @@ -144,7 +148,7 @@ spec: ELASTIC_SLACK_NOTIFICATIONS_ENABLED: 'true' REPORT_FAILED_TESTS_TO_GITHUB: 'true' allow_rebuilds: true - branch_configuration: main 8.x 8.17 8.16 7.17 + branch_configuration: main 8.x 8.18 8.17 8.16 7.17 default_branch: main repository: elastic/kibana pipeline_file: .buildkite/pipelines/es_snapshots/verify.yml diff --git a/.buildkite/pipeline-resource-definitions/kibana-on-merge-unsupported-ftrs.yml b/.buildkite/pipeline-resource-definitions/kibana-on-merge-unsupported-ftrs.yml index 0ee2f94272dcb..3d7579c7e8560 100644 --- a/.buildkite/pipeline-resource-definitions/kibana-on-merge-unsupported-ftrs.yml +++ b/.buildkite/pipeline-resource-definitions/kibana-on-merge-unsupported-ftrs.yml @@ -22,7 +22,7 @@ spec: SLACK_NOTIFICATIONS_CHANNEL: '#kibana-unsupported-ftrs-alerts' ELASTIC_SLACK_NOTIFICATIONS_ENABLED: 'true' allow_rebuilds: true - branch_configuration: main 8.x 8.17 8.16 7.17 + branch_configuration: main 8.x 8.18 8.17 8.16 7.17 default_branch: main repository: elastic/kibana pipeline_file: .buildkite/pipelines/on_merge_unsupported_ftrs.yml diff --git a/.buildkite/pipeline-resource-definitions/kibana-on-merge.yml b/.buildkite/pipeline-resource-definitions/kibana-on-merge.yml index 45e96f0290e26..5a6d07e22133c 100644 --- a/.buildkite/pipeline-resource-definitions/kibana-on-merge.yml +++ b/.buildkite/pipeline-resource-definitions/kibana-on-merge.yml @@ -26,7 +26,7 @@ spec: ELASTIC_SLACK_NOTIFICATIONS_ENABLED: 'true' SCOUT_REPORTER_ENABLED: 'true' allow_rebuilds: true - branch_configuration: main 8.x 8.17 8.16 7.17 + branch_configuration: main 8.x 8.18 8.17 8.16 7.17 default_branch: main repository: elastic/kibana pipeline_file: .buildkite/pipelines/on_merge.yml From df4a6d7ce37bfaaf612190d8e68fc8769d69b235 Mon Sep 17 00:00:00 2001 From: seanrathier Date: Thu, 30 Jan 2025 18:36:59 -0500 Subject: [PATCH 11/11] [Cloud Security] Unskipped and fixed flaky agentless test (#208844) --- .../agentless/create_agent.ts | 9 ++++++--- .../agentless/security_posture.ts | 6 ++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/x-pack/test/cloud_security_posture_functional/agentless/create_agent.ts b/x-pack/test/cloud_security_posture_functional/agentless/create_agent.ts index b00902d9ba830..7bc3a6cbd64be 100644 --- a/x-pack/test/cloud_security_posture_functional/agentless/create_agent.ts +++ b/x-pack/test/cloud_security_posture_functional/agentless/create_agent.ts @@ -28,7 +28,6 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { 'cisAddIntegration', ]); - // Failing: See https://github.com/elastic/kibana/issues/208495 describe('Agentless cloud', function () { let cisIntegration: typeof pageObjects.cisAddIntegration; let cisIntegrationAws: typeof pageObjects.cisAddIntegration.cisAws; @@ -57,8 +56,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await cisIntegration.inputIntegrationName(integrationPolicyName); await cisIntegration.selectSetupTechnology('agentless'); - await cisIntegration.selectAwsCredentials('direct'); + await pageObjects.header.waitUntilLoadingHasFinished(); + await cisIntegration.selectAwsCredentials('direct'); await pageObjects.header.waitUntilLoadingHasFinished(); await cisIntegration.fillInTextField('awsDirectAccessKeyId', 'access_key_id'); @@ -97,8 +97,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await cisIntegration.inputIntegrationName(integrationPolicyName); await cisIntegration.selectSetupTechnology('agentless'); - await cisIntegration.selectAwsCredentials('direct'); + await pageObjects.header.waitUntilLoadingHasFinished(); + await cisIntegration.selectAwsCredentials('direct'); await pageObjects.header.waitUntilLoadingHasFinished(); await cisIntegration.fillInTextField('awsDirectAccessKeyId', 'access_key_id'); @@ -128,6 +129,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await cisIntegration.clickOptionButton(AWS_SINGLE_ACCOUNT_TEST_ID); await cisIntegration.inputIntegrationName(integrationPolicyName); + await pageObjects.header.waitUntilLoadingHasFinished(); + await cisIntegration.selectSetupTechnology('agent-based'); await pageObjects.header.waitUntilLoadingHasFinished(); diff --git a/x-pack/test/cloud_security_posture_functional/agentless/security_posture.ts b/x-pack/test/cloud_security_posture_functional/agentless/security_posture.ts index 93578f6660c67..07d7853b2c3db 100644 --- a/x-pack/test/cloud_security_posture_functional/agentless/security_posture.ts +++ b/x-pack/test/cloud_security_posture_functional/agentless/security_posture.ts @@ -25,7 +25,6 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const POLICY_NAME_FIELD = 'createAgentPolicyNameField'; - // Failing: See https://github.com/elastic/kibana/issues/208533 describe('Agentless Security Posture Integration Options', function () { let cisIntegration: typeof pageObjects.cisAddIntegration; @@ -41,6 +40,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await cisIntegration.navigateToAddIntegrationWithVersionPage( AGENTLESS_SECURITY_POSTURE_PACKAGE_VERSION ); + await pageObjects.header.waitUntilLoadingHasFinished(); await cisIntegration.clickOptionButton(KSPM_RADIO_OPTION); await pageObjects.header.waitUntilLoadingHasFinished(); @@ -59,6 +59,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await cisIntegration.navigateToAddIntegrationWithVersionPage( AGENTLESS_SECURITY_POSTURE_PACKAGE_VERSION ); + await pageObjects.header.waitUntilLoadingHasFinished(); await cisIntegration.clickOptionButton(CNVM_RADIO_OPTION); await pageObjects.header.waitUntilLoadingHasFinished(); @@ -72,10 +73,11 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { expect(hasAgentBased).to.be(true); }); - it.skip(`should show cspm with agentless option`, async () => { + it(`should show cspm with agentless option`, async () => { await cisIntegration.navigateToAddIntegrationWithVersionPage( AGENTLESS_SECURITY_POSTURE_PACKAGE_VERSION ); + await pageObjects.header.waitUntilLoadingHasFinished(); await cisIntegration.clickOptionButton(CSPM_RADIO_OPTION); await pageObjects.header.waitUntilLoadingHasFinished();