From 6517be3fcd3a77f41a8f51d2595ff908ca0e6194 Mon Sep 17 00:00:00 2001 From: animehart Date: Tue, 23 Jul 2024 21:06:51 -0700 Subject: [PATCH 01/33] kick off misconfiguration flyout --- .../entity_details/host_right/content.tsx | 12 +- .../components/insight_entity/index.tsx | 156 ++++++++++++++++++ .../misconfigurations_overview.tsx | 98 +++++++++++ 3 files changed, 265 insertions(+), 1 deletion(-) create mode 100644 x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.tsx create mode 100644 x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx index af3eae38fc1f8c..4da999293a7a07 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx @@ -17,6 +17,7 @@ import { HOST_PANEL_OBSERVED_HOST_QUERY_ID, HOST_PANEL_RISK_SCORE_QUERY_ID } fro import type { ObservedEntityData } from '../shared/components/observed_entity/types'; import { useObservedHostFields } from './hooks/use_observed_host_fields'; import type { EntityDetailsLeftPanelTab } from '../shared/components/left_panel/left_panel_header'; +import { InsightEntity } from '../shared/components/insight_entity'; interface HostPanelContentProps { observedHost: ObservedEntityData; @@ -44,7 +45,6 @@ export const HostPanelContent = ({ isPreviewMode, }: HostPanelContentProps) => { const observedFields = useObservedHostFields(observedHost); - return ( {riskScoreState.isModuleEnabled && riskScoreState.data?.length !== 0 && ( @@ -71,6 +71,16 @@ export const HostPanelContent = ({ observedFields={observedFields} queryId={HOST_PANEL_OBSERVED_HOST_QUERY_ID} /> + + // TODO: ADD INSIGHT ENTITY HERE (CSP) ); }; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.tsx new file mode 100644 index 00000000000000..820f1264c41503 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.tsx @@ -0,0 +1,156 @@ +/* + * 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 { EuiAccordion, EuiSpacer, EuiTitle, useEuiFontSize, useEuiTheme } from '@elastic/eui'; + +import React from 'react'; +import { css } from '@emotion/react'; +import { FormattedMessage } from '@kbn/i18n-react'; +// import { EntityTable } from '../entity_table'; +// import { FormattedRelativePreferenceDate } from '../../../../../common/components/formatted_date'; +import { InspectButtonContainer } from '../../../../../common/components/inspect'; +import { MisconfigurationsOverview } from './misconfigurations_overview'; +// import type { EntityTableRows } from '../entity_table/types'; +// import { ONE_WEEK_IN_HOURS } from '../../constants'; +// import { hostname } from 'os'; + +/// TEST + +export const InsightEntity = ({ + // observedData, + hostName, + contextID, + scopeId, + isDraggable, + // observedFields, + queryId, +}: { + // observedData: ObservedEntityData; + hostName: string; + contextID: string; + scopeId: string; + isDraggable: boolean; + // observedFields: EntityTableRows>; + queryId: string; +}) => { + const { euiTheme } = useEuiTheme(); + const xsFontSize = useEuiFontSize('xxs').fontSize; + + // const queryHostName = { + // bool: { + // must: [], + // filter: [ + // { + // bool: { + // should: [{ term: { 'host.name': { value: `VM` } } }], + // minimum_should_match: 1, + // }, + // }, + // ], + // should: [], + // must_not: [], + // }, + // }; + // const { data } = useLatestFindings({ + // query: queryHostName, + // sort: [], + // enabled: undefined, + // pageSize: 1, + // }); + + return ( + <> + + +

+ +

+ + } + // extraAction={ + // <> + // + // + // } + // /> + // + // {observedData.lastSeen.date && ( + // + // + // ), + // }} + // /> + // + // )} + // + // } + css={css` + .euiAccordion__optionalAction { + margin-left: auto; + } + `} + > + + {/* */} + + + {/* */} +
+
+ + ); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx new file mode 100644 index 00000000000000..0550130531038c --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx @@ -0,0 +1,98 @@ +/* + * 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 React from 'react'; +import { css } from '@emotion/react'; +import { EuiFlexGroup, EuiFlexItem, EuiText, useEuiTheme } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { ExpandablePanel } from '../../../../shared/components/expandable_panel'; + +export const MisconfigurationsOverview = ({ + passedFindings, + failedFindings, +}: { + passedFindings: number; + failedFindings: number; +}) => { + const { euiTheme } = useEuiTheme(); + return ( + + ), + iconType: 'arrowStart', + }} + // content={{ loading, error }} + data-test-subj={'securitySolutionFlyoutInsightsMisconfigurations'} + > + + {/* */} + {passedFindings === 0 && failedFindings === 0 ? ( + + + + {'-'} + + + + + + + + + ) : ( + + + + {`${Math.round((passedFindings / (passedFindings + failedFindings)) * 100)}%`} + + + + + + + + + )} + + + {'BAR COMPONENT HERE PLACE HOLDER'} + + + + ); +}; From 457da539f2169f66b9f3a43843cc661800e18100 Mon Sep 17 00:00:00 2001 From: animehart Date: Wed, 24 Jul 2024 13:01:34 -0700 Subject: [PATCH 02/33] more stuff --- .../cloud_security_posture/public/index.ts | 1 + .../entity_details/host_right/content.tsx | 1 + .../components/insight_entity/index.tsx | 131 ++++------------- .../misconfigurations_overview.tsx | 133 ++++++++++-------- 4 files changed, 108 insertions(+), 158 deletions(-) diff --git a/x-pack/plugins/cloud_security_posture/public/index.ts b/x-pack/plugins/cloud_security_posture/public/index.ts index 64301add72ca33..519de009a4d46c 100755 --- a/x-pack/plugins/cloud_security_posture/public/index.ts +++ b/x-pack/plugins/cloud_security_posture/public/index.ts @@ -10,6 +10,7 @@ export type { CspSecuritySolutionContext } from './types'; export { CLOUD_SECURITY_POSTURE_BASE_PATH } from './common/navigation/constants'; export type { CloudSecurityPosturePageId } from './common/navigation/types'; export { getSecuritySolutionLink } from './common/navigation/security_solution_links'; +export { useLatestFindings } from './pages/configurations/latest_findings/use_latest_findings'; export type { CspClientPluginSetup, CspClientPluginStart } from './types'; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx index 4da999293a7a07..cfe0d85c3e7ab9 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx @@ -71,6 +71,7 @@ export const HostPanelContent = ({ observedFields={observedFields} queryId={HOST_PANEL_OBSERVED_HOST_QUERY_ID} /> + ({ - // observedData, - hostName, - contextID, - scopeId, - isDraggable, - // observedFields, - queryId, -}: { - // observedData: ObservedEntityData; - hostName: string; - contextID: string; - scopeId: string; - isDraggable: boolean; - // observedFields: EntityTableRows>; - queryId: string; -}) => { +export const InsightEntity = ({ hostName }: { hostName: string }) => { const { euiTheme } = useEuiTheme(); - const xsFontSize = useEuiFontSize('xxs').fontSize; - // const queryHostName = { - // bool: { - // must: [], - // filter: [ - // { - // bool: { - // should: [{ term: { 'host.name': { value: `VM` } } }], - // minimum_should_match: 1, - // }, - // }, - // ], - // should: [], - // must_not: [], - // }, - // }; - // const { data } = useLatestFindings({ - // query: queryHostName, - // sort: [], - // enabled: undefined, - // pageSize: 1, - // }); + const queryHostName = { + bool: { + must: [], + filter: [ + { + bool: { + should: [{ term: { 'host.name': { value: `${hostName}` } } }], + minimum_should_match: 1, + }, + }, + ], + should: [], + must_not: [], + }, + }; + const { data } = useLatestFindings({ + query: queryHostName, + sort: [], + enabled: true, + pageSize: 1, + }); + + const passed = data?.pages[0].count.passed || 0; + const failed = data?.pages[0].count.failed || 0; return ( <> ({ } - // extraAction={ - // <> - // - // - // } - // /> - // - // {observedData.lastSeen.date && ( - // - // - // ), - // }} - // /> - // - // )} - // - // } css={css` .euiAccordion__optionalAction { margin-left: auto; @@ -133,22 +72,8 @@ export const InsightEntity = ({ `} > - {/* */} - + - {/* */} diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx index 0550130531038c..20a25c85a13c8b 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx @@ -9,6 +9,7 @@ import React from 'react'; import { css } from '@emotion/react'; import { EuiFlexGroup, EuiFlexItem, EuiText, useEuiTheme } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; +import { DistributionBar } from '@kbn/security-solution-distribution-bar'; import { ExpandablePanel } from '../../../../shared/components/expandable_panel'; export const MisconfigurationsOverview = ({ @@ -19,6 +20,22 @@ export const MisconfigurationsOverview = ({ failedFindings: number; }) => { const { euiTheme } = useEuiTheme(); + const getFindingsStats = (passedFindingsStats: number, failedFindingsStats: number) => { + if (passedFindingsStats === 0 && failedFindingsStats === 0) return []; + return [ + { + key: 'passed', + count: passedFindingsStats, + color: 'green', + }, + { + key: 'failed', + count: failedFindingsStats, + color: 'red', + }, + ]; + }; + return ( - - {/* */} + {passedFindings === 0 && failedFindings === 0 ? ( - - - - {'-'} - - - - - - - - + + + + + {'-'} + + + + + + + + + ) : ( + + + + + {`${Math.round((passedFindings / (passedFindings + failedFindings)) * 100)}%`} + + + + + + + + + + )} + - - - {`${Math.round((passedFindings / (passedFindings + failedFindings)) * 100)}%`} - - - - - - + + + - )} - - - {'BAR COMPONENT HERE PLACE HOLDER'} - + ); From 71833287c6531ef63e4e29df34307347a6dbb834 Mon Sep 17 00:00:00 2001 From: animehart Date: Wed, 24 Jul 2024 17:07:20 -0700 Subject: [PATCH 03/33] update --- .../right/components/insights_section.tsx | 6 +- .../components/insight_entity/index.tsx | 87 +++++++------------ .../misconfigurations_overview.tsx | 60 +++++++++---- 3 files changed, 78 insertions(+), 75 deletions(-) diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx index 19c75a77cbabfd..34b6e95d39354b 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx @@ -23,6 +23,7 @@ import { AlertsCasesTourSteps, SecurityStepId, } from '../../../../common/components/guided_onboarding_tour/tour_config'; +import { MisconfigurationsOverview } from '../../../entity_details/shared/components/insight_entity/misconfigurations_overview'; const KEY = 'insights'; @@ -32,14 +33,13 @@ const KEY = 'insights'; export const InsightsSection = memo(() => { const { getFieldsData } = useDocumentDetailsContext(); const eventKind = getField(getFieldsData('event.kind')); - const { activeStep, isTourShown } = useTourContext(); const isGuidedOnboardingTourShown = isTourShown(SecurityStepId.alertsCases) && activeStep === AlertsCasesTourSteps.viewCase; const expanded = useExpandSection({ title: KEY, defaultValue: false }) || isGuidedOnboardingTourShown; - + const hostName = getFieldsData('host.name')?.[0] || ''; return ( { + + ); }); diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.tsx index 77a5bc88bb6ab4..510d6163e1f151 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.tsx @@ -10,72 +10,43 @@ import { EuiAccordion, EuiSpacer, EuiTitle, useEuiTheme } from '@elastic/eui'; import React from 'react'; import { css } from '@emotion/react'; import { FormattedMessage } from '@kbn/i18n-react'; -import { useLatestFindings } from '@kbn/cloud-security-posture-plugin/public'; -import { InspectButtonContainer } from '../../../../../common/components/inspect'; import { MisconfigurationsOverview } from './misconfigurations_overview'; export const InsightEntity = ({ hostName }: { hostName: string }) => { const { euiTheme } = useEuiTheme(); - const queryHostName = { - bool: { - must: [], - filter: [ - { - bool: { - should: [{ term: { 'host.name': { value: `${hostName}` } } }], - minimum_should_match: 1, - }, - }, - ], - should: [], - must_not: [], - }, - }; - const { data } = useLatestFindings({ - query: queryHostName, - sort: [], - enabled: true, - pageSize: 1, - }); - - const passed = data?.pages[0].count.passed || 0; - const failed = data?.pages[0].count.failed || 0; - return ( <> - - -

- -

- + +

+ +

+ + } + css={css` + .euiAccordion__optionalAction { + margin-left: auto; } - css={css` - .euiAccordion__optionalAction { - margin-left: auto; - } - `} - > - - - -
-
+ `} + > + + + + ); }; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx index 20a25c85a13c8b..bfcca0b53dcece 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx @@ -10,15 +10,34 @@ import { css } from '@emotion/react'; import { EuiFlexGroup, EuiFlexItem, EuiText, useEuiTheme } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { DistributionBar } from '@kbn/security-solution-distribution-bar'; +import { useLatestFindings } from '@kbn/cloud-security-posture-plugin/public'; import { ExpandablePanel } from '../../../../shared/components/expandable_panel'; -export const MisconfigurationsOverview = ({ - passedFindings, - failedFindings, -}: { - passedFindings: number; - failedFindings: number; -}) => { +export const MisconfigurationsOverview = ({ hostName }: { hostName: string }) => { + const queryHostName = { + bool: { + must: [], + filter: [ + { + bool: { + should: [{ term: { 'host.name': { value: `${hostName}` } } }], + minimum_should_match: 1, + }, + }, + ], + should: [], + must_not: [], + }, + }; + const { data } = useLatestFindings({ + query: queryHostName, + sort: [], + enabled: true, + pageSize: 1, + }); + + const passedFindings = data?.pages[0].count.passed || 0; + const failedFindings = data?.pages[0].count.failed || 0; const { euiTheme } = useEuiTheme(); const getFindingsStats = (passedFindingsStats: number, failedFindingsStats: number) => { if (passedFindingsStats === 0 && failedFindingsStats === 0) return []; @@ -40,10 +59,17 @@ export const MisconfigurationsOverview = ({ + + + ), iconType: 'arrowStart', }} @@ -66,7 +92,7 @@ export const MisconfigurationsOverview = ({ @@ -94,7 +120,7 @@ export const MisconfigurationsOverview = ({ @@ -107,10 +133,14 @@ export const MisconfigurationsOverview = ({ )} - + - + From bc336b47bfb902cfaa22888b2704bfda551e02ac Mon Sep 17 00:00:00 2001 From: animehart Date: Thu, 25 Jul 2024 15:52:29 -0700 Subject: [PATCH 04/33] update --- .../right/components/insights_section.tsx | 5 +-- .../entity_details/host_right/content.tsx | 1 - .../components/insight_entity/index.test.tsx | 26 ++++++++++++++ .../components/insight_entity/index.tsx | 2 +- .../misconfigurations_overview.test.tsx | 34 +++++++++++++++++++ .../misconfigurations_overview.tsx | 1 + 6 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.test.tsx create mode 100644 x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx index 34b6e95d39354b..1ac2ab44a649f6 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx @@ -23,7 +23,6 @@ import { AlertsCasesTourSteps, SecurityStepId, } from '../../../../common/components/guided_onboarding_tour/tour_config'; -import { MisconfigurationsOverview } from '../../../entity_details/shared/components/insight_entity/misconfigurations_overview'; const KEY = 'insights'; @@ -39,7 +38,7 @@ export const InsightsSection = memo(() => { const expanded = useExpandSection({ title: KEY, defaultValue: false }) || isGuidedOnboardingTourShown; - const hostName = getFieldsData('host.name')?.[0] || ''; + return ( { - - ); }); diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx index cfe0d85c3e7ab9..56c090de81dd0b 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx @@ -82,6 +82,5 @@ export const HostPanelContent = ({ queryId={HOST_PANEL_OBSERVED_HOST_QUERY_ID} /> - // TODO: ADD INSIGHT ENTITY HERE (CSP) ); }; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.test.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.test.tsx new file mode 100644 index 00000000000000..7fd73b6b618cfb --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.test.tsx @@ -0,0 +1,26 @@ +/* + * 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. + */ + +// Add stuff here +import { render } from '@testing-library/react'; +import React from 'react'; +import { TestProviders } from '../../../../../common/mock'; +import { InsightEntity } from '.'; + +const mockProps = { + hostName: 'testContextID', +}; + +describe('InsightEntity', () => { + it('renders', () => { + const { queryByTestId } = render(, { + wrapper: TestProviders, + }); + + expect(queryByTestId('insightEntityTestSubj')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.tsx index 510d6163e1f151..660be72a2edfbd 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/index.tsx @@ -20,7 +20,7 @@ export const InsightEntity = ({ hostName }: { hostName: string }) => { { + it('renders', () => { + const { queryByTestId } = render(, { + wrapper: TestProviders, + }); + expect( + queryByTestId('securitySolutionFlyoutInsightsMisconfigurationsTitleIcon') + ).toBeInTheDocument(); + expect( + queryByTestId('securitySolutionFlyoutInsightsMisconfigurationsTitleText') + ).toBeInTheDocument(); + expect( + queryByTestId('securitySolutionFlyoutInsightsMisconfigurationsContent') + ).toBeInTheDocument(); + expect(queryByTestId('noFindingsDataTestSubj')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx index bfcca0b53dcece..4bbeed40aa29b2 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx @@ -95,6 +95,7 @@ export const MisconfigurationsOverview = ({ hostName }: { hostName: string }) => font-size: ${euiTheme.size.base}; font-weight: ${euiTheme.font.weight.semiBold}; `} + data-test-subj="noFindingsDataTestSubj" > Date: Wed, 31 Jul 2024 07:13:53 -0700 Subject: [PATCH 05/33] update colors --- .../insight_entity/misconfigurations_overview.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx index 4bbeed40aa29b2..cdbb5469e74dd9 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx @@ -11,6 +11,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiText, useEuiTheme } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { DistributionBar } from '@kbn/security-solution-distribution-bar'; import { useLatestFindings } from '@kbn/cloud-security-posture-plugin/public'; +import { euiThemeVars } from '@kbn/ui-theme'; import { ExpandablePanel } from '../../../../shared/components/expandable_panel'; export const MisconfigurationsOverview = ({ hostName }: { hostName: string }) => { @@ -43,14 +44,14 @@ export const MisconfigurationsOverview = ({ hostName }: { hostName: string }) => if (passedFindingsStats === 0 && failedFindingsStats === 0) return []; return [ { - key: 'passed', + key: 'Passed findings', count: passedFindingsStats, - color: 'green', + color: euiThemeVars.euiColorSuccess, }, { - key: 'failed', + key: 'Failed findings', count: failedFindingsStats, - color: 'red', + color: euiThemeVars.euiColorVis9, }, ]; }; From 875015e4ffec319a44fb92369abc191d1fee74e3 Mon Sep 17 00:00:00 2001 From: animehart Date: Wed, 31 Jul 2024 15:28:00 -0700 Subject: [PATCH 06/33] added cypress and clean up --- .../right/components/insights_section.tsx | 1 + .../entity_details/host_right/content.tsx | 10 +---- .../misconfigurations_overview.tsx | 3 +- .../host_details_insight_accordion.cy.ts | 38 +++++++++++++++++++ .../screens/hosts/flyout_host_panel.ts | 6 +++ 5 files changed, 48 insertions(+), 10 deletions(-) create mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/host_details_insight_accordion.cy.ts diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx index 1ac2ab44a649f6..19c75a77cbabfd 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx @@ -32,6 +32,7 @@ const KEY = 'insights'; export const InsightsSection = memo(() => { const { getFieldsData } = useDocumentDetailsContext(); const eventKind = getField(getFieldsData('event.kind')); + const { activeStep, isTourShown } = useTourContext(); const isGuidedOnboardingTourShown = isTourShown(SecurityStepId.alertsCases) && activeStep === AlertsCasesTourSteps.viewCase; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx index 56c090de81dd0b..3164b63ac79e52 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx @@ -72,15 +72,7 @@ export const HostPanelContent = ({ queryId={HOST_PANEL_OBSERVED_HOST_QUERY_ID} /> - + ); }; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx index cdbb5469e74dd9..262c25def751ed 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx @@ -72,7 +72,8 @@ export const MisconfigurationsOverview = ({ hostName }: { hostName: string }) => /> ), - iconType: 'arrowStart', + // Commented this out until we have the expanded flyout + // iconType: 'arrowStart', }} data-test-subj={'securitySolutionFlyoutInsightsMisconfigurations'} > diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/host_details_insight_accordion.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/host_details_insight_accordion.cy.ts new file mode 100644 index 00000000000000..f00e1f1a48f3d5 --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/host_details_insight_accordion.cy.ts @@ -0,0 +1,38 @@ +/* + * 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 { + HOST_INSIGHT_MISCONFIGURATION, + HOST_INSIGHT_MISCONFIGURATION_TITLE, +} from '../../../../screens/hosts/flyout_host_panel'; +import { expandFirstAlertHostFlyout } from '../../../../tasks/asset_criticality/common'; +import { deleteAlertsAndRules } from '../../../../tasks/api_calls/common'; +import { login } from '../../../../tasks/login'; +import { visit } from '../../../../tasks/navigation'; +import { createRule } from '../../../../tasks/api_calls/rules'; +import { getNewRule } from '../../../../objects/rule'; +import { ALERTS_URL } from '../../../../urls/navigation'; +import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule'; + +describe('Alert Host details expandable flyout', { tags: ['@ess', '@serverless'] }, () => { + beforeEach(() => { + deleteAlertsAndRules(); + login(); + createRule(getNewRule()); + visit(ALERTS_URL); + waitForAlertsToPopulate(); + expandFirstAlertHostFlyout(); + }); + + it('should display Misconfiguration preview under Insights Entities', () => { + cy.log('check if Misconfiguration preview section is rendered'); + cy.get(HOST_INSIGHT_MISCONFIGURATION).should('exist'); + + cy.log('check if Misconfiguration preview title is shown'); + cy.get(HOST_INSIGHT_MISCONFIGURATION_TITLE).should('exist'); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/screens/hosts/flyout_host_panel.ts b/x-pack/test/security_solution_cypress/cypress/screens/hosts/flyout_host_panel.ts index e3173bd17d5831..27adb5ec72dc8c 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/hosts/flyout_host_panel.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/hosts/flyout_host_panel.ts @@ -10,3 +10,9 @@ import { getDataTestSubjectSelector } from '../../helpers/common'; export const HOST_PANEL_HEADER = getDataTestSubjectSelector('host-panel-header'); export const HOST_PREVIEW_PANEL_FOOTER = getDataTestSubjectSelector('host-preview-footer'); export const OPEN_HOST_FLYOUT_LINK = getDataTestSubjectSelector('open-host-flyout'); +export const HOST_INSIGHT_MISCONFIGURATION = getDataTestSubjectSelector( + 'securitySolutionFlyoutInsightsMisconfigurationsLeftSection' +); +export const HOST_INSIGHT_MISCONFIGURATION_TITLE = getDataTestSubjectSelector( + 'securitySolutionFlyoutInsightsMisconfigurationsTitleText' +); From 3187a522014c6b4ede6375863a05e2179e483350 Mon Sep 17 00:00:00 2001 From: animehart Date: Wed, 7 Aug 2024 23:11:10 -0700 Subject: [PATCH 07/33] first push --- package.json | 2 + tsconfig.base.json | 4 + .../README.md | 1 + .../constants.ts | 14 ++ .../index.ts | 10 ++ .../kibana.jsonc | 6 + .../package.json | 10 ++ .../tsconfig.json | 18 ++ .../types.ts | 6 + .../types/latest.ts | 18 ++ .../utils/helpers.ts | 38 ++++ .../utils/show_error_toast.ts | 22 +++ .../kbn-cloud-security-posture/README.md | 1 + .../kbn-cloud-security-posture/index.ts | 9 + .../kbn-cloud-security-posture/kibana.jsonc | 5 + .../kbn-cloud-security-posture/package.json | 10 ++ .../use_get_benchmark_rules_state_api.ts | 25 +++ .../src/hooks/use_kibana.ts | 14 ++ .../src/hooks/use_misconfiguration_preview.ts | 166 ++++++++++++++++++ .../src/schema/csp_finding.ts | 112 ++++++++++++ .../src/utils/utils.ts | 23 +++ .../kbn-cloud-security-posture/tsconfig.json | 23 +++ .../kbn-cloud-security-posture/type.ts | 49 ++++++ .../latest_findings/use_latest_findings.ts | 6 +- .../misconfigurations_overview.tsx | 5 +- yarn.lock | 8 + 26 files changed, 601 insertions(+), 4 deletions(-) create mode 100644 x-pack/packages/kbn-cloud-security-posture-common/README.md create mode 100644 x-pack/packages/kbn-cloud-security-posture-common/constants.ts create mode 100644 x-pack/packages/kbn-cloud-security-posture-common/index.ts create mode 100644 x-pack/packages/kbn-cloud-security-posture-common/kibana.jsonc create mode 100644 x-pack/packages/kbn-cloud-security-posture-common/package.json create mode 100644 x-pack/packages/kbn-cloud-security-posture-common/tsconfig.json create mode 100644 x-pack/packages/kbn-cloud-security-posture-common/types.ts create mode 100644 x-pack/packages/kbn-cloud-security-posture-common/types/latest.ts create mode 100644 x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.ts create mode 100644 x-pack/packages/kbn-cloud-security-posture-common/utils/show_error_toast.ts create mode 100644 x-pack/packages/kbn-cloud-security-posture/README.md create mode 100644 x-pack/packages/kbn-cloud-security-posture/index.ts create mode 100644 x-pack/packages/kbn-cloud-security-posture/kibana.jsonc create mode 100644 x-pack/packages/kbn-cloud-security-posture/package.json create mode 100644 x-pack/packages/kbn-cloud-security-posture/src/hooks/use_get_benchmark_rules_state_api.ts create mode 100644 x-pack/packages/kbn-cloud-security-posture/src/hooks/use_kibana.ts create mode 100644 x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts create mode 100644 x-pack/packages/kbn-cloud-security-posture/src/schema/csp_finding.ts create mode 100644 x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts create mode 100644 x-pack/packages/kbn-cloud-security-posture/tsconfig.json create mode 100644 x-pack/packages/kbn-cloud-security-posture/type.ts diff --git a/package.json b/package.json index 79b44d5663831e..f698e25aec3853 100644 --- a/package.json +++ b/package.json @@ -209,6 +209,8 @@ "@kbn/cloud-integration-saml-provider-plugin": "link:x-pack/test/cloud_integration/plugins/saml_provider", "@kbn/cloud-links-plugin": "link:x-pack/plugins/cloud_integrations/cloud_links", "@kbn/cloud-plugin": "link:x-pack/plugins/cloud", + "@kbn/cloud-security-posture": "link:x-pack/packages/kbn-cloud-security-posture", + "@kbn/cloud-security-posture-common": "link:x-pack/packages/kbn-cloud-security-posture-common", "@kbn/cloud-security-posture-plugin": "link:x-pack/plugins/cloud_security_posture", "@kbn/code-editor": "link:packages/shared-ux/code_editor/impl", "@kbn/code-editor-mock": "link:packages/shared-ux/code_editor/mocks", diff --git a/tsconfig.base.json b/tsconfig.base.json index 60f6ff081014a2..20b15c88be6e0b 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -168,6 +168,10 @@ "@kbn/cloud-links-plugin/*": ["x-pack/plugins/cloud_integrations/cloud_links/*"], "@kbn/cloud-plugin": ["x-pack/plugins/cloud"], "@kbn/cloud-plugin/*": ["x-pack/plugins/cloud/*"], + "@kbn/cloud-security-posture": ["x-pack/packages/kbn-cloud-security-posture"], + "@kbn/cloud-security-posture/*": ["x-pack/packages/kbn-cloud-security-posture/*"], + "@kbn/cloud-security-posture-common": ["x-pack/packages/kbn-cloud-security-posture-common"], + "@kbn/cloud-security-posture-common/*": ["x-pack/packages/kbn-cloud-security-posture-common/*"], "@kbn/cloud-security-posture-plugin": ["x-pack/plugins/cloud_security_posture"], "@kbn/cloud-security-posture-plugin/*": ["x-pack/plugins/cloud_security_posture/*"], "@kbn/code-editor": ["packages/shared-ux/code_editor/impl"], diff --git a/x-pack/packages/kbn-cloud-security-posture-common/README.md b/x-pack/packages/kbn-cloud-security-posture-common/README.md new file mode 100644 index 00000000000000..bafaa51be0d82c --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture-common/README.md @@ -0,0 +1 @@ +FILL THIS IN LATER \ No newline at end of file diff --git a/x-pack/packages/kbn-cloud-security-posture-common/constants.ts b/x-pack/packages/kbn-cloud-security-posture-common/constants.ts new file mode 100644 index 00000000000000..fcb7cd367360cf --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture-common/constants.ts @@ -0,0 +1,14 @@ +/* + * 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. + */ +export const KSPM_POLICY_TEMPLATE = 'kspm'; +export const CSPM_POLICY_TEMPLATE = 'cspm'; +export const CSP_LATEST_FINDINGS_DATA_VIEW = 'logs-cloud_security_posture.findings_latest-*'; +export const LATEST_FINDINGS_RETENTION_POLICY = '26h'; +export const MAX_FINDINGS_TO_LOAD = 500; +export const CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH = + '/internal/cloud_security_posture/rules/_get_states'; +export const CSP_GET_BENCHMARK_RULES_STATE_API_CURRENT_VERSION = '1'; diff --git a/x-pack/packages/kbn-cloud-security-posture-common/index.ts b/x-pack/packages/kbn-cloud-security-posture-common/index.ts new file mode 100644 index 00000000000000..ed1f8f73cd084d --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture-common/index.ts @@ -0,0 +1,10 @@ +/* + * 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. + */ +export * from './constants'; +export type { CspBenchmarkRulesStates } from './types/latest'; +export { showErrorToast } from './utils/show_error_toast'; +export { buildMutedRulesFilter } from './utils/helpers'; diff --git a/x-pack/packages/kbn-cloud-security-posture-common/kibana.jsonc b/x-pack/packages/kbn-cloud-security-posture-common/kibana.jsonc new file mode 100644 index 00000000000000..21721cfb69f448 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture-common/kibana.jsonc @@ -0,0 +1,6 @@ + +{ + "id": "@kbn/cloud-security-posture-common", + "owner": "@elastic/kibana-cloud-security-posture", + "type": "shared-common" + } \ No newline at end of file diff --git a/x-pack/packages/kbn-cloud-security-posture-common/package.json b/x-pack/packages/kbn-cloud-security-posture-common/package.json new file mode 100644 index 00000000000000..14417b1292cd59 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture-common/package.json @@ -0,0 +1,10 @@ +{ + "name": "@kbn/cloud-security-posture-common", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0", + "description": "Shared components for cloud security posture, both client and server side", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + } + } \ No newline at end of file diff --git a/x-pack/packages/kbn-cloud-security-posture-common/tsconfig.json b/x-pack/packages/kbn-cloud-security-posture-common/tsconfig.json new file mode 100644 index 00000000000000..a968a7a05c9d0a --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture-common/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [] + } \ No newline at end of file diff --git a/x-pack/packages/kbn-cloud-security-posture-common/types.ts b/x-pack/packages/kbn-cloud-security-posture-common/types.ts new file mode 100644 index 00000000000000..1fec1c76430ebd --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture-common/types.ts @@ -0,0 +1,6 @@ +/* + * 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. + */ diff --git a/x-pack/packages/kbn-cloud-security-posture-common/types/latest.ts b/x-pack/packages/kbn-cloud-security-posture-common/types/latest.ts new file mode 100644 index 00000000000000..63f93ed47734bb --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture-common/types/latest.ts @@ -0,0 +1,18 @@ +/* + * 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 { schema, TypeOf } from '@kbn/config-schema'; + +export type CspBenchmarkRulesStates = TypeOf; +const ruleStateAttributes = schema.object({ + muted: schema.boolean(), + benchmark_id: schema.string(), + benchmark_version: schema.string(), + rule_number: schema.string(), + rule_id: schema.string(), +}); + +const rulesStates = schema.recordOf(schema.string(), ruleStateAttributes); diff --git a/x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.ts b/x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.ts new file mode 100644 index 00000000000000..e64d281a447754 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.ts @@ -0,0 +1,38 @@ +/* + * 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 { QueryDslQueryContainer } from '@kbn/data-views-plugin/common/types'; +import { CspBenchmarkRulesStates } from '../types/latest'; + +export const extractErrorMessage = (e: unknown, defaultMessage = 'Unknown Error'): string => { + if (e instanceof Error) return e.message; + if (typeof e === 'string') return e; + + return defaultMessage; // TODO: i18n +}; + +export const buildMutedRulesFilter = ( + rulesStates: CspBenchmarkRulesStates +): QueryDslQueryContainer[] => { + const mutedRules = Object.fromEntries( + Object.entries(rulesStates).filter(([key, value]) => value.muted === true) + ); + + const mutedRulesFilterQuery = Object.keys(mutedRules).map((key) => { + const rule = mutedRules[key]; + return { + bool: { + must: [ + { term: { 'rule.benchmark.id': rule.benchmark_id } }, + { term: { 'rule.benchmark.version': rule.benchmark_version } }, + { term: { 'rule.benchmark.rule_number': rule.rule_number } }, + ], + }, + }; + }); + + return mutedRulesFilterQuery; +}; diff --git a/x-pack/packages/kbn-cloud-security-posture-common/utils/show_error_toast.ts b/x-pack/packages/kbn-cloud-security-posture-common/utils/show_error_toast.ts new file mode 100644 index 00000000000000..90a154774c0c86 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture-common/utils/show_error_toast.ts @@ -0,0 +1,22 @@ +/* + * 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 { CoreStart } from '@kbn/core/public'; +import { i18n } from '@kbn/i18n'; +import { extractErrorMessage } from './helpers'; + +const SEARCH_FAILED_TEXT = i18n.translate( + 'xpack.csp.findings.findingsErrorToast.searchFailedTitle', + { defaultMessage: 'Search failed' } +); + +export const showErrorToast = ( + toasts: CoreStart['notifications']['toasts'], + error: unknown +): void => { + if (error instanceof Error) toasts.addError(error, { title: SEARCH_FAILED_TEXT }); + else toasts.addDanger(extractErrorMessage(error, SEARCH_FAILED_TEXT)); +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/README.md b/x-pack/packages/kbn-cloud-security-posture/README.md new file mode 100644 index 00000000000000..bafaa51be0d82c --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/README.md @@ -0,0 +1 @@ +FILL THIS IN LATER \ No newline at end of file diff --git a/x-pack/packages/kbn-cloud-security-posture/index.ts b/x-pack/packages/kbn-cloud-security-posture/index.ts new file mode 100644 index 00000000000000..3a4d03b7cddd06 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/index.ts @@ -0,0 +1,9 @@ +/* + * 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. + */ + +export { useMisconfigurationPreview } from './src/hooks/use_misconfiguration_preview'; +export { getAggregationCount, getFindingsCountAggQuery } from './src/utils/utils'; diff --git a/x-pack/packages/kbn-cloud-security-posture/kibana.jsonc b/x-pack/packages/kbn-cloud-security-posture/kibana.jsonc new file mode 100644 index 00000000000000..4c5a4f1f0165df --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "id": "@kbn/cloud-security-posture", + "owner": "@elastic/kibana-cloud-security-posture", + "type": "shared-browser" +} \ No newline at end of file diff --git a/x-pack/packages/kbn-cloud-security-posture/package.json b/x-pack/packages/kbn-cloud-security-posture/package.json new file mode 100644 index 00000000000000..cdadfe10635751 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/package.json @@ -0,0 +1,10 @@ +{ + "name": "@kbn/cloud-security-posture", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0", + "description": "Shared components for cloud security posture, client side", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + } + } \ No newline at end of file diff --git a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_get_benchmark_rules_state_api.ts b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_get_benchmark_rules_state_api.ts new file mode 100644 index 00000000000000..b7cd35fcb01e09 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_get_benchmark_rules_state_api.ts @@ -0,0 +1,25 @@ +/* + * 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 { useQuery } from '@tanstack/react-query'; +import { + CSP_GET_BENCHMARK_RULES_STATE_API_CURRENT_VERSION, + CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH, + CspBenchmarkRulesStates, +} from '@kbn/cloud-security-posture-common'; +import { useKibana } from './use_kibana'; + +export const getRuleStatesKey = ['get_rules_state_key']; + +export const useGetCspBenchmarkRulesStatesApi = () => { + const { http } = useKibana().services; + return useQuery(getRuleStatesKey, () => + http.get(CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH, { + version: CSP_GET_BENCHMARK_RULES_STATE_API_CURRENT_VERSION, + }) + ); +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_kibana.ts b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_kibana.ts new file mode 100644 index 00000000000000..ed5f3b5c34397a --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_kibana.ts @@ -0,0 +1,14 @@ +/* + * 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 { CoreStart } from '@kbn/core/public'; +import { useKibana as useKibanaBase } from '@kbn/kibana-react-plugin/public'; +import type { CspClientPluginStartDeps } from '../../type'; + +type CspKibanaContext = CoreStart & CspClientPluginStartDeps; + +export const useKibana = () => useKibanaBase(); diff --git a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts new file mode 100644 index 00000000000000..53dfbd972fbbbe --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts @@ -0,0 +1,166 @@ +/* + * 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 { useInfiniteQuery } from '@tanstack/react-query'; +import { number } from 'io-ts'; +import { lastValueFrom } from 'rxjs'; +import type { IKibanaSearchResponse, IKibanaSearchRequest } from '@kbn/search-types'; +import type { Pagination } from '@elastic/eui'; +import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { buildDataTableRecord } from '@kbn/discover-utils'; +import { EsHitRecord } from '@kbn/discover-utils/types'; +import { + CSP_LATEST_FINDINGS_DATA_VIEW, + LATEST_FINDINGS_RETENTION_POLICY, + MAX_FINDINGS_TO_LOAD, + CspBenchmarkRulesStates, +} from '@kbn/cloud-security-posture-common'; +import { showErrorToast, buildMutedRulesFilter } from '@kbn/cloud-security-posture-common'; +import type { FindingsBaseEsQuery } from '../../type'; +import { CspFinding } from '../schema/csp_finding'; +import { getAggregationCount, getFindingsCountAggQuery } from '../utils/utils'; +import { useGetCspBenchmarkRulesStatesApi } from './use_get_benchmark_rules_state_api'; +import { useKibana } from './use_kibana'; + +interface UseFindingsOptions extends FindingsBaseEsQuery { + sort: string[][]; + enabled: boolean; + pageSize: number; +} + +export interface FindingsGroupByNoneQuery { + pageIndex: Pagination['pageIndex']; + sort: any; +} + +type LatestFindingsRequest = IKibanaSearchRequest; +type LatestFindingsResponse = IKibanaSearchResponse< + estypes.SearchResponse +>; + +interface FindingsAggs { + count: estypes.AggregationsMultiBucketAggregateBase; +} + +export const getFindingsQuery = ( + { query, sort }: UseFindingsOptions, + rulesStates: CspBenchmarkRulesStates, + pageParam: any +) => { + const mutedRulesFilterQuery = buildMutedRulesFilter(rulesStates); + + return { + index: CSP_LATEST_FINDINGS_DATA_VIEW, + sort: getMultiFieldsSort(sort), + size: MAX_FINDINGS_TO_LOAD, + aggs: getFindingsCountAggQuery(), + ignore_unavailable: false, + query: { + ...query, + bool: { + ...query?.bool, + filter: [ + ...(query?.bool?.filter ?? []), + { + range: { + '@timestamp': { + gte: `now-${LATEST_FINDINGS_RETENTION_POLICY}`, + lte: 'now', + }, + }, + }, + ], + must_not: [...(query?.bool?.must_not ?? []), ...mutedRulesFilterQuery], + }, + }, + ...(pageParam ? { from: pageParam } : {}), + }; +}; + +const getMultiFieldsSort = (sort: string[][]) => { + return sort.map(([id, direction]) => { + return { + ...getSortField({ field: id, direction }), + }; + }); +}; + +/** + * By default, ES will sort keyword fields in case-sensitive format, the + * following fields are required to have a case-insensitive sorting. + */ +const fieldsRequiredSortingByPainlessScript = [ + 'rule.section', + 'resource.name', + 'resource.sub_type', +]; + +/** + * Generates Painless sorting if the given field is matched or returns default sorting + * This painless script will sort the field in case-insensitive manner + */ +const getSortField = ({ field, direction }: { field: string; direction: string }) => { + if (fieldsRequiredSortingByPainlessScript.includes(field)) { + return { + _script: { + type: 'string', + order: direction, + script: { + source: `doc["${field}"].value.toLowerCase()`, + lang: 'painless', + }, + }, + }; + } + return { [field]: direction }; +}; + +export const useMisconfigurationPreview = (options: UseFindingsOptions) => { + const { + data, + notifications: { toasts }, + } = useKibana().services; + const { data: rulesStates } = useGetCspBenchmarkRulesStatesApi(); + + /** + * We're using useInfiniteQuery in this case to allow the user to fetch more data (if available and up to 10k) + * useInfiniteQuery differs from useQuery because it accumulates and caches a chunk of data from the previous fetches into an array + * it uses the getNextPageParam to know if there are more pages to load and retrieve the position of + * the last loaded record to be used as a from parameter to fetch the next chunk of data. + */ + return useInfiniteQuery( + ['csp_findings', { params: options }, rulesStates], + async ({ pageParam }) => { + const { + rawResponse: { hits, aggregations }, + } = await lastValueFrom( + data.search.search({ + params: getFindingsQuery(options, rulesStates!, pageParam), // ruleStates always exists since it under the `enabled` dependency. + }) + ); + if (!aggregations) throw new Error('expected aggregations to be an defined'); + if (!Array.isArray(aggregations.count.buckets)) + throw new Error('expected buckets to be an array'); + + return { + page: hits.hits.map((hit) => buildDataTableRecord(hit as EsHitRecord)), + total: number.is(hits.total) ? hits.total : 0, + count: getAggregationCount(aggregations.count.buckets), + }; + }, + { + enabled: options.enabled && !!rulesStates, + keepPreviousData: true, + onError: (err: Error) => showErrorToast(toasts, err), + getNextPageParam: (lastPage, allPages) => { + if (lastPage.page.length < options.pageSize) { + return undefined; + } + return allPages.length * options.pageSize; + }, + } + ); +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/src/schema/csp_finding.ts b/x-pack/packages/kbn-cloud-security-posture/src/schema/csp_finding.ts new file mode 100644 index 00000000000000..ea2d2d2b4df39b --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/src/schema/csp_finding.ts @@ -0,0 +1,112 @@ +/* + * 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 { EcsEvent } from '@elastic/ecs'; +import { TypeOf, schema } from '@kbn/config-schema'; +import { CSPM_POLICY_TEMPLATE, KSPM_POLICY_TEMPLATE } from '@kbn/cloud-security-posture-common'; + +export type CspBenchmarkRuleMetadata = TypeOf; + +export const cspBenchmarkRuleMetadataSchema = schema.object({ + audit: schema.string(), + benchmark: schema.object({ + name: schema.string(), + posture_type: schema.maybe( + schema.oneOf([schema.literal(CSPM_POLICY_TEMPLATE), schema.literal(KSPM_POLICY_TEMPLATE)]) + ), + id: schema.string(), + version: schema.string(), + rule_number: schema.maybe(schema.string()), + }), + default_value: schema.maybe(schema.string()), + description: schema.string(), + id: schema.string(), + impact: schema.maybe(schema.string()), + name: schema.string(), + profile_applicability: schema.string(), + rationale: schema.string(), + references: schema.maybe(schema.string()), + rego_rule_id: schema.string(), + remediation: schema.string(), + section: schema.string(), + tags: schema.arrayOf(schema.string()), + version: schema.string(), +}); + +export interface CspFinding { + '@timestamp': string; + cluster_id?: string; + orchestrator?: CspFindingOrchestrator; + cloud?: CspFindingCloud; // only available on CSPM findings + result: CspFindingResult; + resource: CspFindingResource; + rule: CspBenchmarkRuleMetadata; + host: CspFindingHost; + event: EcsEvent; + agent: CspFindingAgent; + ecs: { + version: string; + }; +} + +interface CspFindingOrchestrator { + cluster?: { + id?: string; + name?: string; + }; +} + +interface CspFindingCloud { + provider: 'aws' | 'azure' | 'gcp'; + account: { + name: string; + id: string; + }; + region?: string; +} + +interface CspFindingResult { + evaluation: 'passed' | 'failed'; + expected?: Record; + evidence: Record; +} + +interface CspFindingResource { + name: string; + sub_type: string; + raw: object; + id: string; + type: string; + [other_keys: string]: unknown; +} + +interface CspFindingHost { + id: string; + containerized: boolean; + ip: string[]; + mac: string[]; + name: string; + hostname: string; + architecture: string; + os: { + kernel: string; + codename: string; + type: string; + platform: string; + version: string; + family: string; + name: string; + }; + [other_keys: string]: unknown; +} + +interface CspFindingAgent { + version: string; + // ephemeral_id: string; + id: string; + name: string; + type: string; +} diff --git a/x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts b/x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts new file mode 100644 index 00000000000000..22bca49f420475 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts @@ -0,0 +1,23 @@ +/* + * 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 { estypes } from '@elastic/elasticsearch'; + +export const getFindingsCountAggQuery = () => ({ + count: { terms: { field: 'result.evaluation' } }, +}); + +export const getAggregationCount = ( + buckets: Array +) => { + const passed = buckets.find((bucket) => bucket?.key === 'passed'); + const failed = buckets.find((bucket) => bucket?.key === 'failed'); + + return { + passed: passed?.doc_count || 0, + failed: failed?.doc_count || 0, + }; +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/tsconfig.json b/x-pack/packages/kbn-cloud-security-posture/tsconfig.json new file mode 100644 index 00000000000000..370ad0deb03b48 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/kibana-react-plugin", + "@kbn/core", + "@kbn/cloud-security-posture-common", + ] + } \ No newline at end of file diff --git a/x-pack/packages/kbn-cloud-security-posture/type.ts b/x-pack/packages/kbn-cloud-security-posture/type.ts new file mode 100644 index 00000000000000..917c2621579ae8 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/type.ts @@ -0,0 +1,49 @@ +/* + * 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 { LicensingPluginStart } from '@kbn/licensing-plugin/public'; +import { DataViewsServicePublic } from '@kbn/data-views-plugin/public'; +import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; +import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; +import { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; +import { IndexPatternFieldEditorStart } from '@kbn/data-view-field-editor-plugin/public'; +import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; +import { ToastsStart } from '@kbn/core/public'; +import { Storage } from '@kbn/kibana-utils-plugin/public'; + +import type { ChartsPluginStart } from '@kbn/charts-plugin/public'; +import type { DiscoverStart } from '@kbn/discover-plugin/public'; +import type { FleetStart } from '@kbn/fleet-plugin/public'; +import type { UsageCollectionStart } from '@kbn/usage-collection-plugin/public'; +import { SharePluginStart } from '@kbn/share-plugin/public'; + +import type { BoolQuery } from '@kbn/es-query'; +export interface FindingsBaseEsQuery { + query?: { + bool: BoolQuery; + }; +} + +export interface CspClientPluginStartDeps { + // required + data: DataPublicPluginStart; + dataViews: DataViewsServicePublic; + dataViewFieldEditor: IndexPatternFieldEditorStart; + unifiedSearch: UnifiedSearchPublicPluginStart; + uiActions: UiActionsStart; + fieldFormats: FieldFormatsStart; + toastNotifications: ToastsStart; + charts: ChartsPluginStart; + discover: DiscoverStart; + fleet: FleetStart; + licensing: LicensingPluginStart; + share: SharePluginStart; + storage: Storage; + + // optional + usageCollection?: UsageCollectionStart; +} diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts index a9bb7540ab12e1..b5a8aafca08e55 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts @@ -12,10 +12,12 @@ import type { Pagination } from '@elastic/eui'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { buildDataTableRecord } from '@kbn/discover-utils'; import { EsHitRecord } from '@kbn/discover-utils/types'; +import { buildMutedRulesFilter } from '@kbn/cloud-security-posture-common'; +import { getAggregationCount, getFindingsCountAggQuery } from '@kbn/cloud-security-posture'; import { CspFinding } from '../../../../common/schemas/csp_finding'; import { useKibana } from '../../../common/hooks/use_kibana'; import type { FindingsBaseEsQuery } from '../../../common/types'; -import { getAggregationCount, getFindingsCountAggQuery } from '../utils/utils'; +// import { getAggregationCount, getFindingsCountAggQuery } from '../utils/utils'; import { CSP_LATEST_FINDINGS_DATA_VIEW, LATEST_FINDINGS_RETENTION_POLICY, @@ -24,7 +26,7 @@ import { MAX_FINDINGS_TO_LOAD } from '../../../common/constants'; import { showErrorToast } from '../../../common/utils/show_error_toast'; import { useGetCspBenchmarkRulesStatesApi } from './use_get_benchmark_rules_state_api'; import { CspBenchmarkRulesStates } from '../../../../common/types/latest'; -import { buildMutedRulesFilter } from '../../../../common/utils/rules_states'; +// import { buildMutedRulesFilter } from '../../../../common/utils/rules_states'; interface UseFindingsOptions extends FindingsBaseEsQuery { sort: string[][]; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx index 262c25def751ed..ba9988a6958c12 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx @@ -10,7 +10,8 @@ import { css } from '@emotion/react'; import { EuiFlexGroup, EuiFlexItem, EuiText, useEuiTheme } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { DistributionBar } from '@kbn/security-solution-distribution-bar'; -import { useLatestFindings } from '@kbn/cloud-security-posture-plugin/public'; +// import { useLatestFindings } from '@kbn/cloud-security-posture-plugin/public'; +import { useMisconfigurationPreview } from '@kbn/cloud-security-posture'; import { euiThemeVars } from '@kbn/ui-theme'; import { ExpandablePanel } from '../../../../shared/components/expandable_panel'; @@ -30,7 +31,7 @@ export const MisconfigurationsOverview = ({ hostName }: { hostName: string }) => must_not: [], }, }; - const { data } = useLatestFindings({ + const { data } = useMisconfigurationPreview({ query: queryHostName, sort: [], enabled: true, diff --git a/yarn.lock b/yarn.lock index 812ba6964e561b..b10f854b0a53da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3597,10 +3597,18 @@ version "0.0.0" uid "" +"@kbn/cloud-security-posture-common@link:x-pack/packages/kbn-cloud-security-posture-common": + version "0.0.0" + uid "" + "@kbn/cloud-security-posture-plugin@link:x-pack/plugins/cloud_security_posture": version "0.0.0" uid "" +"@kbn/cloud-security-posture@link:x-pack/packages/kbn-cloud-security-posture": + version "0.0.0" + uid "" + "@kbn/cloud@link:packages/cloud": version "0.0.0" uid "" From f86e7d2ca6aa592a70e14c818396d0bf6fb362ef Mon Sep 17 00:00:00 2001 From: animehart Date: Thu, 8 Aug 2024 14:24:01 -0700 Subject: [PATCH 08/33] refactor part 1 --- .../kbn-cloud-security-posture/index.ts | 4 ++ .../public/common/types.ts | 12 +++--- .../common/utils/get_limit_properties.ts | 2 +- .../cloud_security_data_table.tsx | 4 +- .../components/detection_rule_counter.tsx | 2 +- .../custom_assets_extension.tsx | 2 +- .../public/components/take_action.tsx | 2 +- .../public/pages/benchmarks/benchmarks.tsx | 2 +- .../pages/benchmarks/benchmarks_table.tsx | 2 +- .../use_csp_benchmark_integrations.ts | 2 +- .../compliance_score_chart.tsx | 2 +- .../compliance_dashboard.tsx | 2 +- .../findings_flyout/findings_flyout.tsx | 2 +- .../findings_flyout/overview_tab.tsx | 2 +- .../use_get_benchmark_rules_state_api.ts | 2 +- .../latest_findings/use_grouped_findings.tsx | 5 +-- .../latest_findings/use_latest_findings.ts | 38 +++++++++++++------ .../use_latest_findings_grouping.tsx | 8 ++-- .../configurations/layout/error_callout.tsx | 2 +- .../create_detection_rule_from_benchmark.ts | 6 +-- .../configurations/utils/get_filters.test.ts | 2 +- .../pages/configurations/utils/utils.ts | 17 --------- .../public/pages/rules/rules_counters.tsx | 2 +- .../public/pages/rules/rules_flyout.tsx | 2 +- .../public/pages/rules/rules_table.tsx | 2 +- .../public/pages/rules/rules_table_header.tsx | 2 +- .../pages/rules/use_csp_benchmark_rules.ts | 2 +- .../pages/rules/use_csp_integration.tsx | 2 +- .../public/pages/rules/use_csp_rules_state.ts | 2 +- .../hooks/use_grouped_vulnerabilities.tsx | 4 +- .../hooks/use_latest_vulnerabilities.tsx | 8 ++-- .../vulnerabilities/vulnerabilties.test.tsx | 2 +- .../vulnerability_trend_graph.tsx | 2 +- .../latest_findings_transform.ts | 2 +- .../routes/benchmark_rules/get_states/v1.ts | 2 +- .../server/routes/status/status.ts | 2 +- 36 files changed, 79 insertions(+), 79 deletions(-) diff --git a/x-pack/packages/kbn-cloud-security-posture/index.ts b/x-pack/packages/kbn-cloud-security-posture/index.ts index 3a4d03b7cddd06..d77b369f380dd8 100644 --- a/x-pack/packages/kbn-cloud-security-posture/index.ts +++ b/x-pack/packages/kbn-cloud-security-posture/index.ts @@ -5,5 +5,9 @@ * 2.0. */ +export * from './type'; +export * from './src/schema/csp_finding'; export { useMisconfigurationPreview } from './src/hooks/use_misconfiguration_preview'; +export { useGetCspBenchmarkRulesStatesApi } from './src/hooks/use_get_benchmark_rules_state_api'; +export { useKibana } from './src/hooks/use_kibana'; export { getAggregationCount, getFindingsCountAggQuery } from './src/utils/utils'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/types.ts b/x-pack/plugins/cloud_security_posture/public/common/types.ts index f2881c17988838..286541c56b70b5 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/types.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/types.ts @@ -5,7 +5,7 @@ * 2.0. */ import type { Criteria } from '@elastic/eui'; -import type { BoolQuery, Filter, Query, EsQueryConfig } from '@kbn/es-query'; +import type { Filter, Query, EsQueryConfig } from '@kbn/es-query'; import { CspFinding } from '../../common/schemas/csp_finding'; export type FindingsGroupByKind = 'default' | 'resource'; @@ -27,11 +27,11 @@ export interface FindingsBaseESQueryConfig { config: EsQueryConfig; } -export interface FindingsBaseEsQuery { - query?: { - bool: BoolQuery; - }; -} +// export interface FindingsBaseEsQuery { +// query?: { +// bool: BoolQuery; +// }; +// } export interface CspFindingsQueryData { page: CspFinding[]; diff --git a/x-pack/plugins/cloud_security_posture/public/common/utils/get_limit_properties.ts b/x-pack/plugins/cloud_security_posture/public/common/utils/get_limit_properties.ts index f09990bc3f8544..12cce0034b4e53 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/utils/get_limit_properties.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/utils/get_limit_properties.ts @@ -6,7 +6,7 @@ */ import { useMemo } from 'react'; -import { MAX_FINDINGS_TO_LOAD } from '../constants'; +import { MAX_FINDINGS_TO_LOAD } from '@kbn/cloud-security-posture-common'; export const getLimitProperties = ( totalItems: number, diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx index 5c0cbd048f9d12..5e6f0994d64acf 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx @@ -26,10 +26,10 @@ import { AddFieldFilterHandler } from '@kbn/unified-field-list'; import { generateFilters } from '@kbn/data-plugin/public'; import { DocViewFilterFn } from '@kbn/unified-doc-viewer/types'; import useLocalStorage from 'react-use/lib/useLocalStorage'; -import { useKibana } from '../../common/hooks/use_kibana'; +import { useKibana } from '@kbn/cloud-security-posture'; +import { MAX_FINDINGS_TO_LOAD } from '@kbn/cloud-security-posture-common'; import { CloudPostureDataTableResult } from '../../common/hooks/use_cloud_posture_data_table'; import { EmptyState } from '../empty_state'; -import { MAX_FINDINGS_TO_LOAD } from '../../common/constants'; import { useStyles } from './use_styles'; import { AdditionalControls } from './additional_controls'; import { useDataViewContext } from '../../common/contexts/data_view_context'; diff --git a/x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx b/x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx index 4cf8c5983cb861..df2261f373aaf5 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx @@ -12,10 +12,10 @@ import type { HttpSetup } from '@kbn/core/public'; import { useHistory } from 'react-router-dom'; import useSessionStorage from 'react-use/lib/useSessionStorage'; import { useQueryClient } from '@tanstack/react-query'; +import { useKibana } from '@kbn/cloud-security-posture'; import { useFetchDetectionRulesAlertsStatus } from '../common/api/use_fetch_detection_rules_alerts_status'; import { useFetchDetectionRulesByTags } from '../common/api/use_fetch_detection_rules_by_tags'; import { RuleResponse } from '../common/types'; -import { useKibana } from '../common/hooks/use_kibana'; import { showCreateDetectionRuleSuccessToast } from './take_action'; import { DETECTION_ENGINE_ALERTS_KEY, DETECTION_ENGINE_RULES_KEY } from '../common/constants'; diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx index c7708cba837cc7..c56efa317254d7 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx @@ -10,9 +10,9 @@ import { type CustomAssetsAccordionProps, CustomAssetsAccordion } from '@kbn/fle import { i18n } from '@kbn/i18n'; import { useParams } from 'react-router-dom'; import { EuiSpacer } from '@elastic/eui'; +import { useKibana } from '@kbn/cloud-security-posture'; import { CloudSecurityPolicyTemplate } from '../../../common/types_old'; import { VULN_MGMT_POLICY_TEMPLATE } from '../../../common/constants'; -import { useKibana } from '../../common/hooks/use_kibana'; import { benchmarksNavigation, cloudPosturePages } from '../../common/navigation/constants'; const SECURITY_APP_NAME = 'securitySolutionUI'; diff --git a/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx b/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx index 87d6d109b7db09..08b9b276037927 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx @@ -22,9 +22,9 @@ import type { HttpSetup } from '@kbn/core/public'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n as kbnI18n } from '@kbn/i18n'; import { QueryClient, useQueryClient } from '@tanstack/react-query'; +import { useKibana } from '@kbn/cloud-security-posture'; import type { RuleResponse } from '../common/types'; import { CREATE_RULE_ACTION_SUBJ, TAKE_ACTION_SUBJ } from './test_subjects'; -import { useKibana } from '../common/hooks/use_kibana'; import { DETECTION_ENGINE_ALERTS_KEY, DETECTION_ENGINE_RULES_KEY } from '../common/constants'; import { CloudSecurityPostureStartServices } from '../types'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx index 13b4750317810c..e503944a6e1547 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx @@ -21,6 +21,7 @@ import { FormattedMessage } from '@kbn/i18n-react'; import useDebounce from 'react-use/lib/useDebounce'; import { i18n } from '@kbn/i18n'; import { pagePathGetters } from '@kbn/fleet-plugin/public'; +import { useKibana } from '@kbn/cloud-security-posture'; import { CLOUD_SECURITY_POSTURE_PACKAGE_NAME } from '../../../common/constants'; import { CloudPosturePageTitle } from '../../components/cloud_posture_page_title'; import { CloudPosturePage } from '../../components/cloud_posture_page'; @@ -36,7 +37,6 @@ import { NO_FINDINGS_STATUS_REFRESH_INTERVAL_MS, } from '../../common/constants'; import { usePageSize } from '../../common/hooks/use_page_size'; -import { useKibana } from '../../common/hooks/use_kibana'; import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; import { NoFindingsStates } from '../../components/no_findings_states'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx index 32cb0c6f11f988..6f1f0fe995b96f 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx @@ -21,6 +21,7 @@ import React, { useMemo } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { generatePath } from 'react-router-dom'; +import { useKibana } from '@kbn/cloud-security-posture'; import { FINDINGS_GROUPING_OPTIONS } from '../../common/constants'; import { useNavigateFindings } from '../../common/hooks/use_navigate_findings'; import type { BenchmarkScore, Benchmark, BenchmarksCisId } from '../../../common/types/latest'; @@ -35,7 +36,6 @@ import { GetBenchmarkDynamicValues, useBenchmarkDynamicValues, } from '../../common/hooks/use_benchmark_dynamic_values'; -import { useKibana } from '../../common/hooks/use_kibana'; export const ERROR_STATE_TEST_SUBJECT = 'benchmark_page_error'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts index 3b21e7978e8390..929bcf98d24e5c 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts @@ -6,9 +6,9 @@ */ import { useQuery } from '@tanstack/react-query'; +import { useKibana } from '@kbn/cloud-security-posture'; import { BENCHMARKS_ROUTE_PATH } from '../../../common/constants'; import type { BenchmarksQueryParams } from '../../../common/types/benchmarks/v1'; -import { useKibana } from '../../common/hooks/use_kibana'; import type { GetBenchmarkResponse } from '../../../common/types/latest'; import type { GetBenchmarkResponse as GetBenchmarkResponseV1 } from '../../../common/types/benchmarks/v1'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx index aff4feeed048ac..688b44b258776e 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx @@ -31,12 +31,12 @@ import { FormattedDate, FormattedTime } from '@kbn/i18n-react'; import moment from 'moment'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; +import { useKibana } from '@kbn/cloud-security-posture'; import { DASHBOARD_COMPLIANCE_SCORE_CHART } from '../test_subjects'; import { statusColors } from '../../../common/constants'; import { RULE_FAILED, RULE_PASSED } from '../../../../common/constants'; import { CompactFormattedNumber } from '../../../components/compact_formatted_number'; import type { Evaluation, PostureTrend, Stats } from '../../../../common/types_old'; -import { useKibana } from '../../../common/hooks/use_kibana'; interface ComplianceScoreChartProps { compact?: boolean; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx index af341d5c04606f..0f740db6f44624 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx @@ -13,6 +13,7 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { Route, Routes } from '@kbn/shared-ux-router'; import { Redirect, useHistory, useLocation } from 'react-router-dom'; +import { useKibana } from '@kbn/cloud-security-posture'; import { NO_FINDINGS_STATUS_TEST_SUBJ } from '../../components/test_subjects'; import { useCspIntegrationLink } from '../../common/navigation/use_csp_integration_link'; import type { @@ -45,7 +46,6 @@ import { CSPM_POLICY_TEMPLATE, KSPM_POLICY_TEMPLATE } from '../../../common/cons import { cloudPosturePages, cspIntegrationDocsNavigation } from '../../common/navigation/constants'; import { NO_FINDINGS_STATUS_REFRESH_INTERVAL_MS } from '../../common/constants'; import { encodeQuery } from '../../common/navigation/query_utils'; -import { useKibana } from '../../common/hooks/use_kibana'; const POSTURE_TYPE_CSPM = CSPM_POLICY_TEMPLATE; const POSTURE_TYPE_KSPM = KSPM_POLICY_TEMPLATE; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx index 1c95c3120b8941..d51201c3c650f2 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx @@ -31,6 +31,7 @@ import type { HttpSetup } from '@kbn/core/public'; import { generatePath } from 'react-router-dom'; import { css } from '@emotion/react'; import { euiThemeVars } from '@kbn/ui-theme'; +import { useKibana } from '@kbn/cloud-security-posture'; import { truthy } from '../../../../common/utils/helpers'; import { benchmarksNavigation } from '../../../common/navigation/constants'; import cisLogoIcon from '../../../assets/icons/cis_logo.svg'; @@ -45,7 +46,6 @@ import type { BenchmarkId } from '../../../../common/types_old'; import { CISBenchmarkIcon } from '../../../components/cis_benchmark_icon'; import { BenchmarkName } from '../../../../common/types_old'; import { FINDINGS_FLYOUT, FINDINGS_MISCONFIGS_FLYOUT_DESCRIPTION_LIST } from '../test_subjects'; -import { useKibana } from '../../../common/hooks/use_kibana'; import { createDetectionRuleFromBenchmarkRule } from '../utils/create_detection_rule_from_benchmark'; import { CspInlineDescriptionList } from '../../../components/csp_inline_description_list'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx index 9835204768861c..d9b357c5b09444 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx @@ -21,6 +21,7 @@ import type { EuiDescriptionListProps, EuiAccordionProps } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { isEmpty } from 'lodash'; +import { useKibana } from '@kbn/cloud-security-posture'; import { truthy } from '../../../../common/utils/helpers'; import { CSP_MOMENT_FORMAT } from '../../../common/constants'; import { @@ -29,7 +30,6 @@ import { LATEST_FINDINGS_INDEX_PATTERN, } from '../../../../common/constants'; import { useDataView } from '../../../common/api/use_data_view'; -import { useKibana } from '../../../common/hooks/use_kibana'; import { CspFinding } from '../../../../common/schemas/csp_finding'; import { CisKubernetesIcons, CodeBlock, CspFlyoutMarkdown } from './findings_flyout'; import { FindingsDetectionRuleCounter } from './findings_detection_rule_counter'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts index ceada5c3148ebc..128828815495e9 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts @@ -6,12 +6,12 @@ */ import { useQuery } from '@tanstack/react-query'; +import { useKibana } from '@kbn/cloud-security-posture'; import { CspBenchmarkRulesStates } from '../../../../common/types/latest'; import { CSP_GET_BENCHMARK_RULES_STATE_API_CURRENT_VERSION, CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH, } from '../../../../common/constants'; -import { useKibana } from '../../../common/hooks/use_kibana'; export const getRuleStatesKey = ['get_rules_state_key']; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx index 5784e1e43bcf39..f9ea62efb69cbb 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx @@ -10,9 +10,8 @@ import type { IKibanaSearchResponse } from '@kbn/search-types'; import { GenericBuckets, GroupingQuery, RootAggregation } from '@kbn/grouping/src'; import { useQuery } from '@tanstack/react-query'; import { lastValueFrom } from 'rxjs'; -import { CSP_LATEST_FINDINGS_DATA_VIEW } from '../../../../common/constants'; -import { useKibana } from '../../../common/hooks/use_kibana'; -import { showErrorToast } from '../../../common/utils/show_error_toast'; +import { useKibana } from '@kbn/cloud-security-posture'; +import { CSP_LATEST_FINDINGS_DATA_VIEW, showErrorToast } from '@kbn/cloud-security-posture-common'; // Elasticsearch returns `null` when a sub-aggregation cannot be computed type NumberOrNull = number | null; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts index b5a8aafca08e55..d45a1d0b1950e6 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts @@ -12,21 +12,35 @@ import type { Pagination } from '@elastic/eui'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { buildDataTableRecord } from '@kbn/discover-utils'; import { EsHitRecord } from '@kbn/discover-utils/types'; -import { buildMutedRulesFilter } from '@kbn/cloud-security-posture-common'; -import { getAggregationCount, getFindingsCountAggQuery } from '@kbn/cloud-security-posture'; -import { CspFinding } from '../../../../common/schemas/csp_finding'; -import { useKibana } from '../../../common/hooks/use_kibana'; -import type { FindingsBaseEsQuery } from '../../../common/types'; -// import { getAggregationCount, getFindingsCountAggQuery } from '../utils/utils'; import { + buildMutedRulesFilter, + showErrorToast, CSP_LATEST_FINDINGS_DATA_VIEW, LATEST_FINDINGS_RETENTION_POLICY, -} from '../../../../common/constants'; -import { MAX_FINDINGS_TO_LOAD } from '../../../common/constants'; -import { showErrorToast } from '../../../common/utils/show_error_toast'; -import { useGetCspBenchmarkRulesStatesApi } from './use_get_benchmark_rules_state_api'; -import { CspBenchmarkRulesStates } from '../../../../common/types/latest'; -// import { buildMutedRulesFilter } from '../../../../common/utils/rules_states'; + MAX_FINDINGS_TO_LOAD, + CspBenchmarkRulesStates, +} from '@kbn/cloud-security-posture-common'; +import type { FindingsBaseEsQuery } from '@kbn/cloud-security-posture'; +import { + getAggregationCount, + getFindingsCountAggQuery, + useGetCspBenchmarkRulesStatesApi, + useKibana, + CspFinding, +} from '@kbn/cloud-security-posture'; +// import { CspFinding } from '../../../../common/schemas/csp_finding'; +// import { useKibana } from '../../../common/hooks/use_kibana'; DONE +// import type { FindingsBaseEsQuery } from '../../../common/types'; DONE +// import { getAggregationCount, getFindingsCountAggQuery } from '../utils/utils'; DONE +// import { +// CSP_LATEST_FINDINGS_DATA_VIEW, +// LATEST_FINDINGS_RETENTION_POLICY, +// } from '../../../../common/constants'; DONE +// import { MAX_FINDINGS_TO_LOAD } from '../../../common/constants'; DONE +// import { showErrorToast } from '../../../common/utils/show_error_toast'; DONE +// import { useGetCspBenchmarkRulesStatesApi } from './use_get_benchmark_rules_state_api'; //DONE +// import { CspBenchmarkRulesStates } from '../../../../common/types/latest'; HERE +// import { buildMutedRulesFilter } from '../../../../common/utils/rules_states'; DONE interface UseFindingsOptions extends FindingsBaseEsQuery { sort: string[][]; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_grouping.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_grouping.tsx index 0235960207e27d..c8c073d84b3033 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_grouping.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings_grouping.tsx @@ -15,13 +15,17 @@ import { } from '@kbn/grouping/src'; import { useMemo } from 'react'; import { buildEsQuery, Filter } from '@kbn/es-query'; +import { useGetCspBenchmarkRulesStatesApi } from '@kbn/cloud-security-posture'; +import { + LATEST_FINDINGS_RETENTION_POLICY, + buildMutedRulesFilter, +} from '@kbn/cloud-security-posture-common'; import { FINDINGS_GROUPING_OPTIONS, LOCAL_STORAGE_FINDINGS_GROUPING_KEY, } from '../../../common/constants'; import { useDataViewContext } from '../../../common/contexts/data_view_context'; import { Evaluation } from '../../../../common/types_old'; -import { LATEST_FINDINGS_RETENTION_POLICY } from '../../../../common/constants'; import { FindingsGroupingAggregation, FindingsRootGroupingAggregation, @@ -36,8 +40,6 @@ import { } from './constants'; import { useCloudSecurityGrouping } from '../../../components/cloud_security_grouping'; import { getFilters } from '../utils/get_filters'; -import { useGetCspBenchmarkRulesStatesApi } from './use_get_benchmark_rules_state_api'; -import { buildMutedRulesFilter } from '../../../../common/utils/rules_states'; const getTermAggregation = (key: keyof FindingsGroupingAggregation, field: string) => ({ [key]: { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx index 9cf633299ba8d2..7bec89da4b8330 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx @@ -16,7 +16,7 @@ import { import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; -import { useKibana } from '../../../common/hooks/use_kibana'; +import { useKibana } from '@kbn/cloud-security-posture'; export const ErrorCallout = ({ error }: { error: Error }) => { const { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/create_detection_rule_from_benchmark.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/create_detection_rule_from_benchmark.ts index d77e6ddf6389ce..7b1ddf57184895 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/create_detection_rule_from_benchmark.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/create_detection_rule_from_benchmark.ts @@ -6,11 +6,9 @@ */ import { HttpSetup } from '@kbn/core/public'; +import { LATEST_FINDINGS_RETENTION_POLICY } from '@kbn/cloud-security-posture-common'; import { CspBenchmarkRule } from '../../../../common/types/latest'; -import { - FINDINGS_INDEX_PATTERN, - LATEST_FINDINGS_RETENTION_POLICY, -} from '../../../../common/constants'; +import { FINDINGS_INDEX_PATTERN } from '../../../../common/constants'; import { createDetectionRule } from '../../../common/api/create_detection_rule'; import { generateBenchmarkRuleTags } from '../../../../common/utils/detection_rules'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.test.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.test.ts index 7c73dacbd5e5c0..5c7df7943d4dc5 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.test.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/get_filters.test.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { CSP_LATEST_FINDINGS_DATA_VIEW } from '../../../../common/constants'; +import { CSP_LATEST_FINDINGS_DATA_VIEW } from '@kbn/cloud-security-posture-common'; import { createStubDataView } from '@kbn/data-views-plugin/common/stubs'; import { DataView } from '@kbn/data-views-plugin/common'; import { getFilters } from './get_filters'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts index 3e0277d7cd4c12..dd903960fa67a2 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts @@ -5,7 +5,6 @@ * 2.0. */ -import type { estypes } from '@elastic/elasticsearch'; import { EuiThemeComputed } from '@elastic/eui'; import type { CspFinding } from '../../../../common/schemas/csp_finding'; export { getFilters } from './get_filters'; @@ -19,22 +18,6 @@ export const getFindingsPageSizeInfo = ({ pageEnd: pageIndex * pageSize + currentPageSize, }); -export const getFindingsCountAggQuery = () => ({ - count: { terms: { field: 'result.evaluation' } }, -}); - -export const getAggregationCount = ( - buckets: Array -) => { - const passed = buckets.find((bucket) => bucket?.key === 'passed'); - const failed = buckets.find((bucket) => bucket?.key === 'failed'); - - return { - passed: passed?.doc_count || 0, - failed: failed?.doc_count || 0, - }; -}; - const isSelectedRow = (row: CspFinding, selected?: CspFinding) => row.resource.id === selected?.resource.id && row.rule.id === selected?.rule.id; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx index ec8d4a653c222c..cbe47b81a64f1d 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx @@ -18,6 +18,7 @@ import { i18n } from '@kbn/i18n'; import { useParams } from 'react-router-dom'; import { Chart, Partition, PartitionLayout, Settings } from '@elastic/charts'; import { FormattedMessage } from '@kbn/i18n-react'; +import { useKibana } from '@kbn/cloud-security-posture'; import { useBenchmarkDynamicValues } from '../../common/hooks/use_benchmark_dynamic_values'; import { getPostureScorePercentage } from '../compliance_dashboard/compliance_charts/compliance_score_chart'; import { RULE_COUNTERS_TEST_SUBJ } from './test_subjects'; @@ -28,7 +29,6 @@ import { RULE_FAILED, RULE_PASSED } from '../../../common/constants'; import { statusColors } from '../../common/constants'; import { useCspBenchmarkIntegrationsV2 } from '../benchmarks/use_csp_benchmark_integrations'; import { CspCounterCard } from '../../components/csp_counter_card'; -import { useKibana } from '../../common/hooks/use_kibana'; const EvaluationPieChart = ({ failed, passed }: { failed: number; passed: number }) => { const { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx index 264a8229d11a33..890c1be311a646 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx @@ -23,7 +23,7 @@ import { import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { HttpSetup } from '@kbn/core/public'; -import { useKibana } from '../../common/hooks/use_kibana'; +import { useKibana } from '@kbn/cloud-security-posture'; import { getFindingsDetectionRuleSearchTags } from '../../../common/utils/detection_rules'; import { CspBenchmarkRuleMetadata } from '../../../common/types/latest'; import { getRuleList } from '../configurations/findings_flyout/rule_tab'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx index 05bed9ce85cd30..a650a4dda7481d 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx @@ -21,8 +21,8 @@ import { import { i18n } from '@kbn/i18n'; import { uniqBy } from 'lodash'; import { HttpSetup } from '@kbn/core/public'; +import { useKibana } from '@kbn/cloud-security-posture'; import { CloudSecurityPostureStartServices } from '../../types'; -import { useKibana } from '../../common/hooks/use_kibana'; import { getFindingsDetectionRuleSearchTags } from '../../../common/utils/detection_rules'; import { ColumnNameWithTooltip } from '../../components/column_name_with_tooltip'; import type { CspBenchmarkRulesWithStates, RulesState } from './rules_container'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx index 83745e5f5d1139..d4b8c847f1216e 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx @@ -24,7 +24,7 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { css } from '@emotion/react'; import { euiThemeVars } from '@kbn/ui-theme'; -import { useKibana } from '../../common/hooks/use_kibana'; +import { useKibana } from '@kbn/cloud-security-posture'; import { getFindingsDetectionRuleSearchTagsFromArrayOfRules } from '../../../common/utils/detection_rules'; import { RuleStateAttributesWithoutStates, diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts index d580a7719ed0aa..348cdc67d6a367 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts @@ -5,11 +5,11 @@ * 2.0. */ import { useQuery } from '@tanstack/react-query'; +import { useKibana } from '@kbn/cloud-security-posture'; import { FindCspBenchmarkRuleRequest, FindCspBenchmarkRuleResponse, } from '../../../common/types/latest'; -import { useKibana } from '../../common/hooks/use_kibana'; import { CSP_BENCHMARK_RULE_SAVED_OBJECT_TYPE, diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_integration.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_integration.tsx index 45d4743490e3f1..341d55c4c2ad26 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_integration.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_integration.tsx @@ -12,7 +12,7 @@ import { agentPolicyRouteService, API_VERSIONS, } from '@kbn/fleet-plugin/common'; -import { useKibana } from '../../common/hooks/use_kibana'; +import { useKibana } from '@kbn/cloud-security-posture'; import { PageUrlParams } from '../../../common/types/rules/v3'; export const useCspIntegrationInfo = ({ packagePolicyId, policyId }: PageUrlParams) => { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts index e712b130e16514..55de90404de81b 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts @@ -6,9 +6,9 @@ */ import { useQuery } from '@tanstack/react-query'; +import { useKibana } from '@kbn/cloud-security-posture'; import { CspBenchmarkRulesStates } from '../../../common/types/latest'; import { CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH } from '../../../common/constants'; -import { useKibana } from '../../common/hooks/use_kibana'; export const CSP_RULES_STATES_QUERY_KEY = ['csp_rules_states_v1']; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx index 79cb2aad7e60e4..c4fb1583598cc3 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx @@ -10,9 +10,9 @@ import type { IKibanaSearchResponse } from '@kbn/search-types'; import { GenericBuckets, GroupingQuery, RootAggregation } from '@kbn/grouping/src'; import { useQuery } from '@tanstack/react-query'; import { lastValueFrom } from 'rxjs'; +import { useKibana } from '@kbn/cloud-security-posture'; +import { showErrorToast } from '@kbn/cloud-security-posture-common'; import { LATEST_VULNERABILITIES_INDEX_PATTERN } from '../../../../common/constants'; -import { useKibana } from '../../../common/hooks/use_kibana'; -import { showErrorToast } from '../../../common/utils/show_error_toast'; // Elasticsearch returns `null` when a sub-aggregation cannot be computed type NumberOrNull = number | null; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx index 15760e80ad7c29..0c71062544ab52 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx @@ -16,15 +16,15 @@ import { } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { buildDataTableRecord } from '@kbn/discover-utils'; import { EsHitRecord } from '@kbn/discover-utils/types'; -import { MAX_FINDINGS_TO_LOAD, VULNERABILITY_FIELDS } from '../../../common/constants'; +import { useKibana } from '@kbn/cloud-security-posture'; +import { FindingsBaseEsQuery } from '@kbn/cloud-security-posture'; +import { MAX_FINDINGS_TO_LOAD, showErrorToast } from '@kbn/cloud-security-posture-common'; +import { VULNERABILITY_FIELDS } from '../../../common/constants'; import { CspVulnerabilityFinding } from '../../../../common/schemas'; import { LATEST_VULNERABILITIES_INDEX_PATTERN, LATEST_VULNERABILITIES_RETENTION_POLICY, } from '../../../../common/constants'; -import { useKibana } from '../../../common/hooks/use_kibana'; -import { showErrorToast } from '../../../common/utils/show_error_toast'; -import { FindingsBaseEsQuery } from '../../../common/types'; import { getCaseInsensitiveSortScript } from '../utils/custom_sort_script'; type LatestFindingsRequest = IKibanaSearchRequest; type LatestFindingsResponse = IKibanaSearchResponse< diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx index 3a1d83e4189fc5..9aa7af30c62c70 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx @@ -7,8 +7,8 @@ import React from 'react'; import Chance from 'chance'; import { Vulnerabilities } from './vulnerabilities'; +import { CSP_LATEST_FINDINGS_DATA_VIEW } from '@kbn/cloud-security-posture-common'; import { - CSP_LATEST_FINDINGS_DATA_VIEW, LATEST_VULNERABILITIES_INDEX_DEFAULT_NS, VULN_MGMT_POLICY_TEMPLATE, } from '../../../common/constants'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx index dcdc9ffccd7ce2..4da82fe35f60b5 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx @@ -19,6 +19,7 @@ import { EuiButton, EuiComboBox } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; +import { useKibana } from '@kbn/cloud-security-posture'; import { truthy } from '../../../common/utils/helpers'; import { useNavigateVulnerabilities } from '../../common/hooks/use_navigate_findings'; import { VulnStatsTrend, VulnSeverity } from '../../../common/types_old'; @@ -26,7 +27,6 @@ import { useVulnerabilityDashboardApi } from '../../common/api/use_vulnerability import { getSeverityStatusColor } from '../../common/utils/get_vulnerability_colors'; import { ChartPanel } from '../../components/chart_panel'; import { VULNERABILITIES_SEVERITY } from '../../../common/constants'; -import { useKibana } from '../../common/hooks/use_kibana'; const stackAccessors: VulnSeverity[] = [ VULNERABILITIES_SEVERITY.CRITICAL, diff --git a/x-pack/plugins/cloud_security_posture/server/create_transforms/latest_findings_transform.ts b/x-pack/plugins/cloud_security_posture/server/create_transforms/latest_findings_transform.ts index 556ab0c7c830c9..aa428c7083eca4 100644 --- a/x-pack/plugins/cloud_security_posture/server/create_transforms/latest_findings_transform.ts +++ b/x-pack/plugins/cloud_security_posture/server/create_transforms/latest_findings_transform.ts @@ -5,11 +5,11 @@ * 2.0. */ import type { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/types'; +import { LATEST_FINDINGS_RETENTION_POLICY } from '@kbn/cloud-security-posture-common'; import { CLOUD_SECURITY_POSTURE_PACKAGE_NAME, FINDINGS_INDEX_PATTERN, LATEST_FINDINGS_INDEX_DEFAULT_NS, - LATEST_FINDINGS_RETENTION_POLICY, } from '../../common/constants'; const LATEST_FINDINGS_TRANSFORM_V830 = 'cloud_security_posture.findings_latest-default-0.0.1'; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts index 4d28b995cbdaf9..3173e6cc92ed7a 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts @@ -10,12 +10,12 @@ import { } from '@kbn/core-saved-objects-api-server'; import { transformError } from '@kbn/securitysolution-es-utils'; import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { buildMutedRulesFilter } from '@kbn/cloud-security-posture-common'; import { CspBenchmarkRulesStates, CspSettings } from '../../../../common/types/rules/v4'; import { INTERNAL_CSP_SETTINGS_SAVED_OBJECT_ID, INTERNAL_CSP_SETTINGS_SAVED_OBJECT_TYPE, } from '../../../../common/constants'; -import { buildMutedRulesFilter } from '../../../../common/utils/rules_states'; export const createCspSettingObject = async (soClient: SavedObjectsClientContract) => { return soClient.create( 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 df2fc0d36fc63f..4c9f7aa96c06d7 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 @@ -17,6 +17,7 @@ import moment from 'moment'; import { Installation, PackagePolicy } from '@kbn/fleet-plugin/common'; import { schema } from '@kbn/config-schema'; import { VersionedRoute } from '@kbn/core-http-server/src/versioning/types'; +import { LATEST_FINDINGS_RETENTION_POLICY } from '@kbn/cloud-security-posture-common'; import { CLOUD_SECURITY_POSTURE_PACKAGE_NAME, STATUS_ROUTE_PATH, @@ -31,7 +32,6 @@ import { VULN_MGMT_POLICY_TEMPLATE, POSTURE_TYPE_ALL, LATEST_VULNERABILITIES_RETENTION_POLICY, - LATEST_FINDINGS_RETENTION_POLICY, } from '../../../common/constants'; import type { CspApiRequestHandlerContext, From 0a425e4c1459770437558582f4f3d6e1c8c45b43 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 8 Aug 2024 21:37:20 +0000 Subject: [PATCH 09/33] [CI] Auto-commit changed files from 'node scripts/lint_ts_projects --fix' --- .../tsconfig.json | 39 ++++++------ .../kbn-cloud-security-posture/tsconfig.json | 59 ++++++++++++------- .../cloud_security_posture/tsconfig.json | 4 +- .../plugins/security_solution/tsconfig.json | 2 + 4 files changed, 65 insertions(+), 39 deletions(-) diff --git a/x-pack/packages/kbn-cloud-security-posture-common/tsconfig.json b/x-pack/packages/kbn-cloud-security-posture-common/tsconfig.json index a968a7a05c9d0a..64faae7a2ff717 100644 --- a/x-pack/packages/kbn-cloud-security-posture-common/tsconfig.json +++ b/x-pack/packages/kbn-cloud-security-posture-common/tsconfig.json @@ -1,18 +1,23 @@ { - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [] - } \ No newline at end of file + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/config-schema", + "@kbn/data-views-plugin", + "@kbn/core", + "@kbn/i18n", + ] +} diff --git a/x-pack/packages/kbn-cloud-security-posture/tsconfig.json b/x-pack/packages/kbn-cloud-security-posture/tsconfig.json index 370ad0deb03b48..2b7e8fd25d7f42 100644 --- a/x-pack/packages/kbn-cloud-security-posture/tsconfig.json +++ b/x-pack/packages/kbn-cloud-security-posture/tsconfig.json @@ -1,23 +1,40 @@ { - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/kibana-react-plugin", - "@kbn/core", - "@kbn/cloud-security-posture-common", + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" ] - } \ No newline at end of file + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/kibana-react-plugin", + "@kbn/core", + "@kbn/cloud-security-posture-common", + "@kbn/search-types", + "@kbn/discover-utils", + "@kbn/config-schema", + "@kbn/licensing-plugin", + "@kbn/data-views-plugin", + "@kbn/unified-search-plugin", + "@kbn/ui-actions-plugin", + "@kbn/field-formats-plugin", + "@kbn/data-view-field-editor-plugin", + "@kbn/data-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/charts-plugin", + "@kbn/discover-plugin", + "@kbn/fleet-plugin", + "@kbn/usage-collection-plugin", + "@kbn/share-plugin", + "@kbn/es-query", + ] +} diff --git a/x-pack/plugins/cloud_security_posture/tsconfig.json b/x-pack/plugins/cloud_security_posture/tsconfig.json index 1febc701d66d60..077841b01d0d2f 100755 --- a/x-pack/plugins/cloud_security_posture/tsconfig.json +++ b/x-pack/plugins/cloud_security_posture/tsconfig.json @@ -64,7 +64,9 @@ "@kbn/code-editor", "@kbn/code-editor-mock", "@kbn/search-types", - "@kbn/react-kibana-mount" + "@kbn/react-kibana-mount", + "@kbn/cloud-security-posture-common", + "@kbn/cloud-security-posture" ], "exclude": ["target/**/*"] } diff --git a/x-pack/plugins/security_solution/tsconfig.json b/x-pack/plugins/security_solution/tsconfig.json index ba89ca2864d747..071a0e05ff5f09 100644 --- a/x-pack/plugins/security_solution/tsconfig.json +++ b/x-pack/plugins/security_solution/tsconfig.json @@ -208,5 +208,7 @@ "@kbn/core-theme-browser", "@kbn/integration-assistant-plugin", "@kbn/avc-banner", + "@kbn/security-solution-distribution-bar", + "@kbn/cloud-security-posture", ] } From 11ef98cb09135899add656c4535484c0311d6e0a Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 8 Aug 2024 22:05:37 +0000 Subject: [PATCH 10/33] [CI] Auto-commit changed files from 'node scripts/generate codeowners' --- .github/CODEOWNERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 5d6f6a2e431471..acfe574ecb483d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -87,6 +87,8 @@ x-pack/plugins/cloud_integrations/cloud_full_story @elastic/kibana-core x-pack/test/cloud_integration/plugins/saml_provider @elastic/kibana-core x-pack/plugins/cloud_integrations/cloud_links @elastic/kibana-core x-pack/plugins/cloud @elastic/kibana-core +x-pack/packages/kbn-cloud-security-posture @elastic/kibana-cloud-security-posture +x-pack/packages/kbn-cloud-security-posture-common @elastic/kibana-cloud-security-posture x-pack/plugins/cloud_security_posture @elastic/kibana-cloud-security-posture packages/shared-ux/code_editor/impl @elastic/appex-sharedux packages/shared-ux/code_editor/mocks @elastic/appex-sharedux From e74b284f10de2dbfa1a14fde5a6e0afa0043fb6a Mon Sep 17 00:00:00 2001 From: animehart Date: Thu, 8 Aug 2024 15:25:17 -0700 Subject: [PATCH 11/33] refactor part 2 --- .../plugins/cloud_security_posture/common/types/rules/v5.ts | 3 +-- x-pack/plugins/cloud_security_posture/common/types_old.ts | 1 + .../cloud_security_posture/common/utils/rules_states.ts | 2 +- x-pack/plugins/cloud_security_posture/public/common/types.ts | 2 +- .../public/pages/configurations/__mocks__/findings.ts | 2 +- .../pages/configurations/configurations.handlers.mock.ts | 2 +- .../findings_flyout/findings_detection_rule_counter.tsx | 2 +- .../pages/configurations/findings_flyout/findings_flyout.tsx | 2 +- .../public/pages/configurations/findings_flyout/json_tab.tsx | 2 +- .../public/pages/configurations/findings_flyout/rule_tab.tsx | 2 +- .../public/pages/configurations/findings_flyout/table_tab.tsx | 2 +- .../configurations/latest_findings/latest_findings_table.tsx | 2 +- .../latest_findings/use_get_benchmark_rules_state_api.ts | 2 +- .../configurations/latest_findings/use_latest_findings.ts | 4 ++-- .../pages/configurations/utils/generate_findings_tags.ts | 2 +- .../public/pages/configurations/utils/utils.ts | 2 +- .../public/pages/rules/use_csp_rules_state.ts | 2 +- .../public/test/fixtures/findings_fixture.ts | 2 +- .../server/routes/benchmark_rules/bulk_action/utils.ts | 2 +- .../server/routes/benchmark_rules/get_states/get_states.ts | 2 +- .../server/routes/benchmark_rules/get_states/v1.ts | 3 ++- .../server/routes/compliance_dashboard/get_clusters.ts | 2 ++ 22 files changed, 25 insertions(+), 22 deletions(-) diff --git a/x-pack/plugins/cloud_security_posture/common/types/rules/v5.ts b/x-pack/plugins/cloud_security_posture/common/types/rules/v5.ts index 6f30ed446531aa..461afbcc397b81 100644 --- a/x-pack/plugins/cloud_security_posture/common/types/rules/v5.ts +++ b/x-pack/plugins/cloud_security_posture/common/types/rules/v5.ts @@ -20,12 +20,11 @@ export type { CspBenchmarkRulesBulkActionRequestSchema, CspBenchmarkRulesBulkActionResponse, RuleStateAttributes, - CspBenchmarkRulesStates, cspSettingsSchema, CspSettings, BulkActionBenchmarkRulesResponse, } from './v4'; - +export type { CspBenchmarkRulesStates } from '@kbn/cloud-security-posture-common'; export type FindCspBenchmarkRuleRequest = TypeOf; export const findCspBenchmarkRuleRequestSchema = schema.object({ diff --git a/x-pack/plugins/cloud_security_posture/common/types_old.ts b/x-pack/plugins/cloud_security_posture/common/types_old.ts index 6b290979a97f5a..2b164930abb33a 100644 --- a/x-pack/plugins/cloud_security_posture/common/types_old.ts +++ b/x-pack/plugins/cloud_security_posture/common/types_old.ts @@ -6,6 +6,7 @@ */ import { type TypeOf } from '@kbn/config-schema'; import { CspFinding } from './schemas/csp_finding'; +// import { CspFinding } from '@kbn/cloud-security-posture';TODO import { SUPPORTED_CLOUDBEAT_INPUTS, SUPPORTED_POLICY_TEMPLATES } from './constants'; import { getComplianceDashboardSchema } from './schemas/stats'; diff --git a/x-pack/plugins/cloud_security_posture/common/utils/rules_states.ts b/x-pack/plugins/cloud_security_posture/common/utils/rules_states.ts index a343c91af91f92..2a55a20a136ccd 100644 --- a/x-pack/plugins/cloud_security_posture/common/utils/rules_states.ts +++ b/x-pack/plugins/cloud_security_posture/common/utils/rules_states.ts @@ -5,7 +5,7 @@ * 2.0. */ import { QueryDslQueryContainer } from '@kbn/data-views-plugin/common/types'; -import { CspBenchmarkRulesStates } from '../types/latest'; +import { CspBenchmarkRulesStates } from '@kbn/cloud-security-posture-common'; export const buildMutedRulesFilter = ( rulesStates: CspBenchmarkRulesStates diff --git a/x-pack/plugins/cloud_security_posture/public/common/types.ts b/x-pack/plugins/cloud_security_posture/public/common/types.ts index 286541c56b70b5..44916b4c5b0199 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/types.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/types.ts @@ -6,7 +6,7 @@ */ import type { Criteria } from '@elastic/eui'; import type { Filter, Query, EsQueryConfig } from '@kbn/es-query'; -import { CspFinding } from '../../common/schemas/csp_finding'; +import { CspFinding } from '@kbn/cloud-security-posture'; export type FindingsGroupByKind = 'default' | 'resource'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/__mocks__/findings.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/__mocks__/findings.ts index 274d5a789b981e..ea94bf8f6c135e 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/__mocks__/findings.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/__mocks__/findings.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { CspFinding } from '../../../../common/schemas/csp_finding'; +import { CspFinding } from '@kbn/cloud-security-posture'; export const mockFindingsHit: CspFinding = { result: { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.handlers.mock.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.handlers.mock.ts index c5fb197583dd93..e9e370a6231a54 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.handlers.mock.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.handlers.mock.ts @@ -6,7 +6,7 @@ */ import { estypes } from '@elastic/elasticsearch'; -import { CspFinding } from '../../../common/schemas/csp_finding'; +import { CspFinding } from '@kbn/cloud-security-posture'; import { isArray } from 'lodash'; import { http, HttpResponse } from 'msw'; import { v4 as uuidV4 } from 'uuid'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_detection_rule_counter.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_detection_rule_counter.tsx index 0ab35a37c8ee48..64efbe102734bd 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_detection_rule_counter.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_detection_rule_counter.tsx @@ -7,7 +7,7 @@ import type { HttpSetup } from '@kbn/core/public'; import React from 'react'; -import { CspFinding } from '../../../../common/schemas/csp_finding'; +import { CspFinding } from '@kbn/cloud-security-posture'; import { DetectionRuleCounter } from '../../../components/detection_rule_counter'; import { getFindingsDetectionRuleSearchTags } from '../../../../common/utils/detection_rules'; import { createDetectionRuleFromBenchmarkRule } from '../utils/create_detection_rule_from_benchmark'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx index d51201c3c650f2..b299837e5b85a1 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx @@ -32,10 +32,10 @@ import { generatePath } from 'react-router-dom'; import { css } from '@emotion/react'; import { euiThemeVars } from '@kbn/ui-theme'; import { useKibana } from '@kbn/cloud-security-posture'; +import { CspFinding } from '@kbn/cloud-security-posture'; import { truthy } from '../../../../common/utils/helpers'; import { benchmarksNavigation } from '../../../common/navigation/constants'; import cisLogoIcon from '../../../assets/icons/cis_logo.svg'; -import { CspFinding } from '../../../../common/schemas/csp_finding'; import { CspEvaluationBadge } from '../../../components/csp_evaluation_badge'; import { TakeAction } from '../../../components/take_action'; import { TableTab } from './table_tab'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/json_tab.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/json_tab.tsx index 38697d3084f4ff..77a6f1d3718f5e 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/json_tab.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/json_tab.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { CodeEditor } from '@kbn/code-editor'; import { XJsonLang } from '@kbn/monaco'; -import { CspFinding } from '../../../../common/schemas/csp_finding'; +import { CspFinding } from '@kbn/cloud-security-posture'; const offsetTopHeight = 120; const offsetBottomHeight = 72; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/rule_tab.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/rule_tab.tsx index 9b7b400a581964..c124d668774028 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/rule_tab.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/rule_tab.tsx @@ -9,7 +9,7 @@ import { EuiBadge, EuiDescriptionList, EuiLink, EuiToolTip } from '@elastic/eui' import { i18n } from '@kbn/i18n'; import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; -import { CspFinding } from '../../../../common/schemas/csp_finding'; +import { CspFinding } from '@kbn/cloud-security-posture'; import { RulesDetectionRuleCounter } from '../../rules/rules_detection_rule_counter'; import { CisKubernetesIcons, CspFlyoutMarkdown } from './findings_flyout'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/table_tab.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/table_tab.tsx index 075291c434592e..21b5920c285a51 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/table_tab.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/table_tab.tsx @@ -15,7 +15,7 @@ import { import React from 'react'; import { getFlattenedObject } from '@kbn/std'; import { i18n } from '@kbn/i18n'; -import { CspFinding } from '../../../../common/schemas/csp_finding'; +import { CspFinding } from '@kbn/cloud-security-posture'; interface FlattenedItem { key: string; // flattened dot notation object path for CspFinding; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx index a93907825bc7d7..bedd0b60e29e13 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx @@ -11,6 +11,7 @@ import { DataTableRecord } from '@kbn/discover-utils/types'; import { HttpSetup } from '@kbn/core-http-browser'; import { i18n } from '@kbn/i18n'; import { EuiDataGridCellValueElementProps, EuiFlexItem, EuiSpacer } from '@elastic/eui'; +import { CspFinding } from '@kbn/cloud-security-posture'; import * as TEST_SUBJECTS from '../test_subjects'; import { FindingsDistributionBar } from '../layout/findings_distribution_bar'; import { ErrorCallout } from '../layout/error_callout'; @@ -19,7 +20,6 @@ import { getDefaultQuery, defaultColumns } from './constants'; import { useLatestFindingsTable } from './use_latest_findings_table'; import { TimestampTableCell } from '../../../components/timestamp_table_cell'; import { CspEvaluationBadge } from '../../../components/csp_evaluation_badge'; -import { CspFinding } from '../../../../common/schemas/csp_finding'; import { FindingsRuleFlyout } from '../findings_flyout/findings_flyout'; import { createDetectionRuleFromBenchmarkRule } from '../utils/create_detection_rule_from_benchmark'; import { findingsTableFieldLabels } from './findings_table_field_labels'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts index 128828815495e9..d17e536a714669 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts @@ -7,7 +7,7 @@ import { useQuery } from '@tanstack/react-query'; import { useKibana } from '@kbn/cloud-security-posture'; -import { CspBenchmarkRulesStates } from '../../../../common/types/latest'; +import { CspBenchmarkRulesStates } from '@kbn/cloud-security-posture-common'; import { CSP_GET_BENCHMARK_RULES_STATE_API_CURRENT_VERSION, CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH, diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts index d45a1d0b1950e6..6f9c201013054e 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts @@ -28,7 +28,7 @@ import { useKibana, CspFinding, } from '@kbn/cloud-security-posture'; -// import { CspFinding } from '../../../../common/schemas/csp_finding'; +// import { CspFinding } from '../../../../common/schemas/csp_finding'; HERE // import { useKibana } from '../../../common/hooks/use_kibana'; DONE // import type { FindingsBaseEsQuery } from '../../../common/types'; DONE // import { getAggregationCount, getFindingsCountAggQuery } from '../utils/utils'; DONE @@ -39,7 +39,7 @@ import { // import { MAX_FINDINGS_TO_LOAD } from '../../../common/constants'; DONE // import { showErrorToast } from '../../../common/utils/show_error_toast'; DONE // import { useGetCspBenchmarkRulesStatesApi } from './use_get_benchmark_rules_state_api'; //DONE -// import { CspBenchmarkRulesStates } from '../../../../common/types/latest'; HERE +// import { CspBenchmarkRulesStates } from '../../../../common/types/latest'; DONE // import { buildMutedRulesFilter } from '../../../../common/utils/rules_states'; DONE interface UseFindingsOptions extends FindingsBaseEsQuery { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/generate_findings_tags.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/generate_findings_tags.ts index 66da177e1cea88..b0803da83d07f0 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/generate_findings_tags.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/generate_findings_tags.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { CspFinding } from '../../../../common/schemas/csp_finding'; +import { CspFinding } from '@kbn/cloud-security-posture'; const CSP_RULE_TAG = 'Cloud Security'; const CNVM_RULE_TAG_USE_CASE = 'Use Case: Configuration Audit'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts index dd903960fa67a2..3c987dffaff571 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts @@ -6,7 +6,7 @@ */ import { EuiThemeComputed } from '@elastic/eui'; -import type { CspFinding } from '../../../../common/schemas/csp_finding'; +import { CspFinding } from '@kbn/cloud-security-posture'; export { getFilters } from './get_filters'; export const getFindingsPageSizeInfo = ({ diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts index 55de90404de81b..b4ba88e37133a3 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts @@ -7,7 +7,7 @@ import { useQuery } from '@tanstack/react-query'; import { useKibana } from '@kbn/cloud-security-posture'; -import { CspBenchmarkRulesStates } from '../../../common/types/latest'; +import { CspBenchmarkRulesStates } from '@kbn/cloud-security-posture-common'; import { CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH } from '../../../common/constants'; export const CSP_RULES_STATES_QUERY_KEY = ['csp_rules_states_v1']; diff --git a/x-pack/plugins/cloud_security_posture/public/test/fixtures/findings_fixture.ts b/x-pack/plugins/cloud_security_posture/public/test/fixtures/findings_fixture.ts index 66c0f6f20328a0..d9d886d02e70b3 100644 --- a/x-pack/plugins/cloud_security_posture/public/test/fixtures/findings_fixture.ts +++ b/x-pack/plugins/cloud_security_posture/public/test/fixtures/findings_fixture.ts @@ -7,7 +7,7 @@ import { EcsEvent } from '@elastic/ecs'; import Chance from 'chance'; -import { CspFinding } from '../../../common/schemas/csp_finding'; +import { CspFinding } from '@kbn/cloud-security-posture'; const chance = new Chance(); diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts index df5db4cb2e1ab1..7b4732eee4fc2c 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/bulk_action/utils.ts @@ -8,10 +8,10 @@ import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import type { FindResult, RulesClient } from '@kbn/alerting-plugin/server'; import type { RuleParams } from '@kbn/alerting-plugin/server/application/rule/types'; +import { CspBenchmarkRulesStates } from '@kbn/cloud-security-posture-common'; import type { CspBenchmarkRule, RulesToUpdate, - CspBenchmarkRulesStates, CspSettings, } from '../../../../common/types/rules/v4'; import { diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts index a55bcd92ab3c81..76b3b3b53a6954 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts @@ -6,9 +6,9 @@ */ import { transformError } from '@kbn/securitysolution-es-utils'; +import { CspBenchmarkRulesStates } from '@kbn/cloud-security-posture-common'; import { CspRouter } from '../../../types'; import { CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH } from '../../../../common/constants'; -import { CspBenchmarkRulesStates } from '../../../../common/types/rules/v4'; import { getCspBenchmarkRulesStatesHandler } from './v1'; export const defineGetCspBenchmarkRulesStatesRoute = (router: CspRouter) => diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts index 3173e6cc92ed7a..7fcce039368ea4 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/v1.ts @@ -11,7 +11,8 @@ import { import { transformError } from '@kbn/securitysolution-es-utils'; import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { buildMutedRulesFilter } from '@kbn/cloud-security-posture-common'; -import { CspBenchmarkRulesStates, CspSettings } from '../../../../common/types/rules/v4'; +import { CspBenchmarkRulesStates } from '@kbn/cloud-security-posture-common'; +import { CspSettings } from '../../../../common/types/rules/v4'; import { INTERNAL_CSP_SETTINGS_SAVED_OBJECT_ID, INTERNAL_CSP_SETTINGS_SAVED_OBJECT_TYPE, diff --git a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts b/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts index e7938636213409..b708f266d3501c 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts @@ -15,7 +15,9 @@ import type { } from '@elastic/elasticsearch/lib/api/types'; import type { Logger } from '@kbn/core/server'; import { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/types'; + import { CspFinding } from '../../../common/schemas/csp_finding'; +// import { CspFinding } from '@kbn/cloud-security-posture'; TODO import type { Cluster } from '../../../common/types_old'; import { getPostureStatsFromAggs, failedFindingsAggQuery } from './get_grouped_findings_evaluation'; import type { FailedFindingsQueryResult } from './get_grouped_findings_evaluation'; From 0dc7f8485ddae500f4faac57671ab2e36fe88413 Mon Sep 17 00:00:00 2001 From: animehart Date: Thu, 8 Aug 2024 17:30:48 -0700 Subject: [PATCH 12/33] updated i18n.json --- x-pack/.i18nrc.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/x-pack/.i18nrc.json b/x-pack/.i18nrc.json index 7ff0f3e3ef7667..b31bbdcb0e0bd5 100644 --- a/x-pack/.i18nrc.json +++ b/x-pack/.i18nrc.json @@ -22,7 +22,11 @@ "xpack.cloudDefend": "plugins/cloud_defend", "xpack.cloudLinks": "plugins/cloud_integrations/cloud_links", "xpack.cloudDataMigration": "plugins/cloud_integrations/cloud_data_migration", - "xpack.csp": "plugins/cloud_security_posture", + "xpack.csp": [ + "plugins/cloud_security_posture", + "packages/kbn-cloud-security-posture-common", + "packages/kbn-cloud-security-posture/" + ], "xpack.customBranding": "plugins/custom_branding", "xpack.dashboard": "plugins/dashboard_enhanced", "xpack.dataQuality": "plugins/data_quality", From d3ef3de67e61a8dd7a5a4032c5d543af175c3832 Mon Sep 17 00:00:00 2001 From: animehart Date: Thu, 8 Aug 2024 18:03:39 -0700 Subject: [PATCH 13/33] fix i18n --- x-pack/.i18nrc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/.i18nrc.json b/x-pack/.i18nrc.json index b31bbdcb0e0bd5..97a7a92c93b5af 100644 --- a/x-pack/.i18nrc.json +++ b/x-pack/.i18nrc.json @@ -25,7 +25,7 @@ "xpack.csp": [ "plugins/cloud_security_posture", "packages/kbn-cloud-security-posture-common", - "packages/kbn-cloud-security-posture/" + "packages/kbn-cloud-security-posture" ], "xpack.customBranding": "plugins/custom_branding", "xpack.dashboard": "plugins/dashboard_enhanced", From 846ee3d0733584a6d98a5a590a6e5e102afc6928 Mon Sep 17 00:00:00 2001 From: animehart Date: Thu, 8 Aug 2024 19:30:18 -0700 Subject: [PATCH 14/33] updated package.json --- .../package.json | 5 +-- .../kbn-cloud-security-posture/package.json | 5 +-- .../pages/rules/use_csp_integration.tsx | 35 ------------------- 3 files changed, 2 insertions(+), 43 deletions(-) delete mode 100644 x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_integration.tsx diff --git a/x-pack/packages/kbn-cloud-security-posture-common/package.json b/x-pack/packages/kbn-cloud-security-posture-common/package.json index 14417b1292cd59..9010e267fe5d05 100644 --- a/x-pack/packages/kbn-cloud-security-posture-common/package.json +++ b/x-pack/packages/kbn-cloud-security-posture-common/package.json @@ -3,8 +3,5 @@ "private": true, "version": "1.0.0", "license": "Elastic License 2.0", - "description": "Shared components for cloud security posture, both client and server side", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - } + "description": "Shared components for cloud security posture, both client and server side" } \ No newline at end of file diff --git a/x-pack/packages/kbn-cloud-security-posture/package.json b/x-pack/packages/kbn-cloud-security-posture/package.json index cdadfe10635751..b0b48d2fb9a177 100644 --- a/x-pack/packages/kbn-cloud-security-posture/package.json +++ b/x-pack/packages/kbn-cloud-security-posture/package.json @@ -3,8 +3,5 @@ "private": true, "version": "1.0.0", "license": "Elastic License 2.0", - "description": "Shared components for cloud security posture, client side", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - } + "description": "Shared components for cloud security posture, client side" } \ No newline at end of file diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_integration.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_integration.tsx deleted file mode 100644 index 341d55c4c2ad26..00000000000000 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_integration.tsx +++ /dev/null @@ -1,35 +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 { useQuery } from '@tanstack/react-query'; -import { - type CopyAgentPolicyResponse, - type GetOnePackagePolicyResponse, - packagePolicyRouteService, - agentPolicyRouteService, - API_VERSIONS, -} from '@kbn/fleet-plugin/common'; -import { useKibana } from '@kbn/cloud-security-posture'; -import { PageUrlParams } from '../../../common/types/rules/v3'; - -export const useCspIntegrationInfo = ({ packagePolicyId, policyId }: PageUrlParams) => { - const { http } = useKibana().services; - - return useQuery(['cspBenchmarkRuleInfo', { packagePolicyId, policyId }], () => - Promise.all([ - http - .get(packagePolicyRouteService.getInfoPath(packagePolicyId), { - version: API_VERSIONS.public.v1, - }) - .then((response) => response.item), - http - .get(agentPolicyRouteService.getInfoPath(policyId), { - version: API_VERSIONS.public.v1, - }) - .then((response) => response.item), - ]) - ); -}; From da6927207c06ad512d1d5849b3727186a8dd3e2f Mon Sep 17 00:00:00 2001 From: animehart Date: Fri, 9 Aug 2024 12:47:13 -0700 Subject: [PATCH 15/33] more refactor --- x-pack/packages/kbn-cloud-security-posture/kibana.jsonc | 2 +- x-pack/plugins/cloud_security_posture/common/types_old.ts | 3 +-- .../public/common/api/use_cis_kubernetes_integration.tsx | 2 +- .../common/api/use_license_management_locator_api.tsx | 2 +- .../public/common/api/use_stats_api.ts | 2 +- .../public/common/api/use_vulnerability_dashboard_api.ts | 2 +- .../hooks/use_cloud_posture_data_table/use_base_es_query.ts | 2 +- .../use_cloud_posture_data_table/use_persisted_query.ts | 2 +- .../public/common/hooks/use_kibana.ts | 1 + .../public/common/hooks/use_navigate_findings.ts | 1 + .../public/common/hooks/use_subscription_status.ts | 2 +- .../public/common/navigation/use_csp_integration_link.ts | 2 +- .../navigation/use_navigate_to_cis_integration_policies.ts | 2 +- .../public/pages/rules/rules_flyout.tsx | 3 ++- .../server/routes/compliance_dashboard/get_clusters.ts | 3 +-- .../insight_entity/misconfigurations_overview.test.tsx | 6 ------ 16 files changed, 16 insertions(+), 21 deletions(-) diff --git a/x-pack/packages/kbn-cloud-security-posture/kibana.jsonc b/x-pack/packages/kbn-cloud-security-posture/kibana.jsonc index 4c5a4f1f0165df..e922de1cc31c2f 100644 --- a/x-pack/packages/kbn-cloud-security-posture/kibana.jsonc +++ b/x-pack/packages/kbn-cloud-security-posture/kibana.jsonc @@ -1,5 +1,5 @@ { "id": "@kbn/cloud-security-posture", "owner": "@elastic/kibana-cloud-security-posture", - "type": "shared-browser" + "type": "shared-common" } \ No newline at end of file diff --git a/x-pack/plugins/cloud_security_posture/common/types_old.ts b/x-pack/plugins/cloud_security_posture/common/types_old.ts index ddaf8ffbcd5426..008a84efd46672 100644 --- a/x-pack/plugins/cloud_security_posture/common/types_old.ts +++ b/x-pack/plugins/cloud_security_posture/common/types_old.ts @@ -5,8 +5,7 @@ * 2.0. */ import { type TypeOf } from '@kbn/config-schema'; -import { CspFinding } from './schemas/csp_finding'; -// import { CspFinding } from '@kbn/cloud-security-posture';TODO +import { CspFinding } from '@kbn/cloud-security-posture'; import { SUPPORTED_CLOUDBEAT_INPUTS, SUPPORTED_POLICY_TEMPLATES } from './constants'; import { getComplianceDashboardSchema } from './schemas/stats'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx b/x-pack/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx index e5f226a3c33524..910b7559635f84 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx @@ -12,8 +12,8 @@ import { type DefaultPackagesInstallationError, API_VERSIONS, } from '@kbn/fleet-plugin/common'; +import { useKibana } from '@kbn/cloud-security-posture'; import { CLOUD_SECURITY_POSTURE_PACKAGE_NAME } from '../../../common/constants'; -import { useKibana } from '../hooks/use_kibana'; /** * This hook will find our cis integration and return its PackageInfo diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx b/x-pack/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx index cbfd64b8e60a8a..c97251a904861e 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { useKibana } from '../hooks/use_kibana'; +import { useKibana } from '@kbn/cloud-security-posture'; const LICENSE_MANAGEMENT_LOCATOR = 'LICENSE_MANAGEMENT_LOCATOR'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts b/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts index e973633210d9c5..8d10ec66d8a5ef 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts @@ -6,7 +6,7 @@ */ import { useQuery, UseQueryOptions } from '@tanstack/react-query'; -import { useKibana } from '../hooks/use_kibana'; +import { useKibana } from '@kbn/cloud-security-posture'; import { ComplianceDashboardDataV2, PosturePolicyTemplate } from '../../../common/types_old'; import { CSPM_POLICY_TEMPLATE, diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts b/x-pack/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts index 4114a49cdf1818..377736ee65ef5b 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts @@ -6,8 +6,8 @@ */ import { useQuery, UseQueryOptions } from '@tanstack/react-query'; +import { useKibana } from '@kbn/cloud-security-posture'; import { CnvmDashboardData } from '../../../common/types_old'; -import { useKibana } from '../hooks/use_kibana'; import { VULNERABILITIES_DASHBOARD_ROUTE_PATH } from '../../../common/constants'; const cnvmKey = 'use-vulnerability-dashboard-api-key'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts index 9d5f5f2bf268d7..70201a2fdb6355 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts @@ -9,9 +9,9 @@ import { DataView } from '@kbn/data-views-plugin/common'; import { buildEsQuery, EsQueryConfig } from '@kbn/es-query'; import { i18n } from '@kbn/i18n'; import { useEffect, useMemo } from 'react'; +import { useKibana } from '@kbn/cloud-security-posture'; import { useDataViewContext } from '../../contexts/data_view_context'; import { FindingsBaseESQueryConfig, FindingsBaseURLQuery } from '../../types'; -import { useKibana } from '../use_kibana'; const getBaseQuery = ({ dataView, diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts index c3731c0139ce33..430a0a0858a4a8 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts @@ -7,8 +7,8 @@ import { useCallback } from 'react'; import { type Query } from '@kbn/es-query'; +import { useKibana } from '@kbn/cloud-security-posture'; import { FindingsBaseURLQuery } from '../../types'; -import { useKibana } from '../use_kibana'; export const usePersistedQuery = (getter: ({ filters, query }: FindingsBaseURLQuery) => T) => { const { diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_kibana.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_kibana.ts index 1c6f252080e11c..ef39d8e5271660 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_kibana.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_kibana.ts @@ -5,6 +5,7 @@ * 2.0. */ +// export { useKibana } from '@kbn/cloud-security-posture'; import type { CoreStart } from '@kbn/core/public'; import { useKibana as useKibanaBase } from '@kbn/kibana-react-plugin/public'; import type { CspClientPluginStartDeps } from '../../types'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.ts index 633d280b0654ff..1c3940f1caf7d6 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.ts @@ -8,6 +8,7 @@ import { useCallback } from 'react'; import { useHistory } from 'react-router-dom'; import { Filter } from '@kbn/es-query'; +// import { useKibana } from '@kbn/cloud-security-posture'; WHY import { LATEST_FINDINGS_INDEX_PATTERN, SECURITY_DEFAULT_DATA_VIEW_ID, diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts index f8bda84dbcb656..eccfae6f104710 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts @@ -6,9 +6,9 @@ */ import { useContext } from 'react'; import { useQuery } from '@tanstack/react-query'; +import { useKibana } from '@kbn/cloud-security-posture'; import { SetupContext } from '../../application/setup_context'; import { isSubscriptionAllowed } from '../../../common/utils/subscription'; -import { useKibana } from './use_kibana'; const SUBSCRIPTION_QUERY_KEY = 'csp_subscription_query_key'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts b/x-pack/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts index 1dac88397e8be7..c378df68ad41cb 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts @@ -6,9 +6,9 @@ */ import { pagePathGetters, pkgKeyFromPackageInfo } from '@kbn/fleet-plugin/public'; +import { useKibana } from '@kbn/cloud-security-posture'; import type { CloudSecurityPolicyTemplate } from '../../../common/types_old'; import { useCisKubernetesIntegration } from '../api/use_cis_kubernetes_integration'; -import { useKibana } from '../hooks/use_kibana'; export const useCspIntegrationLink = ( policyTemplate: CloudSecurityPolicyTemplate diff --git a/x-pack/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts b/x-pack/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts index 85e4796743cf36..061dd0adb5d576 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts @@ -6,8 +6,8 @@ */ import { pagePathGetters, pkgKeyFromPackageInfo } from '@kbn/fleet-plugin/public'; +import { useKibana } from '@kbn/cloud-security-posture'; import { useCisKubernetesIntegration } from '../api/use_cis_kubernetes_integration'; -import { useKibana } from '../hooks/use_kibana'; import { useCspBenchmarkIntegrationsV1 } from '../../pages/benchmarks/use_csp_benchmark_integrations'; import { PostureTypes } from '../../../common/types_old'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx index 890c1be311a646..bd39650ce980d6 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx @@ -23,7 +23,7 @@ import { import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { HttpSetup } from '@kbn/core/public'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { getFindingsDetectionRuleSearchTags } from '../../../common/utils/detection_rules'; import { CspBenchmarkRuleMetadata } from '../../../common/types/latest'; import { getRuleList } from '../configurations/findings_flyout/rule_tab'; @@ -37,6 +37,7 @@ import { } from '../../components/take_action'; import { useFetchDetectionRulesByTags } from '../../common/api/use_fetch_detection_rules_by_tags'; import { createDetectionRuleFromBenchmarkRule } from '../configurations/utils/create_detection_rule_from_benchmark'; +import { useKibana } from '../../common/hooks/use_kibana'; export const RULES_FLYOUT_SWITCH_BUTTON = 'rule-flyout-switch-button'; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts b/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts index b708f266d3501c..6917e1def20582 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts @@ -16,8 +16,7 @@ import type { import type { Logger } from '@kbn/core/server'; import { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/types'; -import { CspFinding } from '../../../common/schemas/csp_finding'; -// import { CspFinding } from '@kbn/cloud-security-posture'; TODO +import { CspFinding } from '@kbn/cloud-security-posture'; import type { Cluster } from '../../../common/types_old'; import { getPostureStatsFromAggs, failedFindingsAggQuery } from './get_grouped_findings_evaluation'; import type { FailedFindingsQueryResult } from './get_grouped_findings_evaluation'; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.test.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.test.tsx index 2b755e19108eb2..4e351dc1fa42a8 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.test.tsx @@ -20,12 +20,6 @@ describe('MisconfigurationsOverview', () => { const { queryByTestId } = render(, { wrapper: TestProviders, }); - expect( - queryByTestId('securitySolutionFlyoutInsightsMisconfigurationsTitleIcon') - ).toBeInTheDocument(); - expect( - queryByTestId('securitySolutionFlyoutInsightsMisconfigurationsTitleText') - ).toBeInTheDocument(); expect( queryByTestId('securitySolutionFlyoutInsightsMisconfigurationsContent') ).toBeInTheDocument(); From 041dd9235c01500c0bda926f98253dc07deea0d2 Mon Sep 17 00:00:00 2001 From: animehart Date: Fri, 9 Aug 2024 13:28:03 -0700 Subject: [PATCH 16/33] update --- x-pack/plugins/cloud_security_posture/public/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/x-pack/plugins/cloud_security_posture/public/index.ts b/x-pack/plugins/cloud_security_posture/public/index.ts index 519de009a4d46c..64301add72ca33 100755 --- a/x-pack/plugins/cloud_security_posture/public/index.ts +++ b/x-pack/plugins/cloud_security_posture/public/index.ts @@ -10,7 +10,6 @@ export type { CspSecuritySolutionContext } from './types'; export { CLOUD_SECURITY_POSTURE_BASE_PATH } from './common/navigation/constants'; export type { CloudSecurityPosturePageId } from './common/navigation/types'; export { getSecuritySolutionLink } from './common/navigation/security_solution_links'; -export { useLatestFindings } from './pages/configurations/latest_findings/use_latest_findings'; export type { CspClientPluginSetup, CspClientPluginStart } from './types'; From eb51a725e14e3967048e454427e2c1a14ae0573a Mon Sep 17 00:00:00 2001 From: animehart Date: Fri, 9 Aug 2024 15:37:52 -0700 Subject: [PATCH 17/33] more refactor --- .../index.ts | 1 + .../schema/csp_finding.ts | 113 ++++++++++++++++++ .../kbn-cloud-security-posture/kibana.jsonc | 2 +- .../src/hooks/use_misconfiguration_preview.ts | 2 +- .../common/types_old.ts | 2 +- .../public/common/hooks/use_kibana.ts | 1 - .../common/hooks/use_navigate_findings.ts | 1 - .../configurations/__mocks__/findings.ts | 2 +- .../configurations.handlers.mock.ts | 2 +- .../findings_detection_rule_counter.tsx | 2 +- .../findings_flyout/json_tab.tsx | 2 +- .../findings_flyout/overview_tab.tsx | 2 +- .../findings_flyout/rule_tab.tsx | 2 +- .../findings_flyout/table_tab.tsx | 2 +- .../latest_findings/latest_findings_table.tsx | 2 +- .../utils/generate_findings_tags.ts | 2 +- .../compliance_dashboard/get_clusters.ts | 2 +- 17 files changed, 127 insertions(+), 15 deletions(-) create mode 100644 x-pack/packages/kbn-cloud-security-posture-common/schema/csp_finding.ts diff --git a/x-pack/packages/kbn-cloud-security-posture-common/index.ts b/x-pack/packages/kbn-cloud-security-posture-common/index.ts index ed1f8f73cd084d..8c7fa7b7bc9f15 100644 --- a/x-pack/packages/kbn-cloud-security-posture-common/index.ts +++ b/x-pack/packages/kbn-cloud-security-posture-common/index.ts @@ -5,6 +5,7 @@ * 2.0. */ export * from './constants'; +export * from './schema/csp_finding'; export type { CspBenchmarkRulesStates } from './types/latest'; export { showErrorToast } from './utils/show_error_toast'; export { buildMutedRulesFilter } from './utils/helpers'; diff --git a/x-pack/packages/kbn-cloud-security-posture-common/schema/csp_finding.ts b/x-pack/packages/kbn-cloud-security-posture-common/schema/csp_finding.ts new file mode 100644 index 00000000000000..a2d5e6d6256564 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture-common/schema/csp_finding.ts @@ -0,0 +1,113 @@ +/* + * 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 { EcsDataStream, EcsEvent } from '@elastic/ecs'; +import { TypeOf, schema } from '@kbn/config-schema'; +import { CSPM_POLICY_TEMPLATE, KSPM_POLICY_TEMPLATE } from '../constants'; + +export type CspBenchmarkRuleMetadata = TypeOf; + +export const cspBenchmarkRuleMetadataSchema = schema.object({ + audit: schema.string(), + benchmark: schema.object({ + name: schema.string(), + posture_type: schema.maybe( + schema.oneOf([schema.literal(CSPM_POLICY_TEMPLATE), schema.literal(KSPM_POLICY_TEMPLATE)]) + ), + id: schema.string(), + version: schema.string(), + rule_number: schema.maybe(schema.string()), + }), + default_value: schema.maybe(schema.string()), + description: schema.string(), + id: schema.string(), + impact: schema.maybe(schema.string()), + name: schema.string(), + profile_applicability: schema.string(), + rationale: schema.string(), + references: schema.maybe(schema.string()), + rego_rule_id: schema.string(), + remediation: schema.string(), + section: schema.string(), + tags: schema.arrayOf(schema.string()), + version: schema.string(), +}); + +export interface CspFinding { + '@timestamp': string; + cluster_id?: string; + orchestrator?: CspFindingOrchestrator; + cloud?: CspFindingCloud; // only available on CSPM findings + result: CspFindingResult; + resource: CspFindingResource; + rule: CspBenchmarkRuleMetadata; + host: CspFindingHost; + event: EcsEvent; + data_stream: EcsDataStream; + agent: CspFindingAgent; + ecs: { + version: string; + }; +} + +interface CspFindingOrchestrator { + cluster?: { + id?: string; + name?: string; + }; +} + +interface CspFindingCloud { + provider: 'aws' | 'azure' | 'gcp'; + account: { + name: string; + id: string; + }; + region?: string; +} + +interface CspFindingResult { + evaluation: 'passed' | 'failed'; + expected?: Record; + evidence: Record; +} + +interface CspFindingResource { + name: string; + sub_type: string; + raw: object; + id: string; + type: string; + [other_keys: string]: unknown; +} + +interface CspFindingHost { + id: string; + containerized: boolean; + ip: string[]; + mac: string[]; + name: string; + hostname: string; + architecture: string; + os: { + kernel: string; + codename: string; + type: string; + platform: string; + version: string; + family: string; + name: string; + }; + [other_keys: string]: unknown; +} + +interface CspFindingAgent { + version: string; + // ephemeral_id: string; + id: string; + name: string; + type: string; +} diff --git a/x-pack/packages/kbn-cloud-security-posture/kibana.jsonc b/x-pack/packages/kbn-cloud-security-posture/kibana.jsonc index e922de1cc31c2f..4c5a4f1f0165df 100644 --- a/x-pack/packages/kbn-cloud-security-posture/kibana.jsonc +++ b/x-pack/packages/kbn-cloud-security-posture/kibana.jsonc @@ -1,5 +1,5 @@ { "id": "@kbn/cloud-security-posture", "owner": "@elastic/kibana-cloud-security-posture", - "type": "shared-common" + "type": "shared-browser" } \ No newline at end of file diff --git a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts index 53dfbd972fbbbe..9bb18660d7cc3d 100644 --- a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts +++ b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts @@ -17,10 +17,10 @@ import { LATEST_FINDINGS_RETENTION_POLICY, MAX_FINDINGS_TO_LOAD, CspBenchmarkRulesStates, + CspFinding, } from '@kbn/cloud-security-posture-common'; import { showErrorToast, buildMutedRulesFilter } from '@kbn/cloud-security-posture-common'; import type { FindingsBaseEsQuery } from '../../type'; -import { CspFinding } from '../schema/csp_finding'; import { getAggregationCount, getFindingsCountAggQuery } from '../utils/utils'; import { useGetCspBenchmarkRulesStatesApi } from './use_get_benchmark_rules_state_api'; import { useKibana } from './use_kibana'; diff --git a/x-pack/plugins/cloud_security_posture/common/types_old.ts b/x-pack/plugins/cloud_security_posture/common/types_old.ts index 008a84efd46672..0d7a8768d9d940 100644 --- a/x-pack/plugins/cloud_security_posture/common/types_old.ts +++ b/x-pack/plugins/cloud_security_posture/common/types_old.ts @@ -5,7 +5,7 @@ * 2.0. */ import { type TypeOf } from '@kbn/config-schema'; -import { CspFinding } from '@kbn/cloud-security-posture'; +import { CspFinding } from '@kbn/cloud-security-posture-common'; import { SUPPORTED_CLOUDBEAT_INPUTS, SUPPORTED_POLICY_TEMPLATES } from './constants'; import { getComplianceDashboardSchema } from './schemas/stats'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_kibana.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_kibana.ts index ef39d8e5271660..1c6f252080e11c 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_kibana.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_kibana.ts @@ -5,7 +5,6 @@ * 2.0. */ -// export { useKibana } from '@kbn/cloud-security-posture'; import type { CoreStart } from '@kbn/core/public'; import { useKibana as useKibanaBase } from '@kbn/kibana-react-plugin/public'; import type { CspClientPluginStartDeps } from '../../types'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.ts index 1c3940f1caf7d6..633d280b0654ff 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.ts @@ -8,7 +8,6 @@ import { useCallback } from 'react'; import { useHistory } from 'react-router-dom'; import { Filter } from '@kbn/es-query'; -// import { useKibana } from '@kbn/cloud-security-posture'; WHY import { LATEST_FINDINGS_INDEX_PATTERN, SECURITY_DEFAULT_DATA_VIEW_ID, diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/__mocks__/findings.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/__mocks__/findings.ts index 9dacab284b4fd5..296310f5c0d0bb 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/__mocks__/findings.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/__mocks__/findings.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { CspFinding } from '@kbn/cloud-security-posture'; +import { CspFinding } from '@kbn/cloud-security-posture-common'; export const mockFindingsHit: CspFinding = { result: { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.handlers.mock.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.handlers.mock.ts index 05f30ed75817fe..475763db96147b 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.handlers.mock.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.handlers.mock.ts @@ -6,7 +6,7 @@ */ import { estypes } from '@elastic/elasticsearch'; -import { CspFinding } from '@kbn/cloud-security-posture'; +import { CspFinding } from '@kbn/cloud-security-posture-common'; import { isArray } from 'lodash'; import { http, HttpResponse } from 'msw'; import { v4 as uuidV4 } from 'uuid'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_detection_rule_counter.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_detection_rule_counter.tsx index 64efbe102734bd..56a69154867b37 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_detection_rule_counter.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_detection_rule_counter.tsx @@ -7,7 +7,7 @@ import type { HttpSetup } from '@kbn/core/public'; import React from 'react'; -import { CspFinding } from '@kbn/cloud-security-posture'; +import { CspFinding } from '@kbn/cloud-security-posture-common'; import { DetectionRuleCounter } from '../../../components/detection_rule_counter'; import { getFindingsDetectionRuleSearchTags } from '../../../../common/utils/detection_rules'; import { createDetectionRuleFromBenchmarkRule } from '../utils/create_detection_rule_from_benchmark'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/json_tab.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/json_tab.tsx index 47f99f14ab7dbb..df0e4cda904b78 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/json_tab.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/json_tab.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { CodeEditor } from '@kbn/code-editor'; import { XJsonLang } from '@kbn/monaco'; -import { CspFinding } from '@kbn/cloud-security-posture'; +import { CspFinding } from '@kbn/cloud-security-posture-common'; export const JsonTab = ({ data }: { data: CspFinding }) => (
diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx index bafa015522654b..a8759dfbe5a22e 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx @@ -21,7 +21,7 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { isEmpty } from 'lodash'; import { useKibana } from '@kbn/cloud-security-posture'; -import { CspFinding } from '@kbn/cloud-security-posture'; +import { CspFinding } from '@kbn/cloud-security-posture-common'; import { getDatasetDisplayName } from '../../../common/utils/get_dataset_display_name'; import { truthy } from '../../../../common/utils/helpers'; import { CSP_MOMENT_FORMAT } from '../../../common/constants'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/rule_tab.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/rule_tab.tsx index 4d6bd601c500ed..6d1f9fe164df76 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/rule_tab.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/rule_tab.tsx @@ -9,7 +9,7 @@ import { EuiBadge, EuiDescriptionList } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; -import { CspFinding } from '@kbn/cloud-security-posture'; +import { CspFinding } from '@kbn/cloud-security-posture-common'; import { RulesDetectionRuleCounter } from '../../rules/rules_detection_rule_counter'; import { BenchmarkIcons, CspFlyoutMarkdown, EMPTY_VALUE, RuleNameLink } from './findings_flyout'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/table_tab.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/table_tab.tsx index 21b5920c285a51..1beeb8b662d7a0 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/table_tab.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/table_tab.tsx @@ -15,7 +15,7 @@ import { import React from 'react'; import { getFlattenedObject } from '@kbn/std'; import { i18n } from '@kbn/i18n'; -import { CspFinding } from '@kbn/cloud-security-posture'; +import { CspFinding } from '@kbn/cloud-security-posture-common'; interface FlattenedItem { key: string; // flattened dot notation object path for CspFinding; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx index 88977f92c47815..6641fcfbc980cd 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/latest_findings_table.tsx @@ -11,7 +11,7 @@ import { DataTableRecord } from '@kbn/discover-utils/types'; import { HttpSetup } from '@kbn/core-http-browser'; import { i18n } from '@kbn/i18n'; import { EuiDataGridCellValueElementProps, EuiFlexItem, EuiSpacer } from '@elastic/eui'; -import { CspFinding } from '@kbn/cloud-security-posture'; +import { CspFinding } from '@kbn/cloud-security-posture-common'; import { getDatasetDisplayName } from '../../../common/utils/get_dataset_display_name'; import * as TEST_SUBJECTS from '../test_subjects'; import { FindingsDistributionBar } from '../layout/findings_distribution_bar'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/generate_findings_tags.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/generate_findings_tags.ts index b0803da83d07f0..d35c45e67fa4da 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/generate_findings_tags.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/generate_findings_tags.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { CspFinding } from '@kbn/cloud-security-posture'; +import { CspFinding } from '@kbn/cloud-security-posture-common'; const CSP_RULE_TAG = 'Cloud Security'; const CNVM_RULE_TAG_USE_CASE = 'Use Case: Configuration Audit'; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts b/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts index 6917e1def20582..f38e00d3df304e 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/compliance_dashboard/get_clusters.ts @@ -16,7 +16,7 @@ import type { import type { Logger } from '@kbn/core/server'; import { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/types'; -import { CspFinding } from '@kbn/cloud-security-posture'; +import { CspFinding } from '@kbn/cloud-security-posture-common'; import type { Cluster } from '../../../common/types_old'; import { getPostureStatsFromAggs, failedFindingsAggQuery } from './get_grouped_findings_evaluation'; import type { FailedFindingsQueryResult } from './get_grouped_findings_evaluation'; From a37189367ae1e2694561130f03865fb56787a9aa Mon Sep 17 00:00:00 2001 From: animehart Date: Fri, 9 Aug 2024 18:03:34 -0700 Subject: [PATCH 18/33] clean up --- .../kbn-cloud-security-posture/index.ts | 1 - .../src/schema/csp_finding.ts | 113 ------------------ .../common/constants.ts | 5 - .../common/schemas/csp_finding.ts | 86 ------------- .../common/types/rules/v4.ts | 3 +- .../common/utils/rules_states.ts | 25 ---- .../public/common/constants.ts | 1 - .../public/common/types.ts | 6 - .../public/common/utils/show_error_toast.ts | 22 ---- .../use_get_benchmark_rules_state_api.ts | 25 ---- .../latest_findings/use_latest_findings.ts | 15 +-- .../pages/configurations/utils/utils.ts | 25 ---- 12 files changed, 2 insertions(+), 325 deletions(-) delete mode 100644 x-pack/packages/kbn-cloud-security-posture/src/schema/csp_finding.ts delete mode 100644 x-pack/plugins/cloud_security_posture/common/schemas/csp_finding.ts delete mode 100644 x-pack/plugins/cloud_security_posture/public/common/utils/show_error_toast.ts delete mode 100644 x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts delete mode 100644 x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/index.ts b/x-pack/packages/kbn-cloud-security-posture/index.ts index d77b369f380dd8..a0c0b592b55593 100644 --- a/x-pack/packages/kbn-cloud-security-posture/index.ts +++ b/x-pack/packages/kbn-cloud-security-posture/index.ts @@ -6,7 +6,6 @@ */ export * from './type'; -export * from './src/schema/csp_finding'; export { useMisconfigurationPreview } from './src/hooks/use_misconfiguration_preview'; export { useGetCspBenchmarkRulesStatesApi } from './src/hooks/use_get_benchmark_rules_state_api'; export { useKibana } from './src/hooks/use_kibana'; diff --git a/x-pack/packages/kbn-cloud-security-posture/src/schema/csp_finding.ts b/x-pack/packages/kbn-cloud-security-posture/src/schema/csp_finding.ts deleted file mode 100644 index 2151415ebf17eb..00000000000000 --- a/x-pack/packages/kbn-cloud-security-posture/src/schema/csp_finding.ts +++ /dev/null @@ -1,113 +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 type { EcsDataStream, EcsEvent } from '@elastic/ecs'; -import { TypeOf, schema } from '@kbn/config-schema'; -import { CSPM_POLICY_TEMPLATE, KSPM_POLICY_TEMPLATE } from '@kbn/cloud-security-posture-common'; - -export type CspBenchmarkRuleMetadata = TypeOf; - -export const cspBenchmarkRuleMetadataSchema = schema.object({ - audit: schema.string(), - benchmark: schema.object({ - name: schema.string(), - posture_type: schema.maybe( - schema.oneOf([schema.literal(CSPM_POLICY_TEMPLATE), schema.literal(KSPM_POLICY_TEMPLATE)]) - ), - id: schema.string(), - version: schema.string(), - rule_number: schema.maybe(schema.string()), - }), - default_value: schema.maybe(schema.string()), - description: schema.string(), - id: schema.string(), - impact: schema.maybe(schema.string()), - name: schema.string(), - profile_applicability: schema.string(), - rationale: schema.string(), - references: schema.maybe(schema.string()), - rego_rule_id: schema.string(), - remediation: schema.string(), - section: schema.string(), - tags: schema.arrayOf(schema.string()), - version: schema.string(), -}); - -export interface CspFinding { - '@timestamp': string; - cluster_id?: string; - orchestrator?: CspFindingOrchestrator; - cloud?: CspFindingCloud; // only available on CSPM findings - result: CspFindingResult; - resource: CspFindingResource; - rule: CspBenchmarkRuleMetadata; - host: CspFindingHost; - event: EcsEvent; - data_stream: EcsDataStream; - agent: CspFindingAgent; - ecs: { - version: string; - }; -} - -interface CspFindingOrchestrator { - cluster?: { - id?: string; - name?: string; - }; -} - -interface CspFindingCloud { - provider: 'aws' | 'azure' | 'gcp'; - account: { - name: string; - id: string; - }; - region?: string; -} - -interface CspFindingResult { - evaluation: 'passed' | 'failed'; - expected?: Record; - evidence: Record; -} - -interface CspFindingResource { - name: string; - sub_type: string; - raw: object; - id: string; - type: string; - [other_keys: string]: unknown; -} - -interface CspFindingHost { - id: string; - containerized: boolean; - ip: string[]; - mac: string[]; - name: string; - hostname: string; - architecture: string; - os: { - kernel: string; - codename: string; - type: string; - platform: string; - version: string; - family: string; - name: string; - }; - [other_keys: string]: unknown; -} - -interface CspFindingAgent { - version: string; - // ephemeral_id: string; - id: string; - name: string; - type: string; -} diff --git a/x-pack/plugins/cloud_security_posture/common/constants.ts b/x-pack/plugins/cloud_security_posture/common/constants.ts index 053dcc4867bdd3..add695799bc327 100644 --- a/x-pack/plugins/cloud_security_posture/common/constants.ts +++ b/x-pack/plugins/cloud_security_posture/common/constants.ts @@ -54,9 +54,6 @@ export const CDR_VULNERABILITIES_DATA_VIEW_ID_PREFIX = export const CDR_VULNERABILITIES_INDEX_PATTERN = 'logs-*_latest_vulnerabilities_cdr,logs-cloud_security_posture.vulnerabilities_latest-default'; -// TODO: REMOVE CSP_LATEST_FINDINGS_DATA_VIEW and replace it with LATEST_FINDINGS_INDEX_PATTERN -export const CSP_LATEST_FINDINGS_DATA_VIEW = 'logs-cloud_security_posture.findings_latest-*'; - export const FINDINGS_INDEX_NAME = 'logs-cloud_security_posture.findings'; export const FINDINGS_INDEX_PATTERN = 'logs-cloud_security_posture.findings-default*'; export const FINDINGS_INDEX_DEFAULT_NS = 'logs-cloud_security_posture.findings-default'; @@ -66,8 +63,6 @@ export const LATEST_FINDINGS_INDEX_PATTERN = 'logs-cloud_security_posture.findin export const LATEST_FINDINGS_INDEX_DEFAULT_NS = 'logs-cloud_security_posture.findings_latest-default'; -export const LATEST_FINDINGS_RETENTION_POLICY = '26h'; - export const BENCHMARK_SCORE_INDEX_TEMPLATE_NAME = 'logs-cloud_security_posture.scores'; export const BENCHMARK_SCORE_INDEX_PATTERN = 'logs-cloud_security_posture.scores-*'; export const BENCHMARK_SCORE_INDEX_DEFAULT_NS = 'logs-cloud_security_posture.scores-default'; diff --git a/x-pack/plugins/cloud_security_posture/common/schemas/csp_finding.ts b/x-pack/plugins/cloud_security_posture/common/schemas/csp_finding.ts deleted file mode 100644 index 7ac4e79393f016..00000000000000 --- a/x-pack/plugins/cloud_security_posture/common/schemas/csp_finding.ts +++ /dev/null @@ -1,86 +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. - */ - -// TODO: this needs to be defined in a versioned schema -import type { EcsDataStream, EcsEvent } from '@elastic/ecs'; -import { CspBenchmarkRuleMetadata } from '../types/latest'; - -export interface CspFinding { - '@timestamp': string; - cluster_id?: string; - orchestrator?: CspFindingOrchestrator; - cloud?: CspFindingCloud; // only available on CSPM findings - result: CspFindingResult; - resource: CspFindingResource; - rule: CspBenchmarkRuleMetadata; - host: CspFindingHost; - event: EcsEvent; - data_stream: EcsDataStream; - agent: CspFindingAgent; - ecs: { - version: string; - }; -} - -interface CspFindingOrchestrator { - cluster?: { - id?: string; - name?: string; - }; -} - -interface CspFindingCloud { - provider: 'aws' | 'azure' | 'gcp'; - account: { - name: string; - id: string; - }; - region?: string; -} - -interface CspFindingResult { - evaluation: 'passed' | 'failed'; - expected?: Record; - evidence: Record; -} - -interface CspFindingResource { - name: string; - sub_type: string; - raw: object; - id: string; - type: string; - [other_keys: string]: unknown; -} - -interface CspFindingHost { - id: string; - containerized: boolean; - ip: string[]; - mac: string[]; - name: string; - hostname: string; - architecture: string; - os: { - kernel: string; - codename: string; - type: string; - platform: string; - version: string; - family: string; - name: string; - }; - [other_keys: string]: unknown; -} - -interface CspFindingAgent { - version: string; - // ephemeral_id: string; - id: string; - name: string; - type: string; -} diff --git a/x-pack/plugins/cloud_security_posture/common/types/rules/v4.ts b/x-pack/plugins/cloud_security_posture/common/types/rules/v4.ts index 33134eed32e38e..c44534ef9bd061 100644 --- a/x-pack/plugins/cloud_security_posture/common/types/rules/v4.ts +++ b/x-pack/plugins/cloud_security_posture/common/types/rules/v4.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { CspBenchmarkRulesStates } from '@kbn/cloud-security-posture-common'; import { schema, TypeOf } from '@kbn/config-schema'; import { BenchmarksCisId } from '../latest'; import { DEFAULT_BENCHMARK_RULES_PER_PAGE } from './v3'; @@ -26,8 +27,6 @@ export type CspBenchmarkRulesBulkActionRequestSchema = TypeOf< export type RuleStateAttributes = TypeOf; -export type CspBenchmarkRulesStates = TypeOf; - export type CspSettings = TypeOf; export const findCspBenchmarkRuleRequestSchema = schema.object({ diff --git a/x-pack/plugins/cloud_security_posture/common/utils/rules_states.ts b/x-pack/plugins/cloud_security_posture/common/utils/rules_states.ts index 2a55a20a136ccd..e2351d3ddcaa97 100644 --- a/x-pack/plugins/cloud_security_posture/common/utils/rules_states.ts +++ b/x-pack/plugins/cloud_security_posture/common/utils/rules_states.ts @@ -4,31 +4,6 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { QueryDslQueryContainer } from '@kbn/data-views-plugin/common/types'; -import { CspBenchmarkRulesStates } from '@kbn/cloud-security-posture-common'; - -export const buildMutedRulesFilter = ( - rulesStates: CspBenchmarkRulesStates -): QueryDslQueryContainer[] => { - const mutedRules = Object.fromEntries( - Object.entries(rulesStates).filter(([key, value]) => value.muted === true) - ); - - const mutedRulesFilterQuery = Object.keys(mutedRules).map((key) => { - const rule = mutedRules[key]; - return { - bool: { - must: [ - { term: { 'rule.benchmark.id': rule.benchmark_id } }, - { term: { 'rule.benchmark.version': rule.benchmark_version } }, - { term: { 'rule.benchmark.rule_number': rule.rule_number } }, - ], - }, - }; - }); - - return mutedRulesFilterQuery; -}; export const buildRuleKey = (benchmarkId: string, benchmarkVersion: string, ruleNumber: string) => { return `${benchmarkId};${benchmarkVersion};${ruleNumber}`; diff --git a/x-pack/plugins/cloud_security_posture/public/common/constants.ts b/x-pack/plugins/cloud_security_posture/public/common/constants.ts index 8054917ba7462a..234e5e16ae3c54 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/constants.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/constants.ts @@ -35,7 +35,6 @@ export const statusColors = { }; export const CSP_MOMENT_FORMAT = 'MMMM D, YYYY @ HH:mm:ss.SSS'; -export const MAX_FINDINGS_TO_LOAD = 500; export const DEFAULT_VISIBLE_ROWS_PER_PAGE = 25; export const LOCAL_STORAGE_DATA_TABLE_PAGE_SIZE_KEY = 'cloudPosture:dataTable:pageSize'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/types.ts b/x-pack/plugins/cloud_security_posture/public/common/types.ts index 41c5b45f2e9867..6a82d3073fe3b0 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/types.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/types.ts @@ -26,12 +26,6 @@ export interface FindingsBaseESQueryConfig { config: EsQueryConfig; } -// export interface FindingsBaseEsQuery { -// query?: { -// bool: BoolQuery; -// }; -// } - export type Sort = NonNullable['sort']>; interface RuleSeverityMapping { diff --git a/x-pack/plugins/cloud_security_posture/public/common/utils/show_error_toast.ts b/x-pack/plugins/cloud_security_posture/public/common/utils/show_error_toast.ts deleted file mode 100644 index 75316d9495b269..00000000000000 --- a/x-pack/plugins/cloud_security_posture/public/common/utils/show_error_toast.ts +++ /dev/null @@ -1,22 +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 type { CoreStart } from '@kbn/core/public'; -import { i18n } from '@kbn/i18n'; -import { extractErrorMessage } from '../../../common/utils/helpers'; - -const SEARCH_FAILED_TEXT = i18n.translate( - 'xpack.csp.findings.findingsErrorToast.searchFailedTitle', - { defaultMessage: 'Search failed' } -); - -export const showErrorToast = ( - toasts: CoreStart['notifications']['toasts'], - error: unknown -): void => { - if (error instanceof Error) toasts.addError(error, { title: SEARCH_FAILED_TEXT }); - else toasts.addDanger(extractErrorMessage(error, SEARCH_FAILED_TEXT)); -}; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts deleted file mode 100644 index d17e536a714669..00000000000000 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts +++ /dev/null @@ -1,25 +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 { useQuery } from '@tanstack/react-query'; -import { useKibana } from '@kbn/cloud-security-posture'; -import { CspBenchmarkRulesStates } from '@kbn/cloud-security-posture-common'; -import { - CSP_GET_BENCHMARK_RULES_STATE_API_CURRENT_VERSION, - CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH, -} from '../../../../common/constants'; - -export const getRuleStatesKey = ['get_rules_state_key']; - -export const useGetCspBenchmarkRulesStatesApi = () => { - const { http } = useKibana().services; - return useQuery(getRuleStatesKey, () => - http.get(CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH, { - version: CSP_GET_BENCHMARK_RULES_STATE_API_CURRENT_VERSION, - }) - ); -}; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts index ab4ca3bbe4ba17..c67f0906301828 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts @@ -18,6 +18,7 @@ import { LATEST_FINDINGS_RETENTION_POLICY, MAX_FINDINGS_TO_LOAD, CspBenchmarkRulesStates, + CspFinding, } from '@kbn/cloud-security-posture-common'; import type { FindingsBaseEsQuery } from '@kbn/cloud-security-posture'; import { @@ -25,21 +26,7 @@ import { getFindingsCountAggQuery, useGetCspBenchmarkRulesStatesApi, useKibana, - CspFinding, } from '@kbn/cloud-security-posture'; -// import { CspFinding } from '../../../../common/schemas/csp_finding'; HERE -// import { useKibana } from '../../../common/hooks/use_kibana'; DONE -// import type { FindingsBaseEsQuery } from '../../../common/types'; DONE -// import { getAggregationCount, getFindingsCountAggQuery } from '../utils/utils'; DONE -// import { -// CSP_LATEST_FINDINGS_DATA_VIEW, -// LATEST_FINDINGS_RETENTION_POLICY, -// } from '../../../../common/constants'; DONE -// import { MAX_FINDINGS_TO_LOAD } from '../../../common/constants'; DONE -// import { showErrorToast } from '../../../common/utils/show_error_toast'; DONE -// import { useGetCspBenchmarkRulesStatesApi } from './use_get_benchmark_rules_state_api'; //DONE -// import { CspBenchmarkRulesStates } from '../../../../common/types/latest'; DONE -// import { buildMutedRulesFilter } from '../../../../common/utils/rules_states'; DONE interface UseFindingsOptions extends FindingsBaseEsQuery { sort: string[][]; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts deleted file mode 100644 index 67b37ad1001fdf..00000000000000 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/utils.ts +++ /dev/null @@ -1,25 +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 type { estypes } from '@elastic/elasticsearch'; -export { getFilters } from './get_filters'; - -export const getFindingsCountAggQuery = () => ({ - count: { terms: { field: 'result.evaluation' } }, -}); - -export const getAggregationCount = ( - buckets: Array -) => { - const passed = buckets.find((bucket) => bucket?.key === 'passed'); - const failed = buckets.find((bucket) => bucket?.key === 'failed'); - - return { - passed: passed?.doc_count || 0, - failed: failed?.doc_count || 0, - }; -}; From 1296a8d34c5ea2a07cda4d8dd59348d7035a133e Mon Sep 17 00:00:00 2001 From: animehart Date: Fri, 9 Aug 2024 20:22:53 -0700 Subject: [PATCH 19/33] reverting useKibana, testing in CI --- .../public/common/api/use_cis_kubernetes_integration.tsx | 3 ++- .../public/common/api/use_license_management_locator_api.tsx | 4 +++- .../cloud_security_posture/public/common/api/use_stats_api.ts | 3 ++- .../public/common/api/use_vulnerability_dashboard_api.ts | 3 ++- .../hooks/use_cloud_posture_data_table/use_base_es_query.ts | 3 ++- .../hooks/use_cloud_posture_data_table/use_persisted_query.ts | 3 ++- .../public/common/hooks/use_subscription_status.ts | 3 ++- .../public/common/navigation/use_csp_integration_link.ts | 3 ++- .../navigation/use_navigate_to_cis_integration_policies.ts | 3 ++- .../cloud_security_data_table/cloud_security_data_table.tsx | 3 ++- .../public/components/detection_rule_counter.tsx | 3 ++- .../components/fleet_extensions/custom_assets_extension.tsx | 3 ++- .../cloud_security_posture/public/components/take_action.tsx | 3 ++- .../public/pages/benchmarks/benchmarks.tsx | 3 ++- .../public/pages/benchmarks/benchmarks_table.tsx | 3 ++- .../public/pages/benchmarks/use_csp_benchmark_integrations.ts | 3 ++- .../compliance_charts/compliance_score_chart.tsx | 3 ++- .../pages/compliance_dashboard/compliance_dashboard.tsx | 3 ++- .../pages/configurations/findings_flyout/findings_flyout.tsx | 4 +++- .../pages/configurations/findings_flyout/overview_tab.tsx | 3 ++- .../configurations/latest_findings/use_grouped_findings.tsx | 3 ++- .../configurations/latest_findings/use_latest_findings.ts | 3 ++- .../public/pages/configurations/layout/error_callout.tsx | 3 ++- .../public/pages/rules/rules_counters.tsx | 3 ++- .../cloud_security_posture/public/pages/rules/rules_table.tsx | 3 ++- .../public/pages/rules/rules_table_header.tsx | 3 ++- .../public/pages/rules/use_csp_benchmark_rules.ts | 3 ++- .../public/pages/rules/use_csp_rules_state.ts | 3 ++- .../vulnerabilities/hooks/use_grouped_vulnerabilities.tsx | 3 ++- .../vulnerabilities/hooks/use_latest_vulnerabilities.tsx | 3 ++- .../vulnerability_dashboard/vulnerability_trend_graph.tsx | 3 ++- 31 files changed, 64 insertions(+), 31 deletions(-) diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx b/x-pack/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx index 910b7559635f84..e673348d036224 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx @@ -12,8 +12,9 @@ import { type DefaultPackagesInstallationError, API_VERSIONS, } from '@kbn/fleet-plugin/common'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { CLOUD_SECURITY_POSTURE_PACKAGE_NAME } from '../../../common/constants'; +import { useKibana } from '../hooks/use_kibana'; /** * This hook will find our cis integration and return its PackageInfo diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx b/x-pack/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx index c97251a904861e..9f8fe5169177b1 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx @@ -5,7 +5,9 @@ * 2.0. */ -import { useKibana } from '@kbn/cloud-security-posture'; +import { useKibana } from '../hooks/use_kibana'; + +// import { useKibana } from '@kbn/cloud-security-posture'; const LICENSE_MANAGEMENT_LOCATOR = 'LICENSE_MANAGEMENT_LOCATOR'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts b/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts index 8d10ec66d8a5ef..68c448b07e15c5 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts @@ -6,13 +6,14 @@ */ import { useQuery, UseQueryOptions } from '@tanstack/react-query'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { ComplianceDashboardDataV2, PosturePolicyTemplate } from '../../../common/types_old'; import { CSPM_POLICY_TEMPLATE, KSPM_POLICY_TEMPLATE, STATS_ROUTE_PATH, } from '../../../common/constants'; +import { useKibana } from '../hooks/use_kibana'; // TODO: consolidate both hooks into one hook with a dynamic key export const CSPM_STATS_QUERY_KEY = ['csp_cspm_dashboard_stats']; diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts b/x-pack/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts index 377736ee65ef5b..cc41dbd012ce7e 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts @@ -6,9 +6,10 @@ */ import { useQuery, UseQueryOptions } from '@tanstack/react-query'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { CnvmDashboardData } from '../../../common/types_old'; import { VULNERABILITIES_DASHBOARD_ROUTE_PATH } from '../../../common/constants'; +import { useKibana } from '../hooks/use_kibana'; const cnvmKey = 'use-vulnerability-dashboard-api-key'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts index 70201a2fdb6355..edf0c96b86173c 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts @@ -9,9 +9,10 @@ import { DataView } from '@kbn/data-views-plugin/common'; import { buildEsQuery, EsQueryConfig } from '@kbn/es-query'; import { i18n } from '@kbn/i18n'; import { useEffect, useMemo } from 'react'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { useDataViewContext } from '../../contexts/data_view_context'; import { FindingsBaseESQueryConfig, FindingsBaseURLQuery } from '../../types'; +import { useKibana } from '../use_kibana'; const getBaseQuery = ({ dataView, diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts index 430a0a0858a4a8..f99c3859c4882c 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts @@ -7,8 +7,9 @@ import { useCallback } from 'react'; import { type Query } from '@kbn/es-query'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { FindingsBaseURLQuery } from '../../types'; +import { useKibana } from '../use_kibana'; export const usePersistedQuery = (getter: ({ filters, query }: FindingsBaseURLQuery) => T) => { const { diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts index eccfae6f104710..2d40459e729fd7 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts @@ -6,9 +6,10 @@ */ import { useContext } from 'react'; import { useQuery } from '@tanstack/react-query'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { SetupContext } from '../../application/setup_context'; import { isSubscriptionAllowed } from '../../../common/utils/subscription'; +import { useKibana } from './use_kibana'; const SUBSCRIPTION_QUERY_KEY = 'csp_subscription_query_key'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts b/x-pack/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts index c378df68ad41cb..cddfac27d6d573 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts @@ -6,9 +6,10 @@ */ import { pagePathGetters, pkgKeyFromPackageInfo } from '@kbn/fleet-plugin/public'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import type { CloudSecurityPolicyTemplate } from '../../../common/types_old'; import { useCisKubernetesIntegration } from '../api/use_cis_kubernetes_integration'; +import { useKibana } from '../hooks/use_kibana'; export const useCspIntegrationLink = ( policyTemplate: CloudSecurityPolicyTemplate diff --git a/x-pack/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts b/x-pack/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts index 061dd0adb5d576..42bf4cb2146c6d 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts @@ -6,10 +6,11 @@ */ import { pagePathGetters, pkgKeyFromPackageInfo } from '@kbn/fleet-plugin/public'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { useCisKubernetesIntegration } from '../api/use_cis_kubernetes_integration'; import { useCspBenchmarkIntegrationsV1 } from '../../pages/benchmarks/use_csp_benchmark_integrations'; import { PostureTypes } from '../../../common/types_old'; +import { useKibana } from '../hooks/use_kibana'; export const useCISIntegrationPoliciesLink = ({ postureType, diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx index 5e6f0994d64acf..85bd12b1f7e56e 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx @@ -26,7 +26,7 @@ import { AddFieldFilterHandler } from '@kbn/unified-field-list'; import { generateFilters } from '@kbn/data-plugin/public'; import { DocViewFilterFn } from '@kbn/unified-doc-viewer/types'; import useLocalStorage from 'react-use/lib/useLocalStorage'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { MAX_FINDINGS_TO_LOAD } from '@kbn/cloud-security-posture-common'; import { CloudPostureDataTableResult } from '../../common/hooks/use_cloud_posture_data_table'; import { EmptyState } from '../empty_state'; @@ -36,6 +36,7 @@ import { useDataViewContext } from '../../common/contexts/data_view_context'; import { TakeAction } from '../take_action'; import { RuleResponse } from '../../common/types'; +import { useKibana } from '../../common/hooks/use_kibana'; export interface CloudSecurityDefaultColumn { id: string; width?: number; diff --git a/x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx b/x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx index cc4f53ea8dde8d..c3d5e8f8d5a35d 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx @@ -12,12 +12,13 @@ import type { HttpSetup } from '@kbn/core/public'; import { useHistory } from 'react-router-dom'; import useSessionStorage from 'react-use/lib/useSessionStorage'; import { useQueryClient } from '@tanstack/react-query'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { useFetchDetectionRulesAlertsStatus } from '../common/api/use_fetch_detection_rules_alerts_status'; import { useFetchDetectionRulesByTags } from '../common/api/use_fetch_detection_rules_by_tags'; import { RuleResponse } from '../common/types'; import { showCreateDetectionRuleSuccessToast } from './take_action'; import { DETECTION_ENGINE_ALERTS_KEY, DETECTION_ENGINE_RULES_KEY } from '../common/constants'; +import { useKibana } from '../common/hooks/use_kibana'; const RULES_PAGE_PATH = '/rules/management'; const ALERTS_PAGE_PATH = '/alerts'; diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx index c56efa317254d7..d1e670560fe9e2 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx @@ -10,10 +10,11 @@ import { type CustomAssetsAccordionProps, CustomAssetsAccordion } from '@kbn/fle import { i18n } from '@kbn/i18n'; import { useParams } from 'react-router-dom'; import { EuiSpacer } from '@elastic/eui'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { CloudSecurityPolicyTemplate } from '../../../common/types_old'; import { VULN_MGMT_POLICY_TEMPLATE } from '../../../common/constants'; import { benchmarksNavigation, cloudPosturePages } from '../../common/navigation/constants'; +import { useKibana } from '../../common/hooks/use_kibana'; const SECURITY_APP_NAME = 'securitySolutionUI'; diff --git a/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx b/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx index 08b9b276037927..508840ab32b3e8 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx @@ -22,11 +22,12 @@ import type { HttpSetup } from '@kbn/core/public'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n as kbnI18n } from '@kbn/i18n'; import { QueryClient, useQueryClient } from '@tanstack/react-query'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import type { RuleResponse } from '../common/types'; import { CREATE_RULE_ACTION_SUBJ, TAKE_ACTION_SUBJ } from './test_subjects'; import { DETECTION_ENGINE_ALERTS_KEY, DETECTION_ENGINE_RULES_KEY } from '../common/constants'; import { CloudSecurityPostureStartServices } from '../types'; +import { useKibana } from '../common/hooks/use_kibana'; const RULE_PAGE_PATH = '/app/security/rules/id/'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx index e503944a6e1547..f69f2d1fa24f60 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx @@ -21,7 +21,7 @@ import { FormattedMessage } from '@kbn/i18n-react'; import useDebounce from 'react-use/lib/useDebounce'; import { i18n } from '@kbn/i18n'; import { pagePathGetters } from '@kbn/fleet-plugin/public'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { CLOUD_SECURITY_POSTURE_PACKAGE_NAME } from '../../../common/constants'; import { CloudPosturePageTitle } from '../../components/cloud_posture_page_title'; import { CloudPosturePage } from '../../components/cloud_posture_page'; @@ -39,6 +39,7 @@ import { import { usePageSize } from '../../common/hooks/use_page_size'; import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; import { NoFindingsStates } from '../../components/no_findings_states'; +import { useKibana } from '../../common/hooks/use_kibana'; const SEARCH_DEBOUNCE_MS = 300; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx index f694f4cc5156b4..c3889692b7f678 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx @@ -21,7 +21,7 @@ import React, { useMemo } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { generatePath } from 'react-router-dom'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { FINDINGS_GROUPING_OPTIONS } from '../../common/constants'; import { useNavigateFindings } from '../../common/hooks/use_navigate_findings'; import type { BenchmarkScore, Benchmark, BenchmarksCisId } from '../../../common/types/latest'; @@ -36,6 +36,7 @@ import { GetBenchmarkDynamicValues, useBenchmarkDynamicValues, } from '../../common/hooks/use_benchmark_dynamic_values'; +import { useKibana } from '../../common/hooks/use_kibana'; export const ERROR_STATE_TEST_SUBJECT = 'benchmark_page_error'; export const EMPTY_EVALUATION_TEST_SUBJECT = 'benchmark-not-evaluated-account'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts index 929bcf98d24e5c..74d675dd330eb5 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts @@ -6,11 +6,12 @@ */ import { useQuery } from '@tanstack/react-query'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { BENCHMARKS_ROUTE_PATH } from '../../../common/constants'; import type { BenchmarksQueryParams } from '../../../common/types/benchmarks/v1'; import type { GetBenchmarkResponse } from '../../../common/types/latest'; import type { GetBenchmarkResponse as GetBenchmarkResponseV1 } from '../../../common/types/benchmarks/v1'; +import { useKibana } from '../../common/hooks/use_kibana'; const BENCHMARK_INTEGRATION_QUERY_KEY_V1 = 'csp_benchmark_integrations_v1'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx index e36e35d6f92f8d..69b713556fad23 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx @@ -32,12 +32,13 @@ import { FormattedDate, FormattedTime } from '@kbn/i18n-react'; import moment from 'moment'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { DASHBOARD_COMPLIANCE_SCORE_CHART } from '../test_subjects'; import { statusColors } from '../../../common/constants'; import { RULE_FAILED, RULE_PASSED } from '../../../../common/constants'; import { CompactFormattedNumber } from '../../../components/compact_formatted_number'; import type { Evaluation, PostureTrend, Stats } from '../../../../common/types_old'; +import { useKibana } from '../../../common/hooks/use_kibana'; interface ComplianceScoreChartProps { compact?: boolean; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx index 0f740db6f44624..fb6dbd10780816 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx @@ -13,7 +13,7 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { Route, Routes } from '@kbn/shared-ux-router'; import { Redirect, useHistory, useLocation } from 'react-router-dom'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { NO_FINDINGS_STATUS_TEST_SUBJ } from '../../components/test_subjects'; import { useCspIntegrationLink } from '../../common/navigation/use_csp_integration_link'; import type { @@ -46,6 +46,7 @@ import { CSPM_POLICY_TEMPLATE, KSPM_POLICY_TEMPLATE } from '../../../common/cons import { cloudPosturePages, cspIntegrationDocsNavigation } from '../../common/navigation/constants'; import { NO_FINDINGS_STATUS_REFRESH_INTERVAL_MS } from '../../common/constants'; import { encodeQuery } from '../../common/navigation/query_utils'; +import { useKibana } from '../../common/hooks/use_kibana'; const POSTURE_TYPE_CSPM = CSPM_POLICY_TEMPLATE; const POSTURE_TYPE_KSPM = KSPM_POLICY_TEMPLATE; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx index 11d38da01797af..bfd33df68761a6 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx @@ -35,7 +35,8 @@ import type { HttpSetup } from '@kbn/core/public'; import { generatePath } from 'react-router-dom'; import { css } from '@emotion/react'; import { euiThemeVars } from '@kbn/ui-theme'; -import { useKibana, CspFinding } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; +import { CspFinding } from '@kbn/cloud-security-posture-common'; import { CSP_DATASET, getDatasetDisplayName } from '../../../common/utils/get_dataset_display_name'; import { truthy } from '../../../../common/utils/helpers'; import { benchmarksNavigation } from '../../../common/navigation/constants'; @@ -52,6 +53,7 @@ import { BenchmarkName } from '../../../../common/types_old'; import { FINDINGS_FLYOUT, FINDINGS_MISCONFIGS_FLYOUT_DESCRIPTION_LIST } from '../test_subjects'; import { createDetectionRuleFromBenchmarkRule } from '../utils/create_detection_rule_from_benchmark'; import { CspInlineDescriptionList } from '../../../components/csp_inline_description_list'; +import { useKibana } from '../../../common/hooks/use_kibana'; const tabs = [ { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx index a8759dfbe5a22e..d148cf6737578e 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx @@ -20,7 +20,7 @@ import type { EuiDescriptionListProps, EuiAccordionProps } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { isEmpty } from 'lodash'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { CspFinding } from '@kbn/cloud-security-posture-common'; import { getDatasetDisplayName } from '../../../common/utils/get_dataset_display_name'; import { truthy } from '../../../../common/utils/helpers'; @@ -39,6 +39,7 @@ import { RuleNameLink, } from './findings_flyout'; import { FindingsDetectionRuleCounter } from './findings_detection_rule_counter'; +import { useKibana } from '../../../common/hooks/use_kibana'; type Accordion = Pick & Pick; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx index f9ea62efb69cbb..a002b11c5c9b71 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx @@ -10,8 +10,9 @@ import type { IKibanaSearchResponse } from '@kbn/search-types'; import { GenericBuckets, GroupingQuery, RootAggregation } from '@kbn/grouping/src'; import { useQuery } from '@tanstack/react-query'; import { lastValueFrom } from 'rxjs'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { CSP_LATEST_FINDINGS_DATA_VIEW, showErrorToast } from '@kbn/cloud-security-posture-common'; +import { useKibana } from '../../../common/hooks/use_kibana'; // Elasticsearch returns `null` when a sub-aggregation cannot be computed type NumberOrNull = number | null; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts index c67f0906301828..754c474bb8a1e3 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts @@ -25,8 +25,9 @@ import { getAggregationCount, getFindingsCountAggQuery, useGetCspBenchmarkRulesStatesApi, - useKibana, + // useKibana, } from '@kbn/cloud-security-posture'; +import { useKibana } from '../../../common/hooks/use_kibana'; interface UseFindingsOptions extends FindingsBaseEsQuery { sort: string[][]; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx index 7bec89da4b8330..3aac4d39f13e1e 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx @@ -16,7 +16,8 @@ import { import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; +import { useKibana } from '../../../common/hooks/use_kibana'; export const ErrorCallout = ({ error }: { error: Error }) => { const { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx index cbe47b81a64f1d..d92aed54fdee3d 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx @@ -18,7 +18,7 @@ import { i18n } from '@kbn/i18n'; import { useParams } from 'react-router-dom'; import { Chart, Partition, PartitionLayout, Settings } from '@elastic/charts'; import { FormattedMessage } from '@kbn/i18n-react'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { useBenchmarkDynamicValues } from '../../common/hooks/use_benchmark_dynamic_values'; import { getPostureScorePercentage } from '../compliance_dashboard/compliance_charts/compliance_score_chart'; import { RULE_COUNTERS_TEST_SUBJ } from './test_subjects'; @@ -29,6 +29,7 @@ import { RULE_FAILED, RULE_PASSED } from '../../../common/constants'; import { statusColors } from '../../common/constants'; import { useCspBenchmarkIntegrationsV2 } from '../benchmarks/use_csp_benchmark_integrations'; import { CspCounterCard } from '../../components/csp_counter_card'; +import { useKibana } from '../../common/hooks/use_kibana'; const EvaluationPieChart = ({ failed, passed }: { failed: number; passed: number }) => { const { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx index a650a4dda7481d..8ca7ccebcdfebe 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx @@ -21,7 +21,7 @@ import { import { i18n } from '@kbn/i18n'; import { uniqBy } from 'lodash'; import { HttpSetup } from '@kbn/core/public'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { CloudSecurityPostureStartServices } from '../../types'; import { getFindingsDetectionRuleSearchTags } from '../../../common/utils/detection_rules'; import { ColumnNameWithTooltip } from '../../components/column_name_with_tooltip'; @@ -30,6 +30,7 @@ import * as TEST_SUBJECTS from './test_subjects'; import { RuleStateUpdateRequest, useChangeCspRuleState } from './use_change_csp_rule_state'; import { showChangeBenchmarkRuleStatesSuccessToast } from '../../components/take_action'; import { fetchDetectionRulesByTags } from '../../common/api/use_fetch_detection_rules_by_tags'; +import { useKibana } from '../../common/hooks/use_kibana'; export const RULES_ROWS_ENABLE_SWITCH_BUTTON = 'rules-row-enable-switch-button'; export const RULES_ROW_SELECT_ALL_CURRENT_PAGE = 'cloud-security-fields-selector-item-all'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx index 87e48330894d3c..a357b5bdae0746 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx @@ -24,7 +24,7 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { css } from '@emotion/react'; import { euiThemeVars } from '@kbn/ui-theme'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { getFindingsDetectionRuleSearchTagsFromArrayOfRules } from '../../../common/utils/detection_rules'; import { RuleStateAttributesWithoutStates, @@ -34,6 +34,7 @@ import { CspBenchmarkRulesWithStates } from './rules_container'; import { MultiSelectFilter } from '../../common/component/multi_select_filter'; import { showChangeBenchmarkRuleStatesSuccessToast } from '../../components/take_action'; import { useFetchDetectionRulesByTags } from '../../common/api/use_fetch_detection_rules_by_tags'; +import { useKibana } from '../../common/hooks/use_kibana'; export const RULES_BULK_ACTION_BUTTON = 'bulk-action-button'; export const RULES_BULK_ACTION_OPTION_ENABLE = 'bulk-action-option-enable'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts index 2784423d32fcd4..a10865a969ba63 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts @@ -5,11 +5,12 @@ * 2.0. */ import { useQuery } from '@tanstack/react-query'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { FindCspBenchmarkRuleRequest, FindCspBenchmarkRuleResponse, } from '../../../common/types/latest'; +import { useKibana } from '../../common/hooks/use_kibana'; import { CSP_BENCHMARK_RULE_SAVED_OBJECT_TYPE, diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts index b4ba88e37133a3..8513262898aef0 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts @@ -6,9 +6,10 @@ */ import { useQuery } from '@tanstack/react-query'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { CspBenchmarkRulesStates } from '@kbn/cloud-security-posture-common'; import { CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH } from '../../../common/constants'; +import { useKibana } from '../../common/hooks/use_kibana'; export const CSP_RULES_STATES_QUERY_KEY = ['csp_rules_states_v1']; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx index c4fb1583598cc3..5d604b7e23aa0b 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx @@ -10,9 +10,10 @@ import type { IKibanaSearchResponse } from '@kbn/search-types'; import { GenericBuckets, GroupingQuery, RootAggregation } from '@kbn/grouping/src'; import { useQuery } from '@tanstack/react-query'; import { lastValueFrom } from 'rxjs'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { showErrorToast } from '@kbn/cloud-security-posture-common'; import { LATEST_VULNERABILITIES_INDEX_PATTERN } from '../../../../common/constants'; +import { useKibana } from '../../../common/hooks/use_kibana'; // Elasticsearch returns `null` when a sub-aggregation cannot be computed type NumberOrNull = number | null; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx index 0c71062544ab52..8ca8b42ad42f29 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx @@ -16,7 +16,7 @@ import { } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { buildDataTableRecord } from '@kbn/discover-utils'; import { EsHitRecord } from '@kbn/discover-utils/types'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { FindingsBaseEsQuery } from '@kbn/cloud-security-posture'; import { MAX_FINDINGS_TO_LOAD, showErrorToast } from '@kbn/cloud-security-posture-common'; import { VULNERABILITY_FIELDS } from '../../../common/constants'; @@ -26,6 +26,7 @@ import { LATEST_VULNERABILITIES_RETENTION_POLICY, } from '../../../../common/constants'; import { getCaseInsensitiveSortScript } from '../utils/custom_sort_script'; +import { useKibana } from '../../../common/hooks/use_kibana'; type LatestFindingsRequest = IKibanaSearchRequest; type LatestFindingsResponse = IKibanaSearchResponse< SearchResponse diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx index 4da82fe35f60b5..61a47eb28fb29d 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx @@ -19,7 +19,7 @@ import { EuiButton, EuiComboBox } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { useKibana } from '@kbn/cloud-security-posture'; +// import { useKibana } from '@kbn/cloud-security-posture'; import { truthy } from '../../../common/utils/helpers'; import { useNavigateVulnerabilities } from '../../common/hooks/use_navigate_findings'; import { VulnStatsTrend, VulnSeverity } from '../../../common/types_old'; @@ -27,6 +27,7 @@ import { useVulnerabilityDashboardApi } from '../../common/api/use_vulnerability import { getSeverityStatusColor } from '../../common/utils/get_vulnerability_colors'; import { ChartPanel } from '../../components/chart_panel'; import { VULNERABILITIES_SEVERITY } from '../../../common/constants'; +import { useKibana } from '../../common/hooks/use_kibana'; const stackAccessors: VulnSeverity[] = [ VULNERABILITIES_SEVERITY.CRITICAL, From 2e8404198b31b87afaf80686b3761f35c4523a55 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Sat, 10 Aug 2024 03:33:52 +0000 Subject: [PATCH 20/33] [CI] Auto-commit changed files from 'node scripts/lint_ts_projects --fix' --- x-pack/packages/kbn-cloud-security-posture/tsconfig.json | 1 - 1 file changed, 1 deletion(-) diff --git a/x-pack/packages/kbn-cloud-security-posture/tsconfig.json b/x-pack/packages/kbn-cloud-security-posture/tsconfig.json index 2b7e8fd25d7f42..651af6bb791e20 100644 --- a/x-pack/packages/kbn-cloud-security-posture/tsconfig.json +++ b/x-pack/packages/kbn-cloud-security-posture/tsconfig.json @@ -21,7 +21,6 @@ "@kbn/cloud-security-posture-common", "@kbn/search-types", "@kbn/discover-utils", - "@kbn/config-schema", "@kbn/licensing-plugin", "@kbn/data-views-plugin", "@kbn/unified-search-plugin", From b264344126039c19a58a1de00619a7c7f08d25b3 Mon Sep 17 00:00:00 2001 From: animehart Date: Mon, 12 Aug 2024 12:05:29 -0700 Subject: [PATCH 21/33] fix useKibana --- .../packages/kbn-cloud-security-posture/index.ts | 2 +- .../src/hooks/use_get_benchmark_rules_state_api.ts | 2 +- .../src/hooks/use_kibana.ts | 14 -------------- .../src/hooks/use_misconfiguration_preview.ts | 6 ++++-- .../common/api/use_cis_kubernetes_integration.tsx | 1 - .../api/use_license_management_locator_api.tsx | 2 -- .../public/common/api/use_stats_api.ts | 1 - .../common/api/use_vulnerability_dashboard_api.ts | 1 - .../use_base_es_query.ts | 1 - .../use_persisted_query.ts | 1 - .../public/common/hooks/use_subscription_status.ts | 1 - .../common/navigation/use_csp_integration_link.ts | 1 - .../use_navigate_to_cis_integration_policies.ts | 1 - .../cloud_security_data_table.tsx | 1 - .../public/components/detection_rule_counter.tsx | 1 - .../fleet_extensions/custom_assets_extension.tsx | 1 - .../public/components/take_action.tsx | 1 - .../public/pages/benchmarks/benchmarks.tsx | 1 - .../public/pages/benchmarks/benchmarks_table.tsx | 1 - .../benchmarks/use_csp_benchmark_integrations.ts | 1 - .../compliance_charts/compliance_score_chart.tsx | 1 - .../compliance_dashboard/compliance_dashboard.tsx | 1 - .../findings_flyout/findings_flyout.tsx | 1 - .../findings_flyout/overview_tab.tsx | 1 - .../latest_findings/use_grouped_findings.tsx | 1 - .../pages/configurations/layout/error_callout.tsx | 1 - .../public/pages/rules/rules_counters.tsx | 1 - .../public/pages/rules/rules_flyout.tsx | 1 - .../public/pages/rules/rules_table.tsx | 1 - .../public/pages/rules/rules_table_header.tsx | 1 - .../public/pages/rules/use_csp_benchmark_rules.ts | 1 - .../public/pages/rules/use_csp_rules_state.ts | 1 - .../hooks/use_grouped_vulnerabilities.tsx | 1 - .../hooks/use_latest_vulnerabilities.tsx | 1 - .../vulnerability_trend_graph.tsx | 1 - 35 files changed, 6 insertions(+), 50 deletions(-) delete mode 100644 x-pack/packages/kbn-cloud-security-posture/src/hooks/use_kibana.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/index.ts b/x-pack/packages/kbn-cloud-security-posture/index.ts index a0c0b592b55593..ad8c8475a118cf 100644 --- a/x-pack/packages/kbn-cloud-security-posture/index.ts +++ b/x-pack/packages/kbn-cloud-security-posture/index.ts @@ -8,5 +8,5 @@ export * from './type'; export { useMisconfigurationPreview } from './src/hooks/use_misconfiguration_preview'; export { useGetCspBenchmarkRulesStatesApi } from './src/hooks/use_get_benchmark_rules_state_api'; -export { useKibana } from './src/hooks/use_kibana'; +// export { useKibana } from './src/hooks/use_kibana'; export { getAggregationCount, getFindingsCountAggQuery } from './src/utils/utils'; diff --git a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_get_benchmark_rules_state_api.ts b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_get_benchmark_rules_state_api.ts index b7cd35fcb01e09..12dc6c6af998da 100644 --- a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_get_benchmark_rules_state_api.ts +++ b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_get_benchmark_rules_state_api.ts @@ -11,7 +11,7 @@ import { CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH, CspBenchmarkRulesStates, } from '@kbn/cloud-security-posture-common'; -import { useKibana } from './use_kibana'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; export const getRuleStatesKey = ['get_rules_state_key']; diff --git a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_kibana.ts b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_kibana.ts deleted file mode 100644 index ed5f3b5c34397a..00000000000000 --- a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_kibana.ts +++ /dev/null @@ -1,14 +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 type { CoreStart } from '@kbn/core/public'; -import { useKibana as useKibanaBase } from '@kbn/kibana-react-plugin/public'; -import type { CspClientPluginStartDeps } from '../../type'; - -type CspKibanaContext = CoreStart & CspClientPluginStartDeps; - -export const useKibana = () => useKibanaBase(); diff --git a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts index 9bb18660d7cc3d..c01eb9ce3deea9 100644 --- a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts +++ b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts @@ -20,10 +20,12 @@ import { CspFinding, } from '@kbn/cloud-security-posture-common'; import { showErrorToast, buildMutedRulesFilter } from '@kbn/cloud-security-posture-common'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import type { CoreStart } from '@kbn/core/public'; +import type { CspClientPluginStartDeps } from '../../type'; import type { FindingsBaseEsQuery } from '../../type'; import { getAggregationCount, getFindingsCountAggQuery } from '../utils/utils'; import { useGetCspBenchmarkRulesStatesApi } from './use_get_benchmark_rules_state_api'; -import { useKibana } from './use_kibana'; interface UseFindingsOptions extends FindingsBaseEsQuery { sort: string[][]; @@ -122,7 +124,7 @@ export const useMisconfigurationPreview = (options: UseFindingsOptions) => { const { data, notifications: { toasts }, - } = useKibana().services; + } = useKibana().services; const { data: rulesStates } = useGetCspBenchmarkRulesStatesApi(); /** diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx b/x-pack/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx index e673348d036224..e5f226a3c33524 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_cis_kubernetes_integration.tsx @@ -12,7 +12,6 @@ import { type DefaultPackagesInstallationError, API_VERSIONS, } from '@kbn/fleet-plugin/common'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { CLOUD_SECURITY_POSTURE_PACKAGE_NAME } from '../../../common/constants'; import { useKibana } from '../hooks/use_kibana'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx b/x-pack/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx index 9f8fe5169177b1..cbfd64b8e60a8a 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_license_management_locator_api.tsx @@ -7,8 +7,6 @@ import { useKibana } from '../hooks/use_kibana'; -// import { useKibana } from '@kbn/cloud-security-posture'; - const LICENSE_MANAGEMENT_LOCATOR = 'LICENSE_MANAGEMENT_LOCATOR'; /** diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts b/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts index 68c448b07e15c5..a22ad450896b4c 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts @@ -6,7 +6,6 @@ */ import { useQuery, UseQueryOptions } from '@tanstack/react-query'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { ComplianceDashboardDataV2, PosturePolicyTemplate } from '../../../common/types_old'; import { CSPM_POLICY_TEMPLATE, diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts b/x-pack/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts index cc41dbd012ce7e..0c8dfda27f84fe 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_vulnerability_dashboard_api.ts @@ -6,7 +6,6 @@ */ import { useQuery, UseQueryOptions } from '@tanstack/react-query'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { CnvmDashboardData } from '../../../common/types_old'; import { VULNERABILITIES_DASHBOARD_ROUTE_PATH } from '../../../common/constants'; import { useKibana } from '../hooks/use_kibana'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts index edf0c96b86173c..9d5f5f2bf268d7 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_base_es_query.ts @@ -9,7 +9,6 @@ import { DataView } from '@kbn/data-views-plugin/common'; import { buildEsQuery, EsQueryConfig } from '@kbn/es-query'; import { i18n } from '@kbn/i18n'; import { useEffect, useMemo } from 'react'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { useDataViewContext } from '../../contexts/data_view_context'; import { FindingsBaseESQueryConfig, FindingsBaseURLQuery } from '../../types'; import { useKibana } from '../use_kibana'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts index f99c3859c4882c..c3731c0139ce33 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_cloud_posture_data_table/use_persisted_query.ts @@ -7,7 +7,6 @@ import { useCallback } from 'react'; import { type Query } from '@kbn/es-query'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { FindingsBaseURLQuery } from '../../types'; import { useKibana } from '../use_kibana'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts index 2d40459e729fd7..f8bda84dbcb656 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts @@ -6,7 +6,6 @@ */ import { useContext } from 'react'; import { useQuery } from '@tanstack/react-query'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { SetupContext } from '../../application/setup_context'; import { isSubscriptionAllowed } from '../../../common/utils/subscription'; import { useKibana } from './use_kibana'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts b/x-pack/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts index cddfac27d6d573..1dac88397e8be7 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/navigation/use_csp_integration_link.ts @@ -6,7 +6,6 @@ */ import { pagePathGetters, pkgKeyFromPackageInfo } from '@kbn/fleet-plugin/public'; -// import { useKibana } from '@kbn/cloud-security-posture'; import type { CloudSecurityPolicyTemplate } from '../../../common/types_old'; import { useCisKubernetesIntegration } from '../api/use_cis_kubernetes_integration'; import { useKibana } from '../hooks/use_kibana'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts b/x-pack/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts index 42bf4cb2146c6d..3949eda397b0d0 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/navigation/use_navigate_to_cis_integration_policies.ts @@ -6,7 +6,6 @@ */ import { pagePathGetters, pkgKeyFromPackageInfo } from '@kbn/fleet-plugin/public'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { useCisKubernetesIntegration } from '../api/use_cis_kubernetes_integration'; import { useCspBenchmarkIntegrationsV1 } from '../../pages/benchmarks/use_csp_benchmark_integrations'; import { PostureTypes } from '../../../common/types_old'; diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx index 85bd12b1f7e56e..771702bceed94a 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_security_data_table/cloud_security_data_table.tsx @@ -26,7 +26,6 @@ import { AddFieldFilterHandler } from '@kbn/unified-field-list'; import { generateFilters } from '@kbn/data-plugin/public'; import { DocViewFilterFn } from '@kbn/unified-doc-viewer/types'; import useLocalStorage from 'react-use/lib/useLocalStorage'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { MAX_FINDINGS_TO_LOAD } from '@kbn/cloud-security-posture-common'; import { CloudPostureDataTableResult } from '../../common/hooks/use_cloud_posture_data_table'; import { EmptyState } from '../empty_state'; diff --git a/x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx b/x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx index c3d5e8f8d5a35d..743e5fcb1069da 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/detection_rule_counter.tsx @@ -12,7 +12,6 @@ import type { HttpSetup } from '@kbn/core/public'; import { useHistory } from 'react-router-dom'; import useSessionStorage from 'react-use/lib/useSessionStorage'; import { useQueryClient } from '@tanstack/react-query'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { useFetchDetectionRulesAlertsStatus } from '../common/api/use_fetch_detection_rules_alerts_status'; import { useFetchDetectionRulesByTags } from '../common/api/use_fetch_detection_rules_by_tags'; import { RuleResponse } from '../common/types'; diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx index d1e670560fe9e2..6d471788e5b857 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/custom_assets_extension.tsx @@ -10,7 +10,6 @@ import { type CustomAssetsAccordionProps, CustomAssetsAccordion } from '@kbn/fle import { i18n } from '@kbn/i18n'; import { useParams } from 'react-router-dom'; import { EuiSpacer } from '@elastic/eui'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { CloudSecurityPolicyTemplate } from '../../../common/types_old'; import { VULN_MGMT_POLICY_TEMPLATE } from '../../../common/constants'; import { benchmarksNavigation, cloudPosturePages } from '../../common/navigation/constants'; diff --git a/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx b/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx index 508840ab32b3e8..46a04b8e49858c 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx @@ -22,7 +22,6 @@ import type { HttpSetup } from '@kbn/core/public'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n as kbnI18n } from '@kbn/i18n'; import { QueryClient, useQueryClient } from '@tanstack/react-query'; -// import { useKibana } from '@kbn/cloud-security-posture'; import type { RuleResponse } from '../common/types'; import { CREATE_RULE_ACTION_SUBJ, TAKE_ACTION_SUBJ } from './test_subjects'; import { DETECTION_ENGINE_ALERTS_KEY, DETECTION_ENGINE_RULES_KEY } from '../common/constants'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx index f69f2d1fa24f60..42bdce6f817dea 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx @@ -21,7 +21,6 @@ import { FormattedMessage } from '@kbn/i18n-react'; import useDebounce from 'react-use/lib/useDebounce'; import { i18n } from '@kbn/i18n'; import { pagePathGetters } from '@kbn/fleet-plugin/public'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { CLOUD_SECURITY_POSTURE_PACKAGE_NAME } from '../../../common/constants'; import { CloudPosturePageTitle } from '../../components/cloud_posture_page_title'; import { CloudPosturePage } from '../../components/cloud_posture_page'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx index c3889692b7f678..2da4cc06ddd5d2 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx @@ -21,7 +21,6 @@ import React, { useMemo } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { generatePath } from 'react-router-dom'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { FINDINGS_GROUPING_OPTIONS } from '../../common/constants'; import { useNavigateFindings } from '../../common/hooks/use_navigate_findings'; import type { BenchmarkScore, Benchmark, BenchmarksCisId } from '../../../common/types/latest'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts index 74d675dd330eb5..a45745ea7d416b 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts @@ -6,7 +6,6 @@ */ import { useQuery } from '@tanstack/react-query'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { BENCHMARKS_ROUTE_PATH } from '../../../common/constants'; import type { BenchmarksQueryParams } from '../../../common/types/benchmarks/v1'; import type { GetBenchmarkResponse } from '../../../common/types/latest'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx index 69b713556fad23..d1b681e77347be 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx @@ -32,7 +32,6 @@ import { FormattedDate, FormattedTime } from '@kbn/i18n-react'; import moment from 'moment'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { DASHBOARD_COMPLIANCE_SCORE_CHART } from '../test_subjects'; import { statusColors } from '../../../common/constants'; import { RULE_FAILED, RULE_PASSED } from '../../../../common/constants'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx index fb6dbd10780816..af341d5c04606f 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx @@ -13,7 +13,6 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { Route, Routes } from '@kbn/shared-ux-router'; import { Redirect, useHistory, useLocation } from 'react-router-dom'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { NO_FINDINGS_STATUS_TEST_SUBJ } from '../../components/test_subjects'; import { useCspIntegrationLink } from '../../common/navigation/use_csp_integration_link'; import type { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx index bfd33df68761a6..5ba0d9ce6d3922 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx @@ -35,7 +35,6 @@ import type { HttpSetup } from '@kbn/core/public'; import { generatePath } from 'react-router-dom'; import { css } from '@emotion/react'; import { euiThemeVars } from '@kbn/ui-theme'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { CspFinding } from '@kbn/cloud-security-posture-common'; import { CSP_DATASET, getDatasetDisplayName } from '../../../common/utils/get_dataset_display_name'; import { truthy } from '../../../../common/utils/helpers'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx index d148cf6737578e..6ad65186fae8ff 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx @@ -20,7 +20,6 @@ import type { EuiDescriptionListProps, EuiAccordionProps } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { isEmpty } from 'lodash'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { CspFinding } from '@kbn/cloud-security-posture-common'; import { getDatasetDisplayName } from '../../../common/utils/get_dataset_display_name'; import { truthy } from '../../../../common/utils/helpers'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx index a002b11c5c9b71..b66c1b0897670c 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx @@ -10,7 +10,6 @@ import type { IKibanaSearchResponse } from '@kbn/search-types'; import { GenericBuckets, GroupingQuery, RootAggregation } from '@kbn/grouping/src'; import { useQuery } from '@tanstack/react-query'; import { lastValueFrom } from 'rxjs'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { CSP_LATEST_FINDINGS_DATA_VIEW, showErrorToast } from '@kbn/cloud-security-posture-common'; import { useKibana } from '../../../common/hooks/use_kibana'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx index 3aac4d39f13e1e..9cf633299ba8d2 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/error_callout.tsx @@ -16,7 +16,6 @@ import { import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { useKibana } from '../../../common/hooks/use_kibana'; export const ErrorCallout = ({ error }: { error: Error }) => { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx index d92aed54fdee3d..ec8d4a653c222c 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx @@ -18,7 +18,6 @@ import { i18n } from '@kbn/i18n'; import { useParams } from 'react-router-dom'; import { Chart, Partition, PartitionLayout, Settings } from '@elastic/charts'; import { FormattedMessage } from '@kbn/i18n-react'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { useBenchmarkDynamicValues } from '../../common/hooks/use_benchmark_dynamic_values'; import { getPostureScorePercentage } from '../compliance_dashboard/compliance_charts/compliance_score_chart'; import { RULE_COUNTERS_TEST_SUBJ } from './test_subjects'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx index bd39650ce980d6..f77506eec3edfc 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_flyout.tsx @@ -23,7 +23,6 @@ import { import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { HttpSetup } from '@kbn/core/public'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { getFindingsDetectionRuleSearchTags } from '../../../common/utils/detection_rules'; import { CspBenchmarkRuleMetadata } from '../../../common/types/latest'; import { getRuleList } from '../configurations/findings_flyout/rule_tab'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx index 8ca7ccebcdfebe..ddd5437b13841f 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx @@ -21,7 +21,6 @@ import { import { i18n } from '@kbn/i18n'; import { uniqBy } from 'lodash'; import { HttpSetup } from '@kbn/core/public'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { CloudSecurityPostureStartServices } from '../../types'; import { getFindingsDetectionRuleSearchTags } from '../../../common/utils/detection_rules'; import { ColumnNameWithTooltip } from '../../components/column_name_with_tooltip'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx index a357b5bdae0746..fa954774615c44 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx @@ -24,7 +24,6 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { css } from '@emotion/react'; import { euiThemeVars } from '@kbn/ui-theme'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { getFindingsDetectionRuleSearchTagsFromArrayOfRules } from '../../../common/utils/detection_rules'; import { RuleStateAttributesWithoutStates, diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts index a10865a969ba63..fd8c5bf7949356 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_benchmark_rules.ts @@ -5,7 +5,6 @@ * 2.0. */ import { useQuery } from '@tanstack/react-query'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { FindCspBenchmarkRuleRequest, FindCspBenchmarkRuleResponse, diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts index 8513262898aef0..00c7ae507f2260 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/use_csp_rules_state.ts @@ -6,7 +6,6 @@ */ import { useQuery } from '@tanstack/react-query'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { CspBenchmarkRulesStates } from '@kbn/cloud-security-posture-common'; import { CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH } from '../../../common/constants'; import { useKibana } from '../../common/hooks/use_kibana'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx index 5d604b7e23aa0b..29fe801f68f4e8 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_grouped_vulnerabilities.tsx @@ -10,7 +10,6 @@ import type { IKibanaSearchResponse } from '@kbn/search-types'; import { GenericBuckets, GroupingQuery, RootAggregation } from '@kbn/grouping/src'; import { useQuery } from '@tanstack/react-query'; import { lastValueFrom } from 'rxjs'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { showErrorToast } from '@kbn/cloud-security-posture-common'; import { LATEST_VULNERABILITIES_INDEX_PATTERN } from '../../../../common/constants'; import { useKibana } from '../../../common/hooks/use_kibana'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx index 8ca8b42ad42f29..259055fd909d9c 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/hooks/use_latest_vulnerabilities.tsx @@ -16,7 +16,6 @@ import { } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { buildDataTableRecord } from '@kbn/discover-utils'; import { EsHitRecord } from '@kbn/discover-utils/types'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { FindingsBaseEsQuery } from '@kbn/cloud-security-posture'; import { MAX_FINDINGS_TO_LOAD, showErrorToast } from '@kbn/cloud-security-posture-common'; import { VULNERABILITY_FIELDS } from '../../../common/constants'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx index 61a47eb28fb29d..dcdc9ffccd7ce2 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_trend_graph.tsx @@ -19,7 +19,6 @@ import { EuiButton, EuiComboBox } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -// import { useKibana } from '@kbn/cloud-security-posture'; import { truthy } from '../../../common/utils/helpers'; import { useNavigateVulnerabilities } from '../../common/hooks/use_navigate_findings'; import { VulnStatsTrend, VulnSeverity } from '../../../common/types_old'; From 6656625414130b6c95fd864803af8d684e169ea7 Mon Sep 17 00:00:00 2001 From: animehart Date: Mon, 12 Aug 2024 13:01:29 -0700 Subject: [PATCH 22/33] fix --- .../src/hooks/use_get_benchmark_rules_state_api.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_get_benchmark_rules_state_api.ts b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_get_benchmark_rules_state_api.ts index 12dc6c6af998da..cbc6b8408f3f15 100644 --- a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_get_benchmark_rules_state_api.ts +++ b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_get_benchmark_rules_state_api.ts @@ -12,11 +12,13 @@ import { CspBenchmarkRulesStates, } from '@kbn/cloud-security-posture-common'; import { useKibana } from '@kbn/kibana-react-plugin/public'; +import type { CoreStart } from '@kbn/core/public'; +import type { CspClientPluginStartDeps } from '../../type'; export const getRuleStatesKey = ['get_rules_state_key']; export const useGetCspBenchmarkRulesStatesApi = () => { - const { http } = useKibana().services; + const { http } = useKibana().services; return useQuery(getRuleStatesKey, () => http.get(CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH, { version: CSP_GET_BENCHMARK_RULES_STATE_API_CURRENT_VERSION, From 8539ff29f164647de5f9f1127d796e44d415e1cb Mon Sep 17 00:00:00 2001 From: animehart Date: Tue, 13 Aug 2024 13:32:17 -0700 Subject: [PATCH 23/33] preview only shows up under certain condition --- .../kbn-cloud-security-posture/index.ts | 2 +- .../src/hooks/use_csp_setup_status_api.ts | 25 +++++++++++ .../src/hooks/use_misconfiguration_preview.ts | 43 +++++++------------ .../src/utils/utils.ts | 26 +++++++++++ .../kbn-cloud-security-posture/type.ts | 37 ++++++++++++++++ .../entity_details/host_right/content.tsx | 11 ++++- .../misconfigurations_overview.tsx | 5 +-- 7 files changed, 117 insertions(+), 32 deletions(-) create mode 100644 x-pack/packages/kbn-cloud-security-posture/src/hooks/use_csp_setup_status_api.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/index.ts b/x-pack/packages/kbn-cloud-security-posture/index.ts index ad8c8475a118cf..46ff9620b40ad8 100644 --- a/x-pack/packages/kbn-cloud-security-posture/index.ts +++ b/x-pack/packages/kbn-cloud-security-posture/index.ts @@ -8,5 +8,5 @@ export * from './type'; export { useMisconfigurationPreview } from './src/hooks/use_misconfiguration_preview'; export { useGetCspBenchmarkRulesStatesApi } from './src/hooks/use_get_benchmark_rules_state_api'; -// export { useKibana } from './src/hooks/use_kibana'; +export { useCspSetupStatusApi } from './src/hooks/use_csp_setup_status_api'; export { getAggregationCount, getFindingsCountAggQuery } from './src/utils/utils'; diff --git a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_csp_setup_status_api.ts b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_csp_setup_status_api.ts new file mode 100644 index 00000000000000..e6d91c5a81e4c4 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_csp_setup_status_api.ts @@ -0,0 +1,25 @@ +/* + * 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 { useQuery, type UseQueryOptions } from '@tanstack/react-query'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import type { CoreStart } from '@kbn/core/public'; +// import { STATUS_API_CURRENT_VERSION, STATUS_ROUTE_PATH } from '@kbn/cloud-security-posture-common'; +import type { CspClientPluginStartDeps, CspSetupStatus } from '../../type'; + +const getCspSetupStatusQueryKey = 'csp_status_key'; + +export const useCspSetupStatusApi = ( + options?: UseQueryOptions +) => { + const { http } = useKibana().services; + return useQuery( + [getCspSetupStatusQueryKey], + () => http.get('/internal/cloud_security_posture/status', { version: '1' }), + options + ); +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts index c01eb9ce3deea9..fd224074590d16 100644 --- a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts +++ b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts @@ -4,14 +4,11 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { useInfiniteQuery } from '@tanstack/react-query'; -import { number } from 'io-ts'; +import { useQuery } from '@tanstack/react-query'; import { lastValueFrom } from 'rxjs'; import type { IKibanaSearchResponse, IKibanaSearchRequest } from '@kbn/search-types'; import type { Pagination } from '@elastic/eui'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { buildDataTableRecord } from '@kbn/discover-utils'; -import { EsHitRecord } from '@kbn/discover-utils/types'; import { CSP_LATEST_FINDINGS_DATA_VIEW, LATEST_FINDINGS_RETENTION_POLICY, @@ -24,7 +21,10 @@ import { useKibana } from '@kbn/kibana-react-plugin/public'; import type { CoreStart } from '@kbn/core/public'; import type { CspClientPluginStartDeps } from '../../type'; import type { FindingsBaseEsQuery } from '../../type'; -import { getAggregationCount, getFindingsCountAggQuery } from '../utils/utils'; +import { + getFindingsCountAggQueryMisconfigurationPreview, + getMisconfigurationAggregationCount, +} from '../utils/utils'; import { useGetCspBenchmarkRulesStatesApi } from './use_get_benchmark_rules_state_api'; interface UseFindingsOptions extends FindingsBaseEsQuery { @@ -58,7 +58,7 @@ export const getFindingsQuery = ( index: CSP_LATEST_FINDINGS_DATA_VIEW, sort: getMultiFieldsSort(sort), size: MAX_FINDINGS_TO_LOAD, - aggs: getFindingsCountAggQuery(), + aggs: getFindingsCountAggQueryMisconfigurationPreview(), ignore_unavailable: false, query: { ...query, @@ -127,42 +127,31 @@ export const useMisconfigurationPreview = (options: UseFindingsOptions) => { } = useKibana().services; const { data: rulesStates } = useGetCspBenchmarkRulesStatesApi(); - /** - * We're using useInfiniteQuery in this case to allow the user to fetch more data (if available and up to 10k) - * useInfiniteQuery differs from useQuery because it accumulates and caches a chunk of data from the previous fetches into an array - * it uses the getNextPageParam to know if there are more pages to load and retrieve the position of - * the last loaded record to be used as a from parameter to fetch the next chunk of data. - */ - return useInfiniteQuery( + return useQuery( ['csp_findings', { params: options }, rulesStates], async ({ pageParam }) => { const { - rawResponse: { hits, aggregations }, + rawResponse: { aggregations }, } = await lastValueFrom( data.search.search({ - params: getFindingsQuery(options, rulesStates!, pageParam), // ruleStates always exists since it under the `enabled` dependency. + params: getFindingsQuery(options, rulesStates!, pageParam), }) ); - if (!aggregations) throw new Error('expected aggregations to be an defined'); - if (!Array.isArray(aggregations.count.buckets)) - throw new Error('expected buckets to be an array'); + if (!aggregations) throw new Error('expected aggregations to be defined'); // Failed here return { - page: hits.hits.map((hit) => buildDataTableRecord(hit as EsHitRecord)), - total: number.is(hits.total) ? hits.total : 0, - count: getAggregationCount(aggregations.count.buckets), + count: getMisconfigurationAggregationCount( + Object.entries(aggregations.count.buckets).map(([key, value]) => ({ + key, + doc_count: value.doc_count || 0, + })) + ), }; }, { enabled: options.enabled && !!rulesStates, keepPreviousData: true, onError: (err: Error) => showErrorToast(toasts, err), - getNextPageParam: (lastPage, allPages) => { - if (lastPage.page.length < options.pageSize) { - return undefined; - } - return allPages.length * options.pageSize; - }, } ); }; diff --git a/x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts b/x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts index 22bca49f420475..64d623472345dd 100644 --- a/x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts +++ b/x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts @@ -10,6 +10,18 @@ export const getFindingsCountAggQuery = () => ({ count: { terms: { field: 'result.evaluation' } }, }); +export const getFindingsCountAggQueryMisconfigurationPreview = () => ({ + count: { + filters: { + other_bucket_key: 'other_messages', + filters: { + passed: { match: { 'result.evaluation': 'passed' } }, + failed: { match: { 'result.evaluation': 'failed' } }, + }, + }, + }, +}); + export const getAggregationCount = ( buckets: Array ) => { @@ -21,3 +33,17 @@ export const getAggregationCount = ( failed: failed?.doc_count || 0, }; }; + +export const getMisconfigurationAggregationCount = ( + buckets: Array +) => { + const passed = buckets.find((bucket) => bucket?.key === 'passed'); + const failed = buckets.find((bucket) => bucket?.key === 'failed'); + const noStatus = buckets.find((bucket) => bucket?.key === 'other_messages'); + + return { + passed: passed?.doc_count || 0, + failed: failed?.doc_count || 0, + no_status: noStatus?.doc_count || 0, + }; +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/type.ts b/x-pack/packages/kbn-cloud-security-posture/type.ts index 917c2621579ae8..22061d390a0503 100644 --- a/x-pack/packages/kbn-cloud-security-posture/type.ts +++ b/x-pack/packages/kbn-cloud-security-posture/type.ts @@ -47,3 +47,40 @@ export interface CspClientPluginStartDeps { // optional usageCollection?: UsageCollectionStart; } + +export type CspStatusCode = + | 'indexed' // latest findings index exists and has results + | 'indexing' // index timeout was not surpassed since installation, assumes data is being indexed + | 'unprivileged' // user lacks privileges for the latest findings index + | 'index-timeout' // index timeout was surpassed since installation + | 'not-deployed' // no healthy agents were deployed + | 'not-installed' // number of installed csp integrations is 0; + | 'waiting_for_results'; // have healthy agents but no findings at all, assumes data is being indexed for the 1st time + +export type IndexStatus = + | 'not-empty' // Index contains documents + | 'empty' // Index doesn't contain documents (or doesn't exist) + | 'unprivileged'; // User doesn't have access to query the index + +export interface IndexDetails { + index: string; + status: IndexStatus; +} + +export interface BaseCspSetupBothPolicy { + status: CspStatusCode; + installedPackagePolicies: number; + healthyAgents: number; +} + +export interface BaseCspSetupStatus { + indicesDetails: IndexDetails[]; + latestPackageVersion: string; + cspm: BaseCspSetupBothPolicy; + kspm: BaseCspSetupBothPolicy; + vuln_mgmt: BaseCspSetupBothPolicy; + isPluginInitialized: boolean; + installedPackageVersion?: string | undefined; +} + +export type CspSetupStatus = BaseCspSetupStatus; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx index 3164b63ac79e52..61555eea61a13c 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx @@ -7,6 +7,7 @@ import React from 'react'; import { EuiHorizontalRule } from '@elastic/eui'; +import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; import { AssetCriticalityAccordion } from '../../../entity_analytics/components/asset_criticality/asset_criticality_selector'; import { FlyoutRiskSummary } from '../../../entity_analytics/components/risk_summary_flyout/risk_summary'; import type { RiskScoreState } from '../../../entity_analytics/api/hooks/use_risk_score'; @@ -45,6 +46,14 @@ export const HostPanelContent = ({ isPreviewMode, }: HostPanelContentProps) => { const observedFields = useObservedHostFields(observedHost); + const getSetupStatus = useCspSetupStatusApi({ + refetchInterval: 10000, + }); + + const cspNoInstallation = + getSetupStatus.data?.cspm?.status === 'not-installed' && + getSetupStatus.data?.kspm?.status === 'not-installed' && + getSetupStatus.data?.vuln_mgmt?.status === 'not-installed'; return ( {riskScoreState.isModuleEnabled && riskScoreState.data?.length !== 0 && ( @@ -72,7 +81,7 @@ export const HostPanelContent = ({ queryId={HOST_PANEL_OBSERVED_HOST_QUERY_ID} /> - + {!cspNoInstallation && } ); }; diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx index ba9988a6958c12..7903ccc15e90a5 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx @@ -10,7 +10,6 @@ import { css } from '@emotion/react'; import { EuiFlexGroup, EuiFlexItem, EuiText, useEuiTheme } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { DistributionBar } from '@kbn/security-solution-distribution-bar'; -// import { useLatestFindings } from '@kbn/cloud-security-posture-plugin/public'; import { useMisconfigurationPreview } from '@kbn/cloud-security-posture'; import { euiThemeVars } from '@kbn/ui-theme'; import { ExpandablePanel } from '../../../../shared/components/expandable_panel'; @@ -38,8 +37,8 @@ export const MisconfigurationsOverview = ({ hostName }: { hostName: string }) => pageSize: 1, }); - const passedFindings = data?.pages[0].count.passed || 0; - const failedFindings = data?.pages[0].count.failed || 0; + const passedFindings = data?.count.passed || 0; + const failedFindings = data?.count.failed || 0; const { euiTheme } = useEuiTheme(); const getFindingsStats = (passedFindingsStats: number, failedFindingsStats: number) => { if (passedFindingsStats === 0 && failedFindingsStats === 0) return []; From 0c06dcda9516ad2f6bd6a18dbd02a781987a1de6 Mon Sep 17 00:00:00 2001 From: animehart Date: Tue, 13 Aug 2024 18:04:40 -0700 Subject: [PATCH 24/33] changed so that component only gets rendered when indices is not empty + some clean up --- .../constants.ts | 2 + .../index.ts | 2 + .../types.ts | 37 +++++++++++++++ .../kbn-cloud-security-posture/index.ts | 6 ++- .../src/hooks/use_csp_setup_status_api.ts | 7 +-- .../src/utils/utils.ts | 6 +++ .../kbn-cloud-security-posture/type.ts | 37 --------------- .../common/types_old.ts | 47 ++++--------------- .../policy_template_form.test.tsx | 4 +- .../no_findings_states/no_findings_states.tsx | 2 +- .../components/no_vulnerabilities_states.tsx | 2 +- .../pages/benchmarks/benchmarks.test.tsx | 4 +- .../public/pages/benchmarks/benchmarks.tsx | 2 +- .../compliance_dashboard.test.tsx | 4 +- .../compliance_dashboard.tsx | 2 +- .../pages/configurations/configurations.tsx | 2 +- .../public/pages/findings/findings.tsx | 2 +- .../public/pages/rules/rules.test.tsx | 4 +- .../pages/vulnerabilities/vulnerabilities.tsx | 2 +- .../vulnerabilities/vulnerabilties.test.tsx | 4 +- .../vulnerability_dashboard.test.tsx | 4 +- .../vulnerability_dashboard.tsx | 2 +- .../entity_details/host_right/content.tsx | 10 ++-- 23 files changed, 89 insertions(+), 105 deletions(-) diff --git a/x-pack/packages/kbn-cloud-security-posture-common/constants.ts b/x-pack/packages/kbn-cloud-security-posture-common/constants.ts index fcb7cd367360cf..1d9c9c1db3e889 100644 --- a/x-pack/packages/kbn-cloud-security-posture-common/constants.ts +++ b/x-pack/packages/kbn-cloud-security-posture-common/constants.ts @@ -12,3 +12,5 @@ export const MAX_FINDINGS_TO_LOAD = 500; export const CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH = '/internal/cloud_security_posture/rules/_get_states'; export const CSP_GET_BENCHMARK_RULES_STATE_API_CURRENT_VERSION = '1'; +export const STATUS_ROUTE_PATH = '/internal/cloud_security_posture/status'; +export const STATUS_API_CURRENT_VERSION = '1'; diff --git a/x-pack/packages/kbn-cloud-security-posture-common/index.ts b/x-pack/packages/kbn-cloud-security-posture-common/index.ts index 8c7fa7b7bc9f15..9aa5a782af8494 100644 --- a/x-pack/packages/kbn-cloud-security-posture-common/index.ts +++ b/x-pack/packages/kbn-cloud-security-posture-common/index.ts @@ -4,6 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ + +export * from './types'; export * from './constants'; export * from './schema/csp_finding'; export type { CspBenchmarkRulesStates } from './types/latest'; diff --git a/x-pack/packages/kbn-cloud-security-posture-common/types.ts b/x-pack/packages/kbn-cloud-security-posture-common/types.ts index 1fec1c76430ebd..1a48a7bb41f2a4 100644 --- a/x-pack/packages/kbn-cloud-security-posture-common/types.ts +++ b/x-pack/packages/kbn-cloud-security-posture-common/types.ts @@ -4,3 +4,40 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ + +export type CspStatusCode = + | 'indexed' // latest findings index exists and has results + | 'indexing' // index timeout was not surpassed since installation, assumes data is being indexed + | 'unprivileged' // user lacks privileges for the latest findings index + | 'index-timeout' // index timeout was surpassed since installation + | 'not-deployed' // no healthy agents were deployed + | 'not-installed' // number of installed csp integrations is 0; + | 'waiting_for_results'; // have healthy agents but no findings at all, assumes data is being indexed for the 1st time + +export type IndexStatus = + | 'not-empty' // Index contains documents + | 'empty' // Index doesn't contain documents (or doesn't exist) + | 'unprivileged'; // User doesn't have access to query the index + +export interface IndexDetails { + index: string; + status: IndexStatus; +} + +export interface BaseCspSetupBothPolicy { + status: CspStatusCode; + installedPackagePolicies: number; + healthyAgents: number; +} + +export interface BaseCspSetupStatus { + indicesDetails: IndexDetails[]; + latestPackageVersion: string; + cspm: BaseCspSetupBothPolicy; + kspm: BaseCspSetupBothPolicy; + vuln_mgmt: BaseCspSetupBothPolicy; + isPluginInitialized: boolean; + installedPackageVersion?: string | undefined; +} + +export type CspSetupStatus = BaseCspSetupStatus; diff --git a/x-pack/packages/kbn-cloud-security-posture/index.ts b/x-pack/packages/kbn-cloud-security-posture/index.ts index 46ff9620b40ad8..b49d6e83bd79e5 100644 --- a/x-pack/packages/kbn-cloud-security-posture/index.ts +++ b/x-pack/packages/kbn-cloud-security-posture/index.ts @@ -9,4 +9,8 @@ export * from './type'; export { useMisconfigurationPreview } from './src/hooks/use_misconfiguration_preview'; export { useGetCspBenchmarkRulesStatesApi } from './src/hooks/use_get_benchmark_rules_state_api'; export { useCspSetupStatusApi } from './src/hooks/use_csp_setup_status_api'; -export { getAggregationCount, getFindingsCountAggQuery } from './src/utils/utils'; +export { + getAggregationCount, + getFindingsCountAggQuery, + isAllIndicesEmpty, +} from './src/utils/utils'; diff --git a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_csp_setup_status_api.ts b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_csp_setup_status_api.ts index e6d91c5a81e4c4..1da7f9e9050650 100644 --- a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_csp_setup_status_api.ts +++ b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_csp_setup_status_api.ts @@ -8,8 +8,9 @@ import { useQuery, type UseQueryOptions } from '@tanstack/react-query'; import { useKibana } from '@kbn/kibana-react-plugin/public'; import type { CoreStart } from '@kbn/core/public'; -// import { STATUS_API_CURRENT_VERSION, STATUS_ROUTE_PATH } from '@kbn/cloud-security-posture-common'; -import type { CspClientPluginStartDeps, CspSetupStatus } from '../../type'; +import { STATUS_API_CURRENT_VERSION, STATUS_ROUTE_PATH } from '@kbn/cloud-security-posture-common'; +import type { CspSetupStatus } from '@kbn/cloud-security-posture-common'; +import type { CspClientPluginStartDeps } from '../../type'; const getCspSetupStatusQueryKey = 'csp_status_key'; @@ -19,7 +20,7 @@ export const useCspSetupStatusApi = ( const { http } = useKibana().services; return useQuery( [getCspSetupStatusQueryKey], - () => http.get('/internal/cloud_security_posture/status', { version: '1' }), + () => http.get(STATUS_ROUTE_PATH, { version: STATUS_API_CURRENT_VERSION }), options ); }; diff --git a/x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts b/x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts index 64d623472345dd..37aaa33b38c50d 100644 --- a/x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts +++ b/x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts @@ -5,6 +5,7 @@ * 2.0. */ import type { estypes } from '@elastic/elasticsearch'; +import { IndexDetails } from '@kbn/cloud-security-posture-common'; export const getFindingsCountAggQuery = () => ({ count: { terms: { field: 'result.evaluation' } }, @@ -47,3 +48,8 @@ export const getMisconfigurationAggregationCount = ( no_status: noStatus?.doc_count || 0, }; }; + +export const isAllIndicesEmpty = (indices: Array) => { + const notEmptyIndices = indices.find((indice) => indice?.status !== 'empty'); + return notEmptyIndices ? false : true; +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/type.ts b/x-pack/packages/kbn-cloud-security-posture/type.ts index 22061d390a0503..917c2621579ae8 100644 --- a/x-pack/packages/kbn-cloud-security-posture/type.ts +++ b/x-pack/packages/kbn-cloud-security-posture/type.ts @@ -47,40 +47,3 @@ export interface CspClientPluginStartDeps { // optional usageCollection?: UsageCollectionStart; } - -export type CspStatusCode = - | 'indexed' // latest findings index exists and has results - | 'indexing' // index timeout was not surpassed since installation, assumes data is being indexed - | 'unprivileged' // user lacks privileges for the latest findings index - | 'index-timeout' // index timeout was surpassed since installation - | 'not-deployed' // no healthy agents were deployed - | 'not-installed' // number of installed csp integrations is 0; - | 'waiting_for_results'; // have healthy agents but no findings at all, assumes data is being indexed for the 1st time - -export type IndexStatus = - | 'not-empty' // Index contains documents - | 'empty' // Index doesn't contain documents (or doesn't exist) - | 'unprivileged'; // User doesn't have access to query the index - -export interface IndexDetails { - index: string; - status: IndexStatus; -} - -export interface BaseCspSetupBothPolicy { - status: CspStatusCode; - installedPackagePolicies: number; - healthyAgents: number; -} - -export interface BaseCspSetupStatus { - indicesDetails: IndexDetails[]; - latestPackageVersion: string; - cspm: BaseCspSetupBothPolicy; - kspm: BaseCspSetupBothPolicy; - vuln_mgmt: BaseCspSetupBothPolicy; - isPluginInitialized: boolean; - installedPackageVersion?: string | undefined; -} - -export type CspSetupStatus = BaseCspSetupStatus; diff --git a/x-pack/plugins/cloud_security_posture/common/types_old.ts b/x-pack/plugins/cloud_security_posture/common/types_old.ts index 0d7a8768d9d940..a97ac02df59d12 100644 --- a/x-pack/plugins/cloud_security_posture/common/types_old.ts +++ b/x-pack/plugins/cloud_security_posture/common/types_old.ts @@ -11,6 +11,16 @@ import { SUPPORTED_CLOUDBEAT_INPUTS, SUPPORTED_POLICY_TEMPLATES } from './consta import { getComplianceDashboardSchema } from './schemas/stats'; import type { CspBenchmarkRuleMetadata } from './types/latest'; +export type { + CspFinding, + CspStatusCode, + IndexStatus, + IndexDetails, + BaseCspSetupBothPolicy, + BaseCspSetupStatus, + CspSetupStatus, +} from '@kbn/cloud-security-posture-common'; + export type AwsCredentialsType = | 'assume_role' | 'direct_access_keys' @@ -100,43 +110,6 @@ export interface ComplianceDashboardDataV2 { benchmarks: BenchmarkData[]; } -export type CspStatusCode = - | 'indexed' // latest findings index exists and has results - | 'indexing' // index timeout was not surpassed since installation, assumes data is being indexed - | 'unprivileged' // user lacks privileges for the latest findings index - | 'index-timeout' // index timeout was surpassed since installation - | 'not-deployed' // no healthy agents were deployed - | 'not-installed' // number of installed csp integrations is 0; - | 'waiting_for_results'; // have healthy agents but no findings at all, assumes data is being indexed for the 1st time - -export type IndexStatus = - | 'not-empty' // Index contains documents - | 'empty' // Index doesn't contain documents (or doesn't exist) - | 'unprivileged'; // User doesn't have access to query the index - -export interface IndexDetails { - index: string; - status: IndexStatus; -} - -export interface BaseCspSetupBothPolicy { - status: CspStatusCode; - installedPackagePolicies: number; - healthyAgents: number; -} - -export interface BaseCspSetupStatus { - indicesDetails: IndexDetails[]; - latestPackageVersion: string; - cspm: BaseCspSetupBothPolicy; - kspm: BaseCspSetupBothPolicy; - vuln_mgmt: BaseCspSetupBothPolicy; - isPluginInitialized: boolean; - installedPackageVersion?: string | undefined; -} - -export type CspSetupStatus = BaseCspSetupStatus; - export type BenchmarkId = CspBenchmarkRuleMetadata['benchmark']['id']; export type BenchmarkName = CspBenchmarkRuleMetadata['benchmark']['name']; export type RuleSection = CspBenchmarkRuleMetadata['section']; diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx index 116170b2ac29c9..d47a0740339e0d 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx @@ -39,7 +39,7 @@ import { } from '../../../common/constants'; import { useParams } from 'react-router-dom'; import { createReactQueryResponse } from '../../test/fixtures/react_query'; -import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; +import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; import { usePackagePolicyList } from '../../common/api/use_package_policy_list'; import { waitForEuiPopoverOpen } from '@elastic/eui/lib/test/rtl'; import { @@ -64,7 +64,7 @@ jest.mock('react-router-dom', () => ({ integration: undefined, }), })); -jest.mock('../../common/api/use_setup_status_api'); +jest.mock('@kbn/cloud-security-posture'); // Mock use_setup_status_api jest.mock('../../common/api/use_package_policy_list'); jest.mock('@kbn/fleet-plugin/public/services/experimental_features'); diff --git a/x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.tsx b/x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.tsx index 97dfce7b84c1ec..9f2639c958001a 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/no_findings_states/no_findings_states.tsx @@ -20,6 +20,7 @@ import { import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; +import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; import { CSPM_POLICY_TEMPLATE, KSPM_POLICY_TEMPLATE } from '../../../common/constants'; import { FullSizeCenteredPage } from '../full_size_centered_page'; import { useCISIntegrationPoliciesLink } from '../../common/navigation/use_navigate_to_cis_integration_policies'; @@ -29,7 +30,6 @@ import { NO_FINDINGS_STATUS_TEST_SUBJ, } from '../test_subjects'; import { CloudPosturePage, PACKAGE_NOT_INSTALLED_TEST_SUBJECT } from '../cloud_posture_page'; -import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; import type { IndexDetails, PostureTypes, CspStatusCode } from '../../../common/types_old'; import noDataIllustration from '../../assets/illustrations/no_data_illustration.svg'; import { useCspIntegrationLink } from '../../common/navigation/use_csp_integration_link'; diff --git a/x-pack/plugins/cloud_security_posture/public/components/no_vulnerabilities_states.tsx b/x-pack/plugins/cloud_security_posture/public/components/no_vulnerabilities_states.tsx index a2b1aa1d0d8315..c5195c56702528 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/no_vulnerabilities_states.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/no_vulnerabilities_states.tsx @@ -21,10 +21,10 @@ import { import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; +import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; import { VULN_MGMT_POLICY_TEMPLATE } from '../../common/constants'; import { FullSizeCenteredPage } from './full_size_centered_page'; import { CloudPosturePage } from './cloud_posture_page'; -import { useCspSetupStatusApi } from '../common/api/use_setup_status_api'; import type { IndexDetails } from '../../common/types_old'; import { NO_VULNERABILITIES_STATUS_TEST_SUBJ, diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx index e5fed03fc96767..6b278ec01cdabf 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.test.tsx @@ -14,14 +14,14 @@ import { TestProvider } from '../../test/test_provider'; import { Benchmarks } from './benchmarks'; import * as TEST_SUBJ from './test_subjects'; import { useCspBenchmarkIntegrationsV2 } from './use_csp_benchmark_integrations'; -import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; +import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; import { useSubscriptionStatus } from '../../common/hooks/use_subscription_status'; import { useCspIntegrationLink } from '../../common/navigation/use_csp_integration_link'; import { ERROR_STATE_TEST_SUBJECT } from './benchmarks_table'; import { useLicenseManagementLocatorApi } from '../../common/api/use_license_management_locator_api'; jest.mock('./use_csp_benchmark_integrations'); -jest.mock('../../common/api/use_setup_status_api'); +jest.mock('@kbn/cloud-security-posture'); // Mock use_setup_status_api jest.mock('../../common/api/use_license_management_locator_api'); jest.mock('../../common/hooks/use_subscription_status'); jest.mock('../../common/navigation/use_csp_integration_link'); diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx index 42bdce6f817dea..15ceca2c73d811 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx @@ -21,6 +21,7 @@ import { FormattedMessage } from '@kbn/i18n-react'; import useDebounce from 'react-use/lib/useDebounce'; import { i18n } from '@kbn/i18n'; import { pagePathGetters } from '@kbn/fleet-plugin/public'; +import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; import { CLOUD_SECURITY_POSTURE_PACKAGE_NAME } from '../../../common/constants'; import { CloudPosturePageTitle } from '../../components/cloud_posture_page_title'; import { CloudPosturePage } from '../../components/cloud_posture_page'; @@ -36,7 +37,6 @@ import { NO_FINDINGS_STATUS_REFRESH_INTERVAL_MS, } from '../../common/constants'; import { usePageSize } from '../../common/hooks/use_page_size'; -import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; import { NoFindingsStates } from '../../components/no_findings_states'; import { useKibana } from '../../common/hooks/use_kibana'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx index b3ed9cff8dc094..7795f67aed9a8f 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx @@ -11,7 +11,7 @@ import { coreMock } from '@kbn/core/public/mocks'; import { render, screen } from '@testing-library/react'; import { TestProvider } from '../../test/test_provider'; import { ComplianceDashboard, getDefaultTab } from '.'; -import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; +import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; import { useLicenseManagementLocatorApi } from '../../common/api/use_license_management_locator_api'; import { useSubscriptionStatus } from '../../common/hooks/use_subscription_status'; import { useKspmStatsApi, useCspmStatsApi } from '../../common/api/use_stats_api'; @@ -40,7 +40,7 @@ import { import { cloudPosturePages } from '../../common/navigation/constants'; import { MemoryRouter } from 'react-router-dom'; -jest.mock('../../common/api/use_setup_status_api'); +jest.mock('@kbn/cloud-security-posture'); // Mock use_setup_status_api jest.mock('../../common/api/use_stats_api'); jest.mock('../../common/api/use_license_management_locator_api'); jest.mock('../../common/hooks/use_subscription_status'); diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx index af341d5c04606f..11e3272245937a 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx @@ -13,6 +13,7 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { Route, Routes } from '@kbn/shared-ux-router'; import { Redirect, useHistory, useLocation } from 'react-router-dom'; +import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; import { NO_FINDINGS_STATUS_TEST_SUBJ } from '../../components/test_subjects'; import { useCspIntegrationLink } from '../../common/navigation/use_csp_integration_link'; import type { @@ -37,7 +38,6 @@ import { CLOUD_POSTURE_DASHBOARD_PAGE_HEADER, } from './test_subjects'; import { useCspmStatsApi, useKspmStatsApi } from '../../common/api/use_stats_api'; -import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; import { NoFindingsStates } from '../../components/no_findings_states'; import { SummarySection } from './dashboard_sections/summary_section'; import { BenchmarksSection } from './dashboard_sections/benchmarks_section'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx index 1c94500579e480..c6cef88420fd91 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx @@ -8,8 +8,8 @@ import React from 'react'; import { Redirect, useLocation } from 'react-router-dom'; import { Routes, Route } from '@kbn/shared-ux-router'; import { TrackApplicationView } from '@kbn/usage-collection-plugin/public'; +import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; import { LATEST_FINDINGS_INDEX_PATTERN } from '../../../common/constants'; -import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; import { NoFindingsStates } from '../../components/no_findings_states'; import { CloudPosturePage, defaultLoadingRenderer } from '../../components/cloud_posture_page'; import { useDataView } from '../../common/api/use_data_view'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.tsx b/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.tsx index f8d91d52502342..2bce21e36741ef 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.tsx @@ -10,11 +10,11 @@ import { EuiSpacer, EuiTab, EuiTabs, EuiTitle } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { Redirect, useHistory, useLocation, matchPath } from 'react-router-dom'; import { Routes, Route } from '@kbn/shared-ux-router'; +import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; import { Configurations } from '../configurations'; import { cloudPosturePages, findingsNavigation } from '../../common/navigation/constants'; import { LOCAL_STORAGE_FINDINGS_LAST_SELECTED_TAB_KEY } from '../../common/constants'; import { VULNERABILITIES_INDEX_NAME, FINDINGS_INDEX_NAME } from '../../../common/constants'; -import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; import { getStatusForIndexName } from '../../../common/utils/helpers'; import { Vulnerabilities } from '../vulnerabilities'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx index 66829ee739010e..848e2343e05014 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules.test.tsx @@ -10,19 +10,19 @@ import Chance from 'chance'; import { Rules } from '.'; import { render, screen } from '@testing-library/react'; import { QueryClient } from '@tanstack/react-query'; +import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; import { TestProvider } from '../../test/test_provider'; import { type RouteComponentProps } from 'react-router-dom'; import { PageUrlParams } from '../../../common/types/latest'; import { createReactQueryResponse } from '../../test/fixtures/react_query'; import { coreMock } from '@kbn/core/public/mocks'; -import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; import { useSubscriptionStatus } from '../../common/hooks/use_subscription_status'; import { useCspIntegrationLink } from '../../common/navigation/use_csp_integration_link'; import { useLicenseManagementLocatorApi } from '../../common/api/use_license_management_locator_api'; import { useCspBenchmarkIntegrationsV2 } from '../benchmarks/use_csp_benchmark_integrations'; import * as TEST_SUBJECTS from './test_subjects'; -jest.mock('../../common/api/use_setup_status_api'); +jest.mock('@kbn/cloud-security-posture'); // Mock use_setup_status_api jest.mock('../../common/api/use_license_management_locator_api'); jest.mock('../../common/hooks/use_subscription_status'); jest.mock('../../common/navigation/use_csp_integration_link'); diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities.tsx index 7f48cf18fb044c..0837baeb117ecd 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities.tsx @@ -6,9 +6,9 @@ */ import React from 'react'; import { Routes, Route } from '@kbn/shared-ux-router'; +import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; import { LATEST_VULNERABILITIES_INDEX_PATTERN } from '../../../common/constants'; import { NoVulnerabilitiesStates } from '../../components/no_vulnerabilities_states'; -import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; import { CloudPosturePage } from '../../components/cloud_posture_page'; import { findingsNavigation } from '../../common/navigation/constants'; import { useDataView } from '../../common/api/use_data_view'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx index 9aa7af30c62c70..6e420231de7c86 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilties.test.tsx @@ -8,11 +8,11 @@ import React from 'react'; import Chance from 'chance'; import { Vulnerabilities } from './vulnerabilities'; import { CSP_LATEST_FINDINGS_DATA_VIEW } from '@kbn/cloud-security-posture-common'; +import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; import { LATEST_VULNERABILITIES_INDEX_DEFAULT_NS, VULN_MGMT_POLICY_TEMPLATE, } from '../../../common/constants'; -import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; import { useDataView } from '../../common/api/use_data_view'; import { useSubscriptionStatus } from '../../common/hooks/use_subscription_status'; import { createReactQueryResponse } from '../../test/fixtures/react_query'; @@ -29,7 +29,7 @@ import { useLicenseManagementLocatorApi } from '../../common/api/use_license_man import { createStubDataView } from '@kbn/data-views-plugin/common/stubs'; jest.mock('../../common/api/use_data_view'); -jest.mock('../../common/api/use_setup_status_api'); +jest.mock('@kbn/cloud-security-posture'); // Mock use_setup_status_api jest.mock('../../common/api/use_license_management_locator_api'); jest.mock('../../common/hooks/use_subscription_status'); jest.mock('../../common/navigation/use_navigate_to_cis_integration_policies'); diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx index 9e68d5d051c6b2..eec172e1c01ff6 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.test.tsx @@ -8,13 +8,13 @@ import React from 'react'; import Chance from 'chance'; import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks'; +import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; import { LATEST_VULNERABILITIES_INDEX_DEFAULT_NS, VULN_MGMT_POLICY_TEMPLATE, } from '../../../common/constants'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { discoverPluginMock } from '@kbn/discover-plugin/public/mocks'; -import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; import { useSubscriptionStatus } from '../../common/hooks/use_subscription_status'; import { createReactQueryResponse } from '../../test/fixtures/react_query'; import { useCISIntegrationPoliciesLink } from '../../common/navigation/use_navigate_to_cis_integration_policies'; @@ -33,7 +33,7 @@ import { useVulnerabilityDashboardApi } from '../../common/api/use_vulnerability import { mockCnvmDashboardData } from './_mocks_/vulnerability_dashboard.mock'; jest.mock('../../common/api/use_data_view'); -jest.mock('../../common/api/use_setup_status_api'); +jest.mock('@kbn/cloud-security-posture'); // Mock use_setup_status_api jest.mock('../../common/api/use_license_management_locator_api'); jest.mock('../../common/hooks/use_subscription_status'); jest.mock('../../common/navigation/use_navigate_to_cis_integration_policies'); diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.tsx index 33c1a5fdad4d7b..0a0a0ff21749a6 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_dashboard.tsx @@ -7,9 +7,9 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { EuiPageHeader, EuiSpacer } from '@elastic/eui'; +import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; import { useVulnerabilityDashboardApi } from '../../common/api/use_vulnerability_dashboard_api'; import { VulnerabilityTrendGraph } from './vulnerability_trend_graph'; -import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; import { NoVulnerabilitiesStates } from '../../components/no_vulnerabilities_states'; import { VULNERABILITY_DASHBOARD_CONTAINER, diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx index 61555eea61a13c..ccefa85ff1fd04 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { EuiHorizontalRule } from '@elastic/eui'; -import { useCspSetupStatusApi } from '@kbn/cloud-security-posture'; +import { useCspSetupStatusApi, isAllIndicesEmpty } from '@kbn/cloud-security-posture'; import { AssetCriticalityAccordion } from '../../../entity_analytics/components/asset_criticality/asset_criticality_selector'; import { FlyoutRiskSummary } from '../../../entity_analytics/components/risk_summary_flyout/risk_summary'; import type { RiskScoreState } from '../../../entity_analytics/api/hooks/use_risk_score'; @@ -49,11 +49,7 @@ export const HostPanelContent = ({ const getSetupStatus = useCspSetupStatusApi({ refetchInterval: 10000, }); - - const cspNoInstallation = - getSetupStatus.data?.cspm?.status === 'not-installed' && - getSetupStatus.data?.kspm?.status === 'not-installed' && - getSetupStatus.data?.vuln_mgmt?.status === 'not-installed'; + const cspAllIndicesEmpty = isAllIndicesEmpty(getSetupStatus.data?.indicesDetails || []); return ( {riskScoreState.isModuleEnabled && riskScoreState.data?.length !== 0 && ( @@ -81,7 +77,7 @@ export const HostPanelContent = ({ queryId={HOST_PANEL_OBSERVED_HOST_QUERY_ID} /> - {!cspNoInstallation && } + {!cspAllIndicesEmpty && } ); }; From b48d13a13ae4ea6bae1298e50e4595a6d7b5f3fb Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Wed, 14 Aug 2024 01:19:56 +0000 Subject: [PATCH 25/33] [CI] Auto-commit changed files from 'node scripts/lint_ts_projects --fix' --- x-pack/packages/kbn-cloud-security-posture/tsconfig.json | 1 - 1 file changed, 1 deletion(-) diff --git a/x-pack/packages/kbn-cloud-security-posture/tsconfig.json b/x-pack/packages/kbn-cloud-security-posture/tsconfig.json index 651af6bb791e20..5d1aaa8774d15e 100644 --- a/x-pack/packages/kbn-cloud-security-posture/tsconfig.json +++ b/x-pack/packages/kbn-cloud-security-posture/tsconfig.json @@ -20,7 +20,6 @@ "@kbn/core", "@kbn/cloud-security-posture-common", "@kbn/search-types", - "@kbn/discover-utils", "@kbn/licensing-plugin", "@kbn/data-views-plugin", "@kbn/unified-search-plugin", From dcae12092bb8ca8956f0e90eac0fafe9bc2b935e Mon Sep 17 00:00:00 2001 From: animehart Date: Tue, 13 Aug 2024 22:27:45 -0700 Subject: [PATCH 26/33] fix ci --- .../plugins/cloud_security_posture/common/types_old.ts | 10 +++++++++- .../server/lib/telemetry/collectors/types.ts | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/cloud_security_posture/common/types_old.ts b/x-pack/plugins/cloud_security_posture/common/types_old.ts index a97ac02df59d12..1e086ef2ba4c3b 100644 --- a/x-pack/plugins/cloud_security_posture/common/types_old.ts +++ b/x-pack/plugins/cloud_security_posture/common/types_old.ts @@ -13,7 +13,6 @@ import type { CspBenchmarkRuleMetadata } from './types/latest'; export type { CspFinding, - CspStatusCode, IndexStatus, IndexDetails, BaseCspSetupBothPolicy, @@ -203,3 +202,12 @@ export interface AggFieldBucket { doc_count?: string; }>; } + +export type CspStatusCode = + | 'indexed' // latest findings index exists and has results + | 'indexing' // index timeout was not surpassed since installation, assumes data is being indexed + | 'unprivileged' // user lacks privileges for the latest findings index + | 'index-timeout' // index timeout was surpassed since installation + | 'not-deployed' // no healthy agents were deployed + | 'not-installed' // number of installed csp integrations is 0; + | 'waiting_for_results'; // have healthy agents but no findings at all, assumes data is being indexed for the 1st time \ No newline at end of file diff --git a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/types.ts b/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/types.ts index baa4601565c858..d5db37879554b9 100644 --- a/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/types.ts +++ b/x-pack/plugins/cloud_security_posture/server/lib/telemetry/collectors/types.ts @@ -6,7 +6,7 @@ */ import { AggregationsMultiBucketBase } from '@elastic/elasticsearch/lib/api/types'; -import { CspStatusCode } from '@kbn/cloud-security-posture-common'; +import { CspStatusCode } from '../../../../common/types_old'; export type CloudSecurityUsageCollectorType = | 'Indices' From f46f40dfc4a871e308b9876b901038bdb87a8da0 Mon Sep 17 00:00:00 2001 From: animehart Date: Tue, 13 Aug 2024 22:47:35 -0700 Subject: [PATCH 27/33] quick check fix --- x-pack/plugins/cloud_security_posture/common/types_old.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/cloud_security_posture/common/types_old.ts b/x-pack/plugins/cloud_security_posture/common/types_old.ts index 1e086ef2ba4c3b..526b6536ba94da 100644 --- a/x-pack/plugins/cloud_security_posture/common/types_old.ts +++ b/x-pack/plugins/cloud_security_posture/common/types_old.ts @@ -210,4 +210,4 @@ export type CspStatusCode = | 'index-timeout' // index timeout was surpassed since installation | 'not-deployed' // no healthy agents were deployed | 'not-installed' // number of installed csp integrations is 0; - | 'waiting_for_results'; // have healthy agents but no findings at all, assumes data is being indexed for the 1st time \ No newline at end of file + | 'waiting_for_results'; // have healthy agents but no findings at all, assumes data is being indexed for the 1st time From 23bb27088e8b9d17d651a68e659af350f5302503 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Wed, 14 Aug 2024 06:36:10 +0000 Subject: [PATCH 28/33] [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' --- .../configurations/latest_findings/use_grouped_findings.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx index f0143e329d938a..341485008e6e3c 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_grouped_findings.tsx @@ -10,7 +10,10 @@ import type { IKibanaSearchResponse } from '@kbn/search-types'; import { GenericBuckets, GroupingQuery, RootAggregation } from '@kbn/grouping/src'; import { useQuery } from '@tanstack/react-query'; import { lastValueFrom } from 'rxjs'; -import { CDR_MISCONFIGURATIONS_INDEX_PATTERN, showErrorToast } from '@kbn/cloud-security-posture-common'; +import { + CDR_MISCONFIGURATIONS_INDEX_PATTERN, + showErrorToast, +} from '@kbn/cloud-security-posture-common'; import { useKibana } from '../../../common/hooks/use_kibana'; // Elasticsearch returns `null` when a sub-aggregation cannot be computed From c8922f9584e889f33f49b9e8d82cbb5c50bec6a7 Mon Sep 17 00:00:00 2001 From: animehart Date: Wed, 14 Aug 2024 09:46:00 -0700 Subject: [PATCH 29/33] clean up + update cypress --- .../public/common/api/use_setup_status_api.ts | 24 ------------------- .../host_details_insight_accordion.cy.ts | 10 ++++---- 2 files changed, 5 insertions(+), 29 deletions(-) delete mode 100644 x-pack/plugins/cloud_security_posture/public/common/api/use_setup_status_api.ts diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_setup_status_api.ts b/x-pack/plugins/cloud_security_posture/public/common/api/use_setup_status_api.ts deleted file mode 100644 index 35f49282a475e0..00000000000000 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_setup_status_api.ts +++ /dev/null @@ -1,24 +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 { useQuery, type UseQueryOptions } from '@tanstack/react-query'; -import { useKibana } from '../hooks/use_kibana'; -import { type CspSetupStatus } from '../../../common/types_old'; -import { STATUS_API_CURRENT_VERSION, STATUS_ROUTE_PATH } from '../../../common/constants'; - -const getCspSetupStatusQueryKey = 'csp_status_key'; - -export const useCspSetupStatusApi = ( - options?: UseQueryOptions -) => { - const { http } = useKibana().services; - return useQuery( - [getCspSetupStatusQueryKey], - () => http.get(STATUS_ROUTE_PATH, { version: STATUS_API_CURRENT_VERSION }), - options - ); -}; diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/host_details_insight_accordion.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/host_details_insight_accordion.cy.ts index f00e1f1a48f3d5..a7901860a6509f 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/host_details_insight_accordion.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/host_details_insight_accordion.cy.ts @@ -28,11 +28,11 @@ describe('Alert Host details expandable flyout', { tags: ['@ess', '@serverless'] expandFirstAlertHostFlyout(); }); - it('should display Misconfiguration preview under Insights Entities', () => { - cy.log('check if Misconfiguration preview section is rendered'); - cy.get(HOST_INSIGHT_MISCONFIGURATION).should('exist'); + it('should not display Misconfiguration preview under Insights Entities when all Indices is empty', () => { + cy.log('check if Misconfiguration preview section is not rendered'); + cy.get(HOST_INSIGHT_MISCONFIGURATION).should('not.exist'); - cy.log('check if Misconfiguration preview title is shown'); - cy.get(HOST_INSIGHT_MISCONFIGURATION_TITLE).should('exist'); + cy.log('check if Misconfiguration preview title is not shown'); + cy.get(HOST_INSIGHT_MISCONFIGURATION_TITLE).should('not.exist'); }); }); From c7113be5efd3345412364fd19599f50f1767f4c1 Mon Sep 17 00:00:00 2001 From: animehart Date: Wed, 14 Aug 2024 11:22:54 -0700 Subject: [PATCH 30/33] fix ci --- .../public/components/cloud_posture_page.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx index 05fedd4d8adec5..4c341dea206f14 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx @@ -27,7 +27,7 @@ import { useLicenseManagementLocatorApi } from '../common/api/use_license_manage const chance = new Chance(); -jest.mock('../common/api/use_setup_status_api'); +jest.mock('@kbn/cloud-security-posture'); // Mock use_setup_status_api jest.mock('../common/api/use_license_management_locator_api'); jest.mock('../common/hooks/use_subscription_status'); jest.mock('../common/navigation/use_csp_integration_link'); From cbb5b519446be74c0dcdf0ac97a63cfe536202a8 Mon Sep 17 00:00:00 2001 From: animehart Date: Wed, 14 Aug 2024 15:37:15 -0700 Subject: [PATCH 31/33] more cleanup --- .../src/hooks/use_misconfiguration_preview.ts | 47 +------------------ 1 file changed, 1 insertion(+), 46 deletions(-) diff --git a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts index 21bf8a6871f659..3a3b3e83d300e6 100644 --- a/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts +++ b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_misconfiguration_preview.ts @@ -7,7 +7,6 @@ import { useQuery } from '@tanstack/react-query'; import { lastValueFrom } from 'rxjs'; import type { IKibanaSearchResponse, IKibanaSearchRequest } from '@kbn/search-types'; -import type { Pagination } from '@elastic/eui'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { CDR_MISCONFIGURATIONS_INDEX_PATTERN, @@ -33,11 +32,6 @@ interface UseFindingsOptions extends FindingsBaseEsQuery { pageSize: number; } -export interface FindingsGroupByNoneQuery { - pageIndex: Pagination['pageIndex']; - sort: any; -} - type LatestFindingsRequest = IKibanaSearchRequest; type LatestFindingsResponse = IKibanaSearchResponse< estypes.SearchResponse @@ -56,7 +50,6 @@ export const getFindingsQuery = ( return { index: CDR_MISCONFIGURATIONS_INDEX_PATTERN, - sort: getMultiFieldsSort(sort), size: MAX_FINDINGS_TO_LOAD, aggs: getFindingsCountAggQueryMisconfigurationPreview(), ignore_unavailable: false, @@ -82,44 +75,6 @@ export const getFindingsQuery = ( }; }; -const getMultiFieldsSort = (sort: string[][]) => { - return sort.map(([id, direction]) => { - return { - ...getSortField({ field: id, direction }), - }; - }); -}; - -/** - * By default, ES will sort keyword fields in case-sensitive format, the - * following fields are required to have a case-insensitive sorting. - */ -const fieldsRequiredSortingByPainlessScript = [ - 'rule.section', - 'resource.name', - 'resource.sub_type', -]; - -/** - * Generates Painless sorting if the given field is matched or returns default sorting - * This painless script will sort the field in case-insensitive manner - */ -const getSortField = ({ field, direction }: { field: string; direction: string }) => { - if (fieldsRequiredSortingByPainlessScript.includes(field)) { - return { - _script: { - type: 'string', - order: direction, - script: { - source: `doc["${field}"].value.toLowerCase()`, - lang: 'painless', - }, - }, - }; - } - return { [field]: direction }; -}; - export const useMisconfigurationPreview = (options: UseFindingsOptions) => { const { data, @@ -137,7 +92,7 @@ export const useMisconfigurationPreview = (options: UseFindingsOptions) => { params: getFindingsQuery(options, rulesStates!, pageParam), }) ); - if (!aggregations) throw new Error('expected aggregations to be defined'); // Failed here + if (!aggregations) throw new Error('expected aggregations to be defined'); return { count: getMisconfigurationAggregationCount( From 6b3eab06bfd9f823236234ba3007d5e483620be3 Mon Sep 17 00:00:00 2001 From: animehart Date: Thu, 15 Aug 2024 18:58:29 -0700 Subject: [PATCH 32/33] addressing pr comments --- .../README.md | 10 +- .../utils/helpers.ts | 5 +- .../kbn-cloud-security-posture/README.md | 10 +- .../misconfigurations_overview.tsx | 172 ++++++++++-------- .../cypress/tasks/api_calls/rules.ts | 13 ++ 5 files changed, 133 insertions(+), 77 deletions(-) diff --git a/x-pack/packages/kbn-cloud-security-posture-common/README.md b/x-pack/packages/kbn-cloud-security-posture-common/README.md index bafaa51be0d82c..2fc159d9c4cac5 100644 --- a/x-pack/packages/kbn-cloud-security-posture-common/README.md +++ b/x-pack/packages/kbn-cloud-security-posture-common/README.md @@ -1 +1,9 @@ -FILL THIS IN LATER \ No newline at end of file +# @kbn/cloud-security-posture-common + +This package provides common code consumed in both the browser, i.e. the +`packages/cloud-security-posture` package and `plugins/cloud_security_posture` plugin, and on the server, i.e. the +`plugins/cloud_security_posture` plugin. + +## Maintainers + +Maintained by the Cloud Security Posture Team \ No newline at end of file diff --git a/x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.ts b/x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.ts index e64d281a447754..be97ef8947b8f0 100644 --- a/x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.ts +++ b/x-pack/packages/kbn-cloud-security-posture-common/utils/helpers.ts @@ -5,13 +5,16 @@ * 2.0. */ import { QueryDslQueryContainer } from '@kbn/data-views-plugin/common/types'; +import { i18n } from '@kbn/i18n'; import { CspBenchmarkRulesStates } from '../types/latest'; export const extractErrorMessage = (e: unknown, defaultMessage = 'Unknown Error'): string => { if (e instanceof Error) return e.message; if (typeof e === 'string') return e; - return defaultMessage; // TODO: i18n + return i18n.translate('xpack.csp.findings.errorMessage.default', { + defaultMessage, + }); }; export const buildMutedRulesFilter = ( diff --git a/x-pack/packages/kbn-cloud-security-posture/README.md b/x-pack/packages/kbn-cloud-security-posture/README.md index bafaa51be0d82c..38a875dda54abf 100644 --- a/x-pack/packages/kbn-cloud-security-posture/README.md +++ b/x-pack/packages/kbn-cloud-security-posture/README.md @@ -1 +1,9 @@ -FILL THIS IN LATER \ No newline at end of file +# @kbn/cloud-security-posture + +This package includes +- Hooks that's used on Flyout component that's used in Alerts page on Security Solution Plugins as well as components on CSP plugin +- Utilities and types thats used for the Hooks above as well as in CSP plugins + +## Maintainers + +Maintained by the Cloud Security Posture Team \ No newline at end of file diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx index 7903ccc15e90a5..2c533971fcb75f 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/shared/components/insight_entity/misconfigurations_overview.tsx @@ -5,33 +5,37 @@ * 2.0. */ -import React from 'react'; +import React, { useCallback } from 'react'; import { css } from '@emotion/react'; import { EuiFlexGroup, EuiFlexItem, EuiText, useEuiTheme } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { DistributionBar } from '@kbn/security-solution-distribution-bar'; import { useMisconfigurationPreview } from '@kbn/cloud-security-posture'; import { euiThemeVars } from '@kbn/ui-theme'; +import { i18n } from '@kbn/i18n'; import { ExpandablePanel } from '../../../../shared/components/expandable_panel'; export const MisconfigurationsOverview = ({ hostName }: { hostName: string }) => { - const queryHostName = { - bool: { - must: [], - filter: [ - { - bool: { - should: [{ term: { 'host.name': { value: `${hostName}` } } }], - minimum_should_match: 1, + const queryHostName = useCallback(() => { + return { + bool: { + must: [], + filter: [ + { + bool: { + should: [{ term: { 'host.name': { value: `${hostName}` } } }], + minimum_should_match: 1, + }, }, - }, - ], - should: [], - must_not: [], - }, - }; + ], + should: [], + must_not: [], + }, + }; + }, [hostName]); + const { data } = useMisconfigurationPreview({ - query: queryHostName, + query: queryHostName(), sort: [], enabled: true, pageSize: 1, @@ -44,18 +48,91 @@ export const MisconfigurationsOverview = ({ hostName }: { hostName: string }) => if (passedFindingsStats === 0 && failedFindingsStats === 0) return []; return [ { - key: 'Passed findings', + key: i18n.translate( + 'xpack.securitySolution.flyout.right.insights.misconfigurations.passedFindingsText', + { + defaultMessage: 'Passed findings', + } + ), count: passedFindingsStats, color: euiThemeVars.euiColorSuccess, }, { - key: 'Failed findings', + key: i18n.translate( + 'xpack.securitySolution.flyout.right.insights.misconfigurations.failedFindingsText', + { + defaultMessage: 'Failed findings', + } + ), count: failedFindingsStats, color: euiThemeVars.euiColorVis9, }, ]; }; + const MisconfigurationEmptyState = () => { + return ( + + + + + + + + + + + + + ); + }; + + const MisconfigurationPreviewScore = () => { + return ( + + + + + {`${Math.round((passedFindings / (passedFindings + failedFindings)) * 100)}%`} + + + + + + + + + + ); + }; + return ( /> ), - // Commented this out until we have the expanded flyout + // TODO: Uncomment when we have the expanded flyout // iconType: 'arrowStart', }} data-test-subj={'securitySolutionFlyoutInsightsMisconfigurations'} > {passedFindings === 0 && failedFindings === 0 ? ( - - - - - {'-'} - - - - - - - - - + ) : ( - - - - - {`${Math.round((passedFindings / (passedFindings + failedFindings)) * 100)}%`} - - - - - - - - - + )} diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/rules.ts b/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/rules.ts index 008fc92bd02248..be63a66f9a5317 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/rules.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/rules.ts @@ -138,3 +138,16 @@ export const enableRules = ({ names, ids }: EnableRulesParameters): Cypress.Chai failOnStatusCode: false, }); }; + +export const createFindings = ( + rule: RuleCreateProps +): Cypress.Chainable> => { + return cy.currentSpace().then((spaceId) => + rootRequest({ + method: 'POST', + url: spaceId ? getSpaceUrl(spaceId, DETECTION_ENGINE_RULES_URL) : DETECTION_ENGINE_RULES_URL, + body: rule, + failOnStatusCode: false, + }) + ); +}; From 9f1cc37c7f44480bb972292d01a65d006bf1b56b Mon Sep 17 00:00:00 2001 From: animehart Date: Tue, 20 Aug 2024 01:00:30 -0700 Subject: [PATCH 33/33] pr comments --- .github/CODEOWNERS | 1 + .../kbn-cloud-security-posture/index.ts | 2 +- .../src/utils/utils.ts | 5 ++-- .../kbn-cloud-security-posture/type.ts | 2 -- .../entity_details/host_right/content.tsx | 10 ++++--- .../host_details_insight_accordion.cy.ts | 27 ++++++++++--------- .../screens/hosts/flyout_host_panel.ts | 6 ----- .../cypress/tasks/api_calls/rules.ts | 13 --------- 8 files changed, 25 insertions(+), 41 deletions(-) rename x-pack/test/security_solution_cypress/cypress/e2e/{investigations/alerts/expandable_flyout => cloud_security_posture/misconfiguration}/host_details_insight_accordion.cy.ts (52%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 691ffde591204d..7884277ae7d104 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1428,6 +1428,7 @@ x-pack/plugins/cloud_integrations/cloud_full_story/server/config.ts @elastic/kib /x-pack/test/security_solution_cypress/cypress/screens/common @elastic/security-detections-response @elastic/security-threat-hunting /x-pack/test/security_solution_cypress/cypress/support @elastic/security-detections-response @elastic/security-threat-hunting /x-pack/test/security_solution_cypress/cypress/urls @elastic/security-threat-hunting-investigations @elastic/security-detection-engine +/x-pack/test/security_solution_cypress/cypress/e2e/cloud_security_posture @elastic/kibana-cloud-security-posture /x-pack/plugins/security_solution/common/ecs @elastic/security-threat-hunting-investigations /x-pack/plugins/security_solution/common/test @elastic/security-detections-response @elastic/security-threat-hunting diff --git a/x-pack/packages/kbn-cloud-security-posture/index.ts b/x-pack/packages/kbn-cloud-security-posture/index.ts index b49d6e83bd79e5..e038f3f7c3d261 100644 --- a/x-pack/packages/kbn-cloud-security-posture/index.ts +++ b/x-pack/packages/kbn-cloud-security-posture/index.ts @@ -12,5 +12,5 @@ export { useCspSetupStatusApi } from './src/hooks/use_csp_setup_status_api'; export { getAggregationCount, getFindingsCountAggQuery, - isAllIndicesEmpty, + isIndexWithDocsAvailable, } from './src/utils/utils'; diff --git a/x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts b/x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts index 37aaa33b38c50d..528209d9bd9618 100644 --- a/x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts +++ b/x-pack/packages/kbn-cloud-security-posture/src/utils/utils.ts @@ -49,7 +49,6 @@ export const getMisconfigurationAggregationCount = ( }; }; -export const isAllIndicesEmpty = (indices: Array) => { - const notEmptyIndices = indices.find((indice) => indice?.status !== 'empty'); - return notEmptyIndices ? false : true; +export const isIndexWithDocsAvailable = (indices: Array) => { + return indices.some((indice) => indice?.status !== 'empty'); }; diff --git a/x-pack/packages/kbn-cloud-security-posture/type.ts b/x-pack/packages/kbn-cloud-security-posture/type.ts index 917c2621579ae8..5a5f507effe96b 100644 --- a/x-pack/packages/kbn-cloud-security-posture/type.ts +++ b/x-pack/packages/kbn-cloud-security-posture/type.ts @@ -29,7 +29,6 @@ export interface FindingsBaseEsQuery { } export interface CspClientPluginStartDeps { - // required data: DataPublicPluginStart; dataViews: DataViewsServicePublic; dataViewFieldEditor: IndexPatternFieldEditorStart; @@ -44,6 +43,5 @@ export interface CspClientPluginStartDeps { share: SharePluginStart; storage: Storage; - // optional usageCollection?: UsageCollectionStart; } diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx index ccefa85ff1fd04..8af3c7c78f6f6a 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/host_right/content.tsx @@ -5,9 +5,9 @@ * 2.0. */ -import React from 'react'; +import React, { useMemo } from 'react'; import { EuiHorizontalRule } from '@elastic/eui'; -import { useCspSetupStatusApi, isAllIndicesEmpty } from '@kbn/cloud-security-posture'; +import { useCspSetupStatusApi, isIndexWithDocsAvailable } from '@kbn/cloud-security-posture'; import { AssetCriticalityAccordion } from '../../../entity_analytics/components/asset_criticality/asset_criticality_selector'; import { FlyoutRiskSummary } from '../../../entity_analytics/components/risk_summary_flyout/risk_summary'; import type { RiskScoreState } from '../../../entity_analytics/api/hooks/use_risk_score'; @@ -49,7 +49,9 @@ export const HostPanelContent = ({ const getSetupStatus = useCspSetupStatusApi({ refetchInterval: 10000, }); - const cspAllIndicesEmpty = isAllIndicesEmpty(getSetupStatus.data?.indicesDetails || []); + const notEmptyIndices = useMemo(() => { + return isIndexWithDocsAvailable(getSetupStatus.data?.indicesDetails || []); + }, [getSetupStatus.data?.indicesDetails]); return ( {riskScoreState.isModuleEnabled && riskScoreState.data?.length !== 0 && ( @@ -77,7 +79,7 @@ export const HostPanelContent = ({ queryId={HOST_PANEL_OBSERVED_HOST_QUERY_ID} /> - {!cspAllIndicesEmpty && } + {notEmptyIndices && } ); }; diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/host_details_insight_accordion.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/cloud_security_posture/misconfiguration/host_details_insight_accordion.cy.ts similarity index 52% rename from x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/host_details_insight_accordion.cy.ts rename to x-pack/test/security_solution_cypress/cypress/e2e/cloud_security_posture/misconfiguration/host_details_insight_accordion.cy.ts index a7901860a6509f..d18eeea37c5cdd 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/host_details_insight_accordion.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/cloud_security_posture/misconfiguration/host_details_insight_accordion.cy.ts @@ -4,19 +4,22 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { getDataTestSubjectSelector } from '../../../helpers/common'; +import { expandFirstAlertHostFlyout } from '../../../tasks/asset_criticality/common'; +import { deleteAlertsAndRules } from '../../../tasks/api_calls/common'; +import { login } from '../../../tasks/login'; +import { visit } from '../../../tasks/navigation'; +import { createRule } from '../../../tasks/api_calls/rules'; +import { getNewRule } from '../../../objects/rule'; +import { ALERTS_URL } from '../../../urls/navigation'; +import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule'; -import { - HOST_INSIGHT_MISCONFIGURATION, - HOST_INSIGHT_MISCONFIGURATION_TITLE, -} from '../../../../screens/hosts/flyout_host_panel'; -import { expandFirstAlertHostFlyout } from '../../../../tasks/asset_criticality/common'; -import { deleteAlertsAndRules } from '../../../../tasks/api_calls/common'; -import { login } from '../../../../tasks/login'; -import { visit } from '../../../../tasks/navigation'; -import { createRule } from '../../../../tasks/api_calls/rules'; -import { getNewRule } from '../../../../objects/rule'; -import { ALERTS_URL } from '../../../../urls/navigation'; -import { waitForAlertsToPopulate } from '../../../../tasks/create_new_rule'; +const HOST_INSIGHT_MISCONFIGURATION = getDataTestSubjectSelector( + 'securitySolutionFlyoutInsightsMisconfigurationsLeftSection' +); +const HOST_INSIGHT_MISCONFIGURATION_TITLE = getDataTestSubjectSelector( + 'securitySolutionFlyoutInsightsMisconfigurationsTitleText' +); describe('Alert Host details expandable flyout', { tags: ['@ess', '@serverless'] }, () => { beforeEach(() => { diff --git a/x-pack/test/security_solution_cypress/cypress/screens/hosts/flyout_host_panel.ts b/x-pack/test/security_solution_cypress/cypress/screens/hosts/flyout_host_panel.ts index 27adb5ec72dc8c..e3173bd17d5831 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/hosts/flyout_host_panel.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/hosts/flyout_host_panel.ts @@ -10,9 +10,3 @@ import { getDataTestSubjectSelector } from '../../helpers/common'; export const HOST_PANEL_HEADER = getDataTestSubjectSelector('host-panel-header'); export const HOST_PREVIEW_PANEL_FOOTER = getDataTestSubjectSelector('host-preview-footer'); export const OPEN_HOST_FLYOUT_LINK = getDataTestSubjectSelector('open-host-flyout'); -export const HOST_INSIGHT_MISCONFIGURATION = getDataTestSubjectSelector( - 'securitySolutionFlyoutInsightsMisconfigurationsLeftSection' -); -export const HOST_INSIGHT_MISCONFIGURATION_TITLE = getDataTestSubjectSelector( - 'securitySolutionFlyoutInsightsMisconfigurationsTitleText' -); diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/rules.ts b/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/rules.ts index be63a66f9a5317..008fc92bd02248 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/rules.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/api_calls/rules.ts @@ -138,16 +138,3 @@ export const enableRules = ({ names, ids }: EnableRulesParameters): Cypress.Chai failOnStatusCode: false, }); }; - -export const createFindings = ( - rule: RuleCreateProps -): Cypress.Chainable> => { - return cy.currentSpace().then((spaceId) => - rootRequest({ - method: 'POST', - url: spaceId ? getSpaceUrl(spaceId, DETECTION_ENGINE_RULES_URL) : DETECTION_ENGINE_RULES_URL, - body: rule, - failOnStatusCode: false, - }) - ); -};