From 83848a1ab18204e8612449b574e4594cc47636a4 Mon Sep 17 00:00:00 2001 From: ofiriro3 Date: Tue, 10 Jan 2023 13:28:20 +0200 Subject: [PATCH 1/4] Fixing CSP integration crash by catching the error --- .../server/lib/fleet_util.ts | 21 +++++++++++++------ .../server/routes/benchmarks/benchmarks.ts | 3 ++- .../server/routes/status/status.ts | 11 ++++++---- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts b/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts index ada8548240ae97..dcd4d84a5e648b 100644 --- a/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts +++ b/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts @@ -5,7 +5,7 @@ * 2.0. */ import { map, uniq } from 'lodash'; -import type { SavedObjectsClientContract } from '@kbn/core/server'; +import type { SavedObjectsClientContract, Logger } from '@kbn/core/server'; import type { AgentPolicyServiceInterface, AgentService, @@ -43,17 +43,26 @@ export type AgentStatusByAgentPolicyMap = Record => { if (!agentPolicies?.length) return {}; const internalAgentService = agentService.asInternalUser; const result: AgentStatusByAgentPolicyMap = {}; - for (const agentPolicy of agentPolicies) { - result[agentPolicy.id] = await internalAgentService.getAgentStatusForAgentPolicy( - agentPolicy.id - ); + try { + for (const agentPolicy of agentPolicies) { + result[agentPolicy.id] = await internalAgentService.getAgentStatusForAgentPolicy( + agentPolicy.id + ); + } + } catch (error) { + if (error.statusCode === 404) { + logger.debug('Index .fleet-agents does not exist yet, skipping point in time.'); + } else { + throw error; + } } return result; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.ts index eafacfac12f4e5..cd019c189c76f7 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.ts @@ -115,7 +115,8 @@ export const defineGetBenchmarksRoute = (router: CspRouter): void => const agentStatusesByAgentPolicyId = await getAgentStatusesByAgentPolicies( cspContext.agentService, - agentPolicies + agentPolicies, + cspContext.logger ); const benchmarks = await createBenchmarks( diff --git a/x-pack/plugins/cloud_security_posture/server/routes/status/status.ts b/x-pack/plugins/cloud_security_posture/server/routes/status/status.ts index 33627389511a15..eead1dc267e60e 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/status/status.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/status/status.ts @@ -6,7 +6,7 @@ */ import { transformError } from '@kbn/securitysolution-es-utils'; -import type { SavedObjectsClientContract } from '@kbn/core/server'; +import type { SavedObjectsClientContract, Logger } from '@kbn/core/server'; import type { AgentPolicyServiceInterface, AgentService } from '@kbn/fleet-plugin/server'; import moment from 'moment'; import { PackagePolicy } from '@kbn/fleet-plugin/common'; @@ -37,7 +37,8 @@ const getHealthyAgents = async ( soClient: SavedObjectsClientContract, installedCspPackagePolicies: PackagePolicy[], agentPolicyService: AgentPolicyServiceInterface, - agentService: AgentService + agentService: AgentService, + logger: Logger ): Promise => { // Get agent policies of package policies (from installed package policies) const agentPolicies = await getCspAgentPolicies( @@ -49,7 +50,8 @@ const getHealthyAgents = async ( // Get agents statuses of the following agent policies const agentStatusesByAgentPolicyId = await getAgentStatusesByAgentPolicies( agentService, - agentPolicies + agentPolicies, + logger ); return Object.values(agentStatusesByAgentPolicyId).reduce( @@ -123,7 +125,8 @@ const getCspStatus = async ({ soClient, installedPackagePolicies.items, agentPolicyService, - agentService + agentService, + logger ); const installedPackagePoliciesTotal = installedPackagePolicies.total; From 2791c46192578617d5722275ef08bcd409f20bb7 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 10 Jan 2023 11:38:09 +0000 Subject: [PATCH 2/4] [CI] Auto-commit changed files from 'node scripts/lint_ts_projects --fix' --- .../security_solution/public/management/cypress/tsconfig.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/management/cypress/tsconfig.json b/x-pack/plugins/security_solution/public/management/cypress/tsconfig.json index af09fee04643f8..a99e4af76fe2ed 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/tsconfig.json +++ b/x-pack/plugins/security_solution/public/management/cypress/tsconfig.json @@ -22,6 +22,8 @@ "path": "../../../tsconfig.json", "force": true }, - "@kbn/security-plugin" + "@kbn/security-plugin", + "@kbn/securitysolution-list-constants", + "@kbn/fleet-plugin" ] } From dd3c6bd94212ba7cc32f6ae8359334676b5a1bd1 Mon Sep 17 00:00:00 2001 From: ofiriro3 Date: Tue, 10 Jan 2023 16:41:46 +0200 Subject: [PATCH 3/4] Fixing error and enabling functional test --- .../plugins/cloud_security_posture/server/lib/fleet_util.ts | 6 ++++-- .../cloud_security_posture_functional/pages/findings.ts | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts b/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts index dcd4d84a5e648b..ef62e54099ff39 100644 --- a/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts +++ b/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts @@ -5,6 +5,7 @@ * 2.0. */ import { map, uniq } from 'lodash'; +import * as t from 'io-ts'; import type { SavedObjectsClientContract, Logger } from '@kbn/core/server'; import type { AgentPolicyServiceInterface, @@ -58,8 +59,9 @@ export const getAgentStatusesByAgentPolicies = async ( ); } } catch (error) { - if (error.statusCode === 404) { - logger.debug('Index .fleet-agents does not exist yet, skipping point in time.'); + const httpError = t.type({ statusCode: t.number }); + if (httpError.is(error) && error.statusCode === 404) { + logger.debug('failed to get agent status for agent policy'); } else { throw error; } diff --git a/x-pack/test/cloud_security_posture_functional/pages/findings.ts b/x-pack/test/cloud_security_posture_functional/pages/findings.ts index f02c3111f8aac5..f9b363a695578d 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/findings.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/findings.ts @@ -32,7 +32,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const ruleName2 = data[1].rule.name; // Failing: See https://github.com/elastic/kibana/issues/147998 - describe.skip('Findings Page', () => { + describe('Findings Page', () => { let findings: typeof pageObjects.findings; let table: typeof pageObjects.findings.table; let distributionBar: typeof pageObjects.findings.distributionBar; From 6ec781cffdeaa0fcf9bac4d87b9f8712a93b5b63 Mon Sep 17 00:00:00 2001 From: ofiriro3 Date: Tue, 10 Jan 2023 17:58:36 +0200 Subject: [PATCH 4/4] Fixing review comments --- .../plugins/cloud_security_posture/server/lib/fleet_util.ts | 4 ++-- .../test/cloud_security_posture_functional/pages/findings.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts b/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts index ef62e54099ff39..8123fb34ee1766 100644 --- a/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts +++ b/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts @@ -27,6 +27,7 @@ import { } from '../../common/schemas/benchmark'; export const PACKAGE_POLICY_SAVED_OBJECT_TYPE = 'ingest-package-policies'; +const fleetError = t.type({ statusCode: t.number }); const isPolicyTemplate = (input: any): input is PosturePolicyTemplate => SUPPORTED_POLICY_TEMPLATES.includes(input); @@ -59,8 +60,7 @@ export const getAgentStatusesByAgentPolicies = async ( ); } } catch (error) { - const httpError = t.type({ statusCode: t.number }); - if (httpError.is(error) && error.statusCode === 404) { + if (fleetError.is(error) && error.statusCode === 404) { logger.debug('failed to get agent status for agent policy'); } else { throw error; diff --git a/x-pack/test/cloud_security_posture_functional/pages/findings.ts b/x-pack/test/cloud_security_posture_functional/pages/findings.ts index f9b363a695578d..f02c3111f8aac5 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/findings.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/findings.ts @@ -32,7 +32,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const ruleName2 = data[1].rule.name; // Failing: See https://github.com/elastic/kibana/issues/147998 - describe('Findings Page', () => { + describe.skip('Findings Page', () => { let findings: typeof pageObjects.findings; let table: typeof pageObjects.findings.table; let distributionBar: typeof pageObjects.findings.distributionBar;