From 476af3133a5840d829f27a07b66ebc75761706b9 Mon Sep 17 00:00:00 2001 From: Sean Rathier Date: Tue, 26 Nov 2024 15:11:04 -0500 Subject: [PATCH 01/12] Changeing the agentless serverless tests --- .../agentless_mki_serverless_quality_gates.ts | 97 +++++++++++++++++++ .../create_agent.ts | 26 +---- .../cloud_security_posture/agentless/index.ts | 1 + .../mock_agentless_api.ts | 0 .../agentless_api/index.ts | 15 --- .../functional/test_suites/security/index.ts | 14 ++- 6 files changed, 109 insertions(+), 44 deletions(-) create mode 100644 x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/agentless_mki_serverless_quality_gates.ts rename x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/{agentless_api => agentless}/create_agent.ts (79%) rename x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/{agentless_api => agentless}/mock_agentless_api.ts (100%) delete mode 100644 x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/index.ts diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/agentless_mki_serverless_quality_gates.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/agentless_mki_serverless_quality_gates.ts new file mode 100644 index 0000000000000..e105a9733850f --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/agentless_mki_serverless_quality_gates.ts @@ -0,0 +1,97 @@ +/* + * 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 { CLOUD_CREDENTIALS_PACKAGE_VERSION } from '@kbn/cloud-security-posture-plugin/common/constants'; +import * as http from 'http'; +import expect from '@kbn/expect'; +import type { FtrProviderContext } from '../../../../../ftr_provider_context'; +export default function ({ getPageObjects, getService }: FtrProviderContext) { + const agentCreationTimeout = 1000 * 60 * 1; // 1 minute + const retry = getService('retry'); + const pageObjects = getPageObjects([ + 'svlCommonPage', + 'cspSecurity', + 'security', + 'header', + 'cisAddIntegration', + ]); + + const CIS_AWS_OPTION_TEST_ID = 'cisAwsTestId'; + + const AWS_SINGLE_ACCOUNT_TEST_ID = 'awsSingleTestId'; + + // This test suiteis only running in the Serverless Quality Gates environment + describe('Agentless API Serverless', function () { + let mockApiServer: http.Server; + let cisIntegration: typeof pageObjects.cisAddIntegration; + + before(async () => { + await pageObjects.svlCommonPage.loginAsAdmin(); + cisIntegration = pageObjects.cisAddIntegration; + }); + + after(async () => { + mockApiServer.close(); + }); + + it(`should create agentless-agent`, async () => { + const integrationPolicyName = `cloud_security_posture-${new Date().toISOString()}`; + await cisIntegration.navigateToAddIntegrationCspmWithVersionPage( + CLOUD_CREDENTIALS_PACKAGE_VERSION + ); + + await cisIntegration.clickOptionButton(CIS_AWS_OPTION_TEST_ID); + await cisIntegration.clickOptionButton(AWS_SINGLE_ACCOUNT_TEST_ID); + + await cisIntegration.inputIntegrationName(integrationPolicyName); + + await cisIntegration.selectSetupTechnology('agentless'); + await cisIntegration.selectAwsCredentials('direct'); + + await pageObjects.header.waitUntilLoadingHasFinished(); + + await cisIntegration.clickSaveButton(); + await pageObjects.header.waitUntilLoadingHasFinished(); + + await cisIntegration.navigateToIntegrationCspList(); + await pageObjects.header.waitUntilLoadingHasFinished(); + + expect(await cisIntegration.getFirstCspmIntegrationPageAgentlessIntegration()).to.be( + integrationPolicyName + ); + + const agentStatusBadge = testSubjects.find('agentlessStatusBadge'); + expect(agentStatusBadge).to.be.ok(); + }); + + it(`should create default agent-based agent`, async () => { + const integrationPolicyName = `cloud_security_posture-${new Date().toISOString()}`; + + await cisIntegration.navigateToAddIntegrationCspmWithVersionPage( + CLOUD_CREDENTIALS_PACKAGE_VERSION + ); + + await cisIntegration.clickOptionButton(CIS_AWS_OPTION_TEST_ID); + await cisIntegration.clickOptionButton(AWS_SINGLE_ACCOUNT_TEST_ID); + + await cisIntegration.inputIntegrationName(integrationPolicyName); + + await cisIntegration.clickSaveButton(); + await pageObjects.header.waitUntilLoadingHasFinished(); + + const agentPolicyName = await cisIntegration.getAgentBasedPolicyValue(); + + await cisIntegration.navigateToIntegrationCspList(); + await pageObjects.header.waitUntilLoadingHasFinished(); + + expect(await cisIntegration.getFirstCspmIntegrationPageIntegration()).to.be( + integrationPolicyName + ); + expect(await cisIntegration.getFirstCspmIntegrationPageAgent()).to.be(agentPolicyName); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/create_agent.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/create_agent.ts similarity index 79% rename from x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/create_agent.ts rename to x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/create_agent.ts index bf9fd31b9e266..54957cd0a5f43 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/create_agent.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/create_agent.ts @@ -8,7 +8,6 @@ import { CLOUD_CREDENTIALS_PACKAGE_VERSION } from '@kbn/cloud-security-posture-plugin/common/constants'; import * as http from 'http'; import expect from '@kbn/expect'; -import equals from 'fast-deep-equal'; import { setupMockServer } from './mock_agentless_api'; import type { FtrProviderContext } from '../../../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { @@ -57,22 +56,6 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await cisIntegration.selectSetupTechnology('agentless'); await cisIntegration.selectAwsCredentials('direct'); - if ( - process.env.TEST_CLOUD && - process.env.CSPM_AWS_ACCOUNT_ID && - process.env.CSPM_AWS_SECRET_KEY - ) { - await cisIntegration.fillInTextField( - cisIntegration.testSubjectIds.DIRECT_ACCESS_KEY_ID_TEST_ID, - process.env.CSPM_AWS_ACCOUNT_ID - ); - - await cisIntegration.fillInTextField( - cisIntegration.testSubjectIds.DIRECT_ACCESS_SECRET_KEY_TEST_ID, - process.env.CSPM_AWS_SECRET_KEY - ); - } - await pageObjects.header.waitUntilLoadingHasFinished(); await cisIntegration.clickSaveButton(); @@ -85,13 +68,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { integrationPolicyName ); - // wait for eventually Pending or Healthy status - // purpose of this retry is to wait for the agent to be created and the status to be updated - // not to wait for the agent to be healthy - await retry.tryForTime(agentCreationTimeout, async () => { - const resStatus = await cisIntegration.getFirstCspmIntegrationPageAgentlessStatus(); - expect(equals(resStatus, 'Healthy') || equals(resStatus, 'Pending')).to.be(true); - }); + const resStatus = await cisIntegration.getFirstCspmIntegrationPageAgentlessStatus(); + expect(resStatus).to.be('Pending'); }); it(`should create default agent-based agent`, async () => { diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/index.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/index.ts index 235757c508c16..875dd630f2ade 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/index.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/index.ts @@ -12,5 +12,6 @@ export default function ({ loadTestFile }: FtrProviderContext) { this.tags(['cloud_security_posture_agentless']); loadTestFile(require.resolve('./cis_integration_aws')); loadTestFile(require.resolve('./cis_integration_gcp')); + loadTestFile(require.resolve('./create_agent')); }); } diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/mock_agentless_api.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/mock_agentless_api.ts similarity index 100% rename from x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/mock_agentless_api.ts rename to x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/mock_agentless_api.ts diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/index.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/index.ts deleted file mode 100644 index 0aa5f978445f1..0000000000000 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless_api/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * 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 { FtrProviderContext } from '../../../../../ftr_provider_context'; - -export default function ({ loadTestFile }: FtrProviderContext) { - describe('cloud_security_posture', function () { - this.tags(['failsOnMKI', 'cloud_security_posture']); - loadTestFile(require.resolve('./create_agent')); - }); -} diff --git a/x-pack/test_serverless/functional/test_suites/security/index.ts b/x-pack/test_serverless/functional/test_suites/security/index.ts index 833df2edb78cd..f807cd052e559 100644 --- a/x-pack/test_serverless/functional/test_suites/security/index.ts +++ b/x-pack/test_serverless/functional/test_suites/security/index.ts @@ -13,13 +13,17 @@ export default function ({ loadTestFile }: FtrProviderContext) { describe('serverless security UI', function () { this.tags(['esGate']); - loadTestFile(require.resolve('./ftr/navigation')); - loadTestFile(require.resolve('./ftr/cases')); - loadTestFile(require.resolve('./ftr/advanced_settings')); - loadTestFile(require.resolve('./ml')); + // loadTestFile(require.resolve('./ftr/navigation')); + // loadTestFile(require.resolve('./ftr/cases')); + // loadTestFile(require.resolve('./ftr/advanced_settings')); + // loadTestFile(require.resolve('./ml')); if (isCloud) { // only run the agentless API tests in the Serverless Quality Gates - loadTestFile(require.resolve('./ftr/cloud_security_posture/agentless_api')); + loadTestFile( + require.resolve( + './ftr/cloud_security_posture/agentless/agentless_mki_serverless_quality_gates.ts' + ) + ); } }); } From 84771656724edd06513678820caefbea1ef965b5 Mon Sep 17 00:00:00 2001 From: Sean Rathier Date: Tue, 26 Nov 2024 16:52:14 -0500 Subject: [PATCH 02/12] refatoring the MKI tests --- .../agentless/agentless_mki_serverless_quality_gates.ts | 3 ++- .../functional/test_suites/security/index.ts | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/agentless_mki_serverless_quality_gates.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/agentless_mki_serverless_quality_gates.ts index e105a9733850f..58e0a18d86275 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/agentless_mki_serverless_quality_gates.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/agentless_mki_serverless_quality_gates.ts @@ -24,7 +24,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const AWS_SINGLE_ACCOUNT_TEST_ID = 'awsSingleTestId'; - // This test suiteis only running in the Serverless Quality Gates environment + // This test suite is only running in the Serverless Quality Gates environment describe('Agentless API Serverless', function () { let mockApiServer: http.Server; let cisIntegration: typeof pageObjects.cisAddIntegration; @@ -65,6 +65,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { ); const agentStatusBadge = testSubjects.find('agentlessStatusBadge'); + // The status badge could be either "Pending", "Healthy", or "Unhealthy" so we are just checking that it exists expect(agentStatusBadge).to.be.ok(); }); diff --git a/x-pack/test_serverless/functional/test_suites/security/index.ts b/x-pack/test_serverless/functional/test_suites/security/index.ts index f807cd052e559..988984d82a812 100644 --- a/x-pack/test_serverless/functional/test_suites/security/index.ts +++ b/x-pack/test_serverless/functional/test_suites/security/index.ts @@ -13,10 +13,10 @@ export default function ({ loadTestFile }: FtrProviderContext) { describe('serverless security UI', function () { this.tags(['esGate']); - // loadTestFile(require.resolve('./ftr/navigation')); - // loadTestFile(require.resolve('./ftr/cases')); - // loadTestFile(require.resolve('./ftr/advanced_settings')); - // loadTestFile(require.resolve('./ml')); + loadTestFile(require.resolve('./ftr/navigation')); + loadTestFile(require.resolve('./ftr/cases')); + loadTestFile(require.resolve('./ftr/advanced_settings')); + loadTestFile(require.resolve('./ml')); if (isCloud) { // only run the agentless API tests in the Serverless Quality Gates loadTestFile( From 3d2068c41f2a4a0bd149ee22b47de2b782f624a8 Mon Sep 17 00:00:00 2001 From: Sean Rathier Date: Wed, 27 Nov 2024 10:30:16 -0500 Subject: [PATCH 03/12] Moved files and created MKI directory --- ...config.cloud_security_posture.agentless.ts | 5 +-- ...ig.cloud_security_posture.agentless_api.ts | 34 ------------------- .../agentless/cis_integration_aws.ts | 2 +- .../agentless/cis_integration_gcp.ts | 2 +- .../agentless/create_agent.ts | 6 ++-- .../mki_serverless_quality_gates/READ_ME.md | 9 +++++ .../agentless/mki_create_agent.ts} | 12 ++----- .../mki_serverless_quality_gates/index.ts | 17 ++++++++++ .../functional/test_suites/security/index.ts | 8 ++--- 9 files changed, 38 insertions(+), 57 deletions(-) delete mode 100644 x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.agentless_api.ts create mode 100644 x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/READ_ME.md rename x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/{agentless/agentless_mki_serverless_quality_gates.ts => mki_serverless_quality_gates/agentless/mki_create_agent.ts} (91%) create mode 100644 x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/index.ts diff --git a/x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.agentless.ts b/x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.agentless.ts index 692ae096265fb..b203bc6427ed2 100644 --- a/x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.agentless.ts +++ b/x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.agentless.ts @@ -16,6 +16,8 @@ export default createTestConfig({ reportName: 'Serverless Security Cloud Security Agentless Onboarding Functional Tests', }, kbnServerArgs: [ + `--xpack.cloud.serverless.project_id=some_fake_project_id`, + `--xpack.fleet.packages.0.name=cloud_security_posture`, `--xpack.fleet.packages.0.version=${CLOUD_CREDENTIALS_PACKAGE_VERSION}`, `--xpack.fleet.agentless.enabled=true`, @@ -26,11 +28,10 @@ export default createTestConfig({ `--xpack.fleet.agentPolicies.0.id=agentless`, `--xpack.fleet.agentPolicies.0.name=agentless`, `--xpack.fleet.agentPolicies.0.package_policies=[]`, - `--xpack.cloud.serverless.project_id=some_fake_project_id`, `--xpack.fleet.agentPolicies.0.is_default=true`, `--xpack.fleet.agentPolicies.0.is_default_fleet_server=true`, - // Serverless Agentless API + `--xpack.fleet.agentless.enabled=true`, `--xpack.fleet.agentless.api.url=http://localhost:8089`, `--xpack.fleet.agentless.api.tls.certificate=${KBN_CERT_PATH}`, `--xpack.fleet.agentless.api.tls.key=${KBN_KEY_PATH}`, diff --git a/x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.agentless_api.ts b/x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.agentless_api.ts deleted file mode 100644 index 0f37f224197ef..0000000000000 --- a/x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.agentless_api.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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 { CLOUD_CREDENTIALS_PACKAGE_VERSION } from '@kbn/cloud-security-posture-plugin/common/constants'; -import { CA_CERT_PATH, KBN_CERT_PATH, KBN_KEY_PATH } from '@kbn/dev-utils'; -import { createTestConfig } from '../../config.base'; - -export default createTestConfig({ - serverlessProject: 'security', - junit: { - reportName: 'Serverless Security Cloud Security Agentless API Onboarding Functional Tests', - }, - kbnServerArgs: [ - `--xpack.fleet.packages.0.name=cloud_security_posture`, - `--xpack.fleet.packages.0.version=${CLOUD_CREDENTIALS_PACKAGE_VERSION}`, - - `--xpack.fleet.agents.fleet_server.hosts=["https://ftr.kibana:8220"]`, - `--xpack.fleet.internal.fleetServerStandalone=true`, - - // Agentless Configuration based on Serverless Security Dev Yaml - config/serverless.security.dev.yml - `--xpack.fleet.agentless.enabled=true`, - `--xpack.fleet.agentless.api.url=http://localhost:8089`, - `--xpack.fleet.agentless.api.tls.certificate=${KBN_CERT_PATH}`, - `--xpack.fleet.agentless.api.tls.key=${KBN_KEY_PATH}`, - `--xpack.fleet.agentless.api.tls.ca=${CA_CERT_PATH}`, - `--xpack.cloud.serverless.project_id=some_fake_project_id`, - ], - // load tests in the index file - testFiles: [require.resolve('./ftr/cloud_security_posture/agentless_api')], -}); diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts index e669545d135f9..ea499f96da585 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_aws.ts @@ -8,7 +8,7 @@ import { CLOUD_CREDENTIALS_PACKAGE_VERSION } from '@kbn/cloud-security-posture-p import expect from '@kbn/expect'; import * as http from 'http'; import type { FtrProviderContext } from '../../../../../ftr_provider_context'; -import { setupMockServer } from '../agentless_api/mock_agentless_api'; +import { setupMockServer } from './mock_agentless_api'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const mockAgentlessApiService = setupMockServer(); const pageObjects = getPageObjects([ diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts index 95f855697c5bd..897a6e589fdb3 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/cis_integration_gcp.ts @@ -9,7 +9,7 @@ import expect from '@kbn/expect'; import { CLOUD_CREDENTIALS_PACKAGE_VERSION } from '@kbn/cloud-security-posture-plugin/common/constants'; import * as http from 'http'; import type { FtrProviderContext } from '../../../../../ftr_provider_context'; -import { setupMockServer } from '../agentless_api/mock_agentless_api'; +import { setupMockServer } from './mock_agentless_api'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const pageObjects = getPageObjects(['common', 'svlCommonPage', 'cisAddIntegration', 'header']); diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/create_agent.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/create_agent.ts index 54957cd0a5f43..14351439ac68f 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/create_agent.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/create_agent.ts @@ -11,8 +11,6 @@ import expect from '@kbn/expect'; import { setupMockServer } from './mock_agentless_api'; import type { FtrProviderContext } from '../../../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { - const agentCreationTimeout = 1000 * 60 * 1; // 1 minute - const retry = getService('retry'); const mockAgentlessApiService = setupMockServer(); const pageObjects = getPageObjects([ 'svlCommonPage', @@ -27,12 +25,11 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const AWS_SINGLE_ACCOUNT_TEST_ID = 'awsSingleTestId'; describe('Agentless API Serverless', function () { + this.tags(['skipMKI', 'cloud_security_posture_agentless']); let mockApiServer: http.Server; let cisIntegration: typeof pageObjects.cisAddIntegration; before(async () => { - // If process.env.TEST_CLOUD is set, then the test is running in the Serverless Quality Gates - // and this MSW server will be listening for a request that will never come. mockApiServer = mockAgentlessApiService.listen(8089); // Start the usage api mock server on port 8089 await pageObjects.svlCommonPage.loginAsAdmin(); cisIntegration = pageObjects.cisAddIntegration; @@ -69,6 +66,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { ); const resStatus = await cisIntegration.getFirstCspmIntegrationPageAgentlessStatus(); + // The status can only be Pending because the agentless agent will never be created expect(resStatus).to.be('Pending'); }); diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/READ_ME.md b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/READ_ME.md new file mode 100644 index 0000000000000..0538d75857c18 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/READ_ME.md @@ -0,0 +1,9 @@ +# MKI Serverless Quality Gates + +This folder contains tests that are run in the MKI Serverless Quality Gates. These tests are designed to ensure the security and functionality of the system in a serverless environment. + +## Contributing + +Please prefix the tests in this folder with `mki_` so that is clear to the following developer that these tests run only in MKI and Serverless Quality Gates. + +If you would like to contribute to these tests, please follow the contribution guidelines outlined in the main project repository. diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/agentless_mki_serverless_quality_gates.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/agentless/mki_create_agent.ts similarity index 91% rename from x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/agentless_mki_serverless_quality_gates.ts rename to x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/agentless/mki_create_agent.ts index 58e0a18d86275..d8a3913175fe5 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/agentless/agentless_mki_serverless_quality_gates.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/agentless/mki_create_agent.ts @@ -6,12 +6,10 @@ */ import { CLOUD_CREDENTIALS_PACKAGE_VERSION } from '@kbn/cloud-security-posture-plugin/common/constants'; -import * as http from 'http'; import expect from '@kbn/expect'; -import type { FtrProviderContext } from '../../../../../ftr_provider_context'; +import type { FtrProviderContext } from '../../../../../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { - const agentCreationTimeout = 1000 * 60 * 1; // 1 minute - const retry = getService('retry'); + const testSubjects = getService('testSubjects'); const pageObjects = getPageObjects([ 'svlCommonPage', 'cspSecurity', @@ -26,7 +24,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { // This test suite is only running in the Serverless Quality Gates environment describe('Agentless API Serverless', function () { - let mockApiServer: http.Server; + this.tags(['cloud_security_posture_agentless']); let cisIntegration: typeof pageObjects.cisAddIntegration; before(async () => { @@ -34,10 +32,6 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { cisIntegration = pageObjects.cisAddIntegration; }); - after(async () => { - mockApiServer.close(); - }); - it(`should create agentless-agent`, async () => { const integrationPolicyName = `cloud_security_posture-${new Date().toISOString()}`; await cisIntegration.navigateToAddIntegrationCspmWithVersionPage( diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/index.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/index.ts new file mode 100644 index 0000000000000..a1b5798f831b3 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/index.ts @@ -0,0 +1,17 @@ +/* + * 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 { FtrProviderContext } from '../../../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('cloud_security_posture', function () { + this.tags(['cloud_security_posture']); + + // do not resolve files which are ending with `.essentials.ts` + loadTestFile(require.resolve('./agentless/mki_create_agent')); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/security/index.ts b/x-pack/test_serverless/functional/test_suites/security/index.ts index 988984d82a812..4326a401a044c 100644 --- a/x-pack/test_serverless/functional/test_suites/security/index.ts +++ b/x-pack/test_serverless/functional/test_suites/security/index.ts @@ -18,12 +18,8 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./ftr/advanced_settings')); loadTestFile(require.resolve('./ml')); if (isCloud) { - // only run the agentless API tests in the Serverless Quality Gates - loadTestFile( - require.resolve( - './ftr/cloud_security_posture/agentless/agentless_mki_serverless_quality_gates.ts' - ) - ); + // only run tests in the Serverless Quality Gates + loadTestFile(require.resolve('./ftr/cloud_security_posture/mki_serverless_quality_gates')); } }); } From 75cb72a5b62d3257f3a306919735fff7a02aba68 Mon Sep 17 00:00:00 2001 From: Sean Rathier Date: Wed, 27 Nov 2024 11:31:42 -0500 Subject: [PATCH 04/12] Created mkiOnly config --- .buildkite/ftr_security_serverless_configs.yml | 1 - .../test_suites/security/config.mki_only.ts | 15 +++++++++++++++ .../READ_ME.md | 0 .../agentless/mki_create_agent.ts | 0 .../index.ts | 0 5 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 x-pack/test_serverless/functional/test_suites/security/config.mki_only.ts rename x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/{mki_serverless_quality_gates => mki_only}/READ_ME.md (100%) rename x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/{mki_serverless_quality_gates => mki_only}/agentless/mki_create_agent.ts (100%) rename x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/{mki_serverless_quality_gates => mki_only}/index.ts (100%) diff --git a/.buildkite/ftr_security_serverless_configs.yml b/.buildkite/ftr_security_serverless_configs.yml index 69d4801292cf7..6d83ebcb5658f 100644 --- a/.buildkite/ftr_security_serverless_configs.yml +++ b/.buildkite/ftr_security_serverless_configs.yml @@ -32,7 +32,6 @@ enabled: - x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.basic.ts - x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.essentials.ts - x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.agentless.ts - - x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.agentless_api.ts - x-pack/test_serverless/functional/test_suites/security/config.saved_objects_management.ts - x-pack/test_serverless/functional/test_suites/security/config.context_awareness.ts - x-pack/test_serverless/functional/test_suites/security/common_configs/config.group1.ts diff --git a/x-pack/test_serverless/functional/test_suites/security/config.mki_only.ts b/x-pack/test_serverless/functional/test_suites/security/config.mki_only.ts new file mode 100644 index 0000000000000..2c0fce50b8452 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/security/config.mki_only.ts @@ -0,0 +1,15 @@ +/* + * 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 { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('serverless security UI', function () { + this.tags(['security-mki-only']); + loadTestFile(require.resolve('./ftr/cloud_security_posture/mki_only')); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/READ_ME.md b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/READ_ME.md similarity index 100% rename from x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/READ_ME.md rename to x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/READ_ME.md diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/agentless/mki_create_agent.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/agentless/mki_create_agent.ts similarity index 100% rename from x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/agentless/mki_create_agent.ts rename to x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/agentless/mki_create_agent.ts diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/index.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/index.ts similarity index 100% rename from x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_serverless_quality_gates/index.ts rename to x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/index.ts From 6672ade5b61b26644f81643550b245d4ef879b5d Mon Sep 17 00:00:00 2001 From: Sean Rathier Date: Wed, 27 Nov 2024 11:36:28 -0500 Subject: [PATCH 05/12] adding the AWS creds --- .../mki_only/agentless/mki_create_agent.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/agentless/mki_create_agent.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/agentless/mki_create_agent.ts index d8a3913175fe5..06500d9e563d3 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/agentless/mki_create_agent.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/agentless/mki_create_agent.ts @@ -48,6 +48,18 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await pageObjects.header.waitUntilLoadingHasFinished(); + if (process.env.CSPM_AWS_ACCOUNT_ID && process.env.CSPM_AWS_SECRET_KEY) { + await cisIntegration.fillInTextField( + cisIntegration.testSubjectIds.DIRECT_ACCESS_KEY_ID_TEST_ID, + process.env.CSPM_AWS_ACCOUNT_ID + ); + + await cisIntegration.fillInTextField( + cisIntegration.testSubjectIds.DIRECT_ACCESS_SECRET_KEY_TEST_ID, + process.env.CSPM_AWS_SECRET_KEY + ); + } + await cisIntegration.clickSaveButton(); await pageObjects.header.waitUntilLoadingHasFinished(); From 48cbd04b666fcd39ede73fb5806ceee1988660e3 Mon Sep 17 00:00:00 2001 From: Sean Rathier Date: Wed, 27 Nov 2024 12:01:03 -0500 Subject: [PATCH 06/12] removing agentles cloud from security --- .../test_serverless/functional/test_suites/security/index.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/x-pack/test_serverless/functional/test_suites/security/index.ts b/x-pack/test_serverless/functional/test_suites/security/index.ts index 4326a401a044c..282bd47f92998 100644 --- a/x-pack/test_serverless/functional/test_suites/security/index.ts +++ b/x-pack/test_serverless/functional/test_suites/security/index.ts @@ -17,9 +17,5 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./ftr/cases')); loadTestFile(require.resolve('./ftr/advanced_settings')); loadTestFile(require.resolve('./ml')); - if (isCloud) { - // only run tests in the Serverless Quality Gates - loadTestFile(require.resolve('./ftr/cloud_security_posture/mki_serverless_quality_gates')); - } }); } From 04a3e446a0b8baa468fa115da24a16f752b3cf57 Mon Sep 17 00:00:00 2001 From: Sean Rathier Date: Wed, 27 Nov 2024 13:47:05 -0500 Subject: [PATCH 07/12] Fix lint error --- x-pack/test_serverless/functional/test_suites/security/index.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/x-pack/test_serverless/functional/test_suites/security/index.ts b/x-pack/test_serverless/functional/test_suites/security/index.ts index 282bd47f92998..30f35c52295ce 100644 --- a/x-pack/test_serverless/functional/test_suites/security/index.ts +++ b/x-pack/test_serverless/functional/test_suites/security/index.ts @@ -8,8 +8,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { - const isCloud = !!process.env.TEST_CLOUD; - describe('serverless security UI', function () { this.tags(['esGate']); From 32ba0515c3de907fbcf6eaa1a7a789d4bd8ba721 Mon Sep 17 00:00:00 2001 From: Sean Rathier Date: Wed, 27 Nov 2024 15:36:24 -0500 Subject: [PATCH 08/12] More changes --- .buildkite/ftr_security_serverless_configs.yml | 3 +++ .../ftr/cloud_security_posture/mki_only/README.md | 15 +++++++++++++++ .../cloud_security_posture/mki_only/READ_ME.md | 9 --------- 3 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/README.md delete mode 100644 x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/READ_ME.md diff --git a/.buildkite/ftr_security_serverless_configs.yml b/.buildkite/ftr_security_serverless_configs.yml index 6d83ebcb5658f..920ecce349356 100644 --- a/.buildkite/ftr_security_serverless_configs.yml +++ b/.buildkite/ftr_security_serverless_configs.yml @@ -19,6 +19,9 @@ disabled: - x-pack/test_serverless/functional/config.base.ts - x-pack/test_serverless/shared/config.base.ts + # MKI only configs files + - x-pack/test_serverless/functional/test_suites/security/config.mki_only.ts + defaultQueue: 'n2-4-spot' enabled: - x-pack/test_serverless/api_integration/test_suites/security/config.ts diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/README.md b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/README.md new file mode 100644 index 0000000000000..9af4048016c79 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/README.md @@ -0,0 +1,15 @@ +# MKI Serverless Quality Gates + +This folder contains tests that **ONLY** run in the MKI Serverless Quality Gates. These tests are designed to ensure the security and functionality of the system in a serverless environment. + +## Contributing + +Please prefix the tests in this folder with `mki_` so that is clear to the following developer that these tests run only in MKI and Serverless Quality Gates. + +New MKI only test files should be loaded from the root index.ts file of the mki_only directory + +``` +x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/index.ts +``` + +If you would like to contribute to these tests, please follow the contribution guidelines outlined in the main project repository. diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/READ_ME.md b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/READ_ME.md deleted file mode 100644 index 0538d75857c18..0000000000000 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/READ_ME.md +++ /dev/null @@ -1,9 +0,0 @@ -# MKI Serverless Quality Gates - -This folder contains tests that are run in the MKI Serverless Quality Gates. These tests are designed to ensure the security and functionality of the system in a serverless environment. - -## Contributing - -Please prefix the tests in this folder with `mki_` so that is clear to the following developer that these tests run only in MKI and Serverless Quality Gates. - -If you would like to contribute to these tests, please follow the contribution guidelines outlined in the main project repository. From 0c6b4115d22e74f53dd0c722b7ab7f583b4733e2 Mon Sep 17 00:00:00 2001 From: Sean Rathier Date: Wed, 27 Nov 2024 17:28:42 -0500 Subject: [PATCH 09/12] Fixed tests and the mki config --- .../test_suites/security/config.mki_only.ts | 29 ++++++++++++++----- .../test_suites/security/mki_only.ts | 15 ++++++++++ 2 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 x-pack/test_serverless/functional/test_suites/security/mki_only.ts diff --git a/x-pack/test_serverless/functional/test_suites/security/config.mki_only.ts b/x-pack/test_serverless/functional/test_suites/security/config.mki_only.ts index 2c0fce50b8452..010dd271b43f3 100644 --- a/x-pack/test_serverless/functional/test_suites/security/config.mki_only.ts +++ b/x-pack/test_serverless/functional/test_suites/security/config.mki_only.ts @@ -4,12 +4,27 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { KBN_CERT_PATH, KBN_KEY_PATH } from '@kbn/dev-utils'; +import { createTestConfig } from '../../config.base'; -import { FtrProviderContext } from '../../ftr_provider_context'; +export default createTestConfig({ + serverlessProject: 'security', + testFiles: [require.resolve('./mki_only.ts')], + junit: { + reportName: 'Serverless Security MKI Functional Tests', + }, + suiteTags: { exclude: ['skipSvlSec'] }, -export default function ({ loadTestFile }: FtrProviderContext) { - describe('serverless security UI', function () { - this.tags(['security-mki-only']); - loadTestFile(require.resolve('./ftr/cloud_security_posture/mki_only')); - }); -} + // include settings from project controller + // https://github.com/elastic/project-controller/blob/main/internal/project/security/config/elasticsearch.yml + esServerArgs: ['xpack.ml.nlp.enabled=true'], + kbnServerArgs: [ + '--xpack.dataUsage.enabled=true', + '--xpack.dataUsage.enableExperimental=[]', + // dataUsage.autoops* config is set in kibana controller + '--xpack.dataUsage.autoops.enabled=true', + '--xpack.dataUsage.autoops.api.url=http://localhost:9000', + `--xpack.dataUsage.autoops.api.tls.certificate=${KBN_CERT_PATH}`, + `--xpack.dataUsage.autoops.api.tls.key=${KBN_KEY_PATH}`, + ], +}); diff --git a/x-pack/test_serverless/functional/test_suites/security/mki_only.ts b/x-pack/test_serverless/functional/test_suites/security/mki_only.ts new file mode 100644 index 0000000000000..baff65fb737f6 --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/security/mki_only.ts @@ -0,0 +1,15 @@ +/* + * 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 { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('serverless security UI MKI only', function () { + this.tags(['security-mki-only ']); + loadTestFile(require.resolve('./ftr/cloud_security_posture/mki_only')); + }); +} From d96cf7547416fb16e1f04e7302f13ccb0a6bf013 Mon Sep 17 00:00:00 2001 From: Sean Rathier Date: Fri, 29 Nov 2024 09:35:31 -0500 Subject: [PATCH 10/12] change suite name of agentless MKI test --- .../mki_only/agentless/mki_create_agent.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/agentless/mki_create_agent.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/agentless/mki_create_agent.ts index 06500d9e563d3..4b357eb8c0f4b 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/agentless/mki_create_agent.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/mki_only/agentless/mki_create_agent.ts @@ -23,7 +23,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const AWS_SINGLE_ACCOUNT_TEST_ID = 'awsSingleTestId'; // This test suite is only running in the Serverless Quality Gates environment - describe('Agentless API Serverless', function () { + describe('Agentless API Serverless MKI only', function () { this.tags(['cloud_security_posture_agentless']); let cisIntegration: typeof pageObjects.cisAddIntegration; From de9e7ab1330802dccb9880958cdbbabe0c1dd592 Mon Sep 17 00:00:00 2001 From: Sean Rathier Date: Fri, 29 Nov 2024 11:57:56 -0500 Subject: [PATCH 11/12] renamed index.mki_only.ts --- .../functional/test_suites/security/config.mki_only.ts | 2 +- .../test_suites/security/{mki_only.ts => index.mki_only.ts} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename x-pack/test_serverless/functional/test_suites/security/{mki_only.ts => index.mki_only.ts} (100%) diff --git a/x-pack/test_serverless/functional/test_suites/security/config.mki_only.ts b/x-pack/test_serverless/functional/test_suites/security/config.mki_only.ts index 010dd271b43f3..36d3bd6c7dd93 100644 --- a/x-pack/test_serverless/functional/test_suites/security/config.mki_only.ts +++ b/x-pack/test_serverless/functional/test_suites/security/config.mki_only.ts @@ -9,7 +9,7 @@ import { createTestConfig } from '../../config.base'; export default createTestConfig({ serverlessProject: 'security', - testFiles: [require.resolve('./mki_only.ts')], + testFiles: [require.resolve('./index.mki_only.ts')], junit: { reportName: 'Serverless Security MKI Functional Tests', }, diff --git a/x-pack/test_serverless/functional/test_suites/security/mki_only.ts b/x-pack/test_serverless/functional/test_suites/security/index.mki_only.ts similarity index 100% rename from x-pack/test_serverless/functional/test_suites/security/mki_only.ts rename to x-pack/test_serverless/functional/test_suites/security/index.mki_only.ts From 6880dae8a10bcd30918277739f0aa600618f0595 Mon Sep 17 00:00:00 2001 From: Sean Rathier Date: Mon, 2 Dec 2024 11:43:20 -0500 Subject: [PATCH 12/12] adding code owners --- .github/CODEOWNERS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8662c30e29f89..717c559fb37b8 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2102,7 +2102,9 @@ x-pack/test/api_integration/apis/management/index_management/inference_endpoints /x-pack/test/api_integration/services/security_solution_*.gen.ts @elastic/security-solution /x-pack/test/accessibility/apps/group3/security_solution.ts @elastic/security-solution /x-pack/test_serverless/functional/test_suites/security/config.ts @elastic/security-solution @elastic/appex-qa -/x-pack/test_serverless/functional/test_suites/security/config.feature_flags.ts @elastic/security-solution +x-pack/test_serverless/functional/test_suites/security/config.mki_only.ts @elastic/security-solution @elastic/appex-qa +x-pack/test_serverless/functional/test_suites/security/index.mki_only.ts @elastic/security-solution @elastic/appex-qa @elastic/kibana-cloud-security-posture +/x-pack/test_serverless/functional/test_suites/security/config.feature_flags.ts @elastic/security-solution @elastic/kibana-cloud-security-posture /x-pack/test_serverless/api_integration/test_suites/observability/config.feature_flags.ts @elastic/security-solution /x-pack/test_serverless/functional/test_suites/common/spaces/multiple_spaces_enabled.ts @elastic/security-solution /x-pack/test/functional/es_archives/endpoint/ @elastic/security-solution