From d177d11719b8873ef0c4603eb9b534d08cd0a108 Mon Sep 17 00:00:00 2001 From: Rickyanto Ang Date: Fri, 6 Sep 2024 12:42:55 -0700 Subject: [PATCH] [Cloud Security] Host Name Misconfiguration Datagrid & Refactor CSP Plugin PHASE 1 (#192114) ## Summary In an attempt to make Reviewing easier and more accurate, the implementation of Misconfiguration Data grid on Host.name flyout in Alerts Page will be split into 2 Phases Phase 1: Move Functions, Utils or Helpers, Hooks, constants to Package Phase 2: Implementing the feature This is Phase 1 of the process This PR also include a small bug fix mentioned here https://github.com/elastic/kibana/pull/191677#pullrequestreview-2279906960 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../constants.ts | 8 +++ .../constants/component_constants.ts | 12 ++++ .../constants/navigation.ts | 61 ++++++++++++++++++ .../kbn-cloud-security-posture/index.ts | 5 ++ .../kbn-cloud-security-posture/jest.config.js | 12 ++++ .../src}/components/csp_evaluation_badge.tsx | 2 +- .../src/hooks}/use_data_view.ts | 2 +- .../src}/hooks/use_navigate_findings.test.ts | 7 ++- .../src}/hooks/use_navigate_findings.ts | 16 ++--- .../src/utils}/query_utils.ts | 0 .../kbn-cloud-security-posture/tsconfig.json | 3 + .../common/constants.ts | 4 -- .../public/common/constants.ts | 6 -- .../public/common/hooks/use_url_query.test.ts | 2 +- .../public/common/hooks/use_url_query.ts | 2 +- .../public/common/navigation/constants.ts | 63 ++----------------- .../accounts_evaluated_widget.test.tsx | 2 +- .../components/accounts_evaluated_widget.tsx | 2 +- .../components/compliance_score_bar.tsx | 2 +- .../cloud_security_posture/public/index.ts | 1 - .../pages/benchmarks/benchmarks_table.tsx | 2 +- .../compliance_score_chart.tsx | 2 +- .../compliance_dashboard.tsx | 2 +- .../benchmark_details_box.tsx | 2 +- .../dashboard_sections/benchmarks_section.tsx | 3 +- .../dashboard_sections/summary_section.tsx | 3 +- .../configurations/configurations.test.tsx | 2 +- .../pages/configurations/configurations.tsx | 7 ++- .../findings_flyout/findings_flyout.tsx | 2 +- .../findings_flyout/overview_tab.tsx | 12 ++-- .../latest_findings/latest_findings_table.tsx | 2 +- .../layout/findings_distribution_bar.tsx | 2 +- .../configurations/utils/get_filters.test.ts | 2 +- .../public/pages/findings/findings.tsx | 3 +- .../public/pages/rules/rules_counters.tsx | 4 +- .../pages/vulnerabilities/vulnerabilities.tsx | 4 +- .../vulnerabilities/vulnerabilties.test.tsx | 6 +- .../vulnerability_dashboard.test.tsx | 2 +- .../vulnerability_statistics.tsx | 2 +- .../vulnerability_table_panel_section.tsx | 3 +- .../vulnerability_trend_graph.tsx | 2 +- .../handlers/dataview.handlers.mock.ts | 2 +- .../server/saved_objects/data_views.ts | 5 +- .../cloud_security_posture/tsconfig.json | 1 - .../components/index.tsx | 55 ++++++++-------- .../public/cloud_security_posture/routes.tsx | 6 +- .../entity_details/host_right/content.tsx | 1 - .../data_views/data_views.ts | 2 +- 48 files changed, 200 insertions(+), 153 deletions(-) create mode 100644 x-pack/packages/kbn-cloud-security-posture/constants/component_constants.ts create mode 100644 x-pack/packages/kbn-cloud-security-posture/constants/navigation.ts create mode 100644 x-pack/packages/kbn-cloud-security-posture/jest.config.js rename x-pack/{plugins/cloud_security_posture/public => packages/kbn-cloud-security-posture/src}/components/csp_evaluation_badge.tsx (95%) rename x-pack/{plugins/cloud_security_posture/public/common/api => packages/kbn-cloud-security-posture/src/hooks}/use_data_view.ts (94%) rename x-pack/{plugins/cloud_security_posture/public/common => packages/kbn-cloud-security-posture/src}/hooks/use_navigate_findings.test.ts (94%) rename x-pack/{plugins/cloud_security_posture/public/common => packages/kbn-cloud-security-posture/src}/hooks/use_navigate_findings.ts (83%) rename x-pack/{plugins/cloud_security_posture/public/common/navigation => packages/kbn-cloud-security-posture/src/utils}/query_utils.ts (100%) 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 5bcf914351ff5a..2772b6ae6d9c7a 100644 --- a/x-pack/packages/kbn-cloud-security-posture-common/constants.ts +++ b/x-pack/packages/kbn-cloud-security-posture-common/constants.ts @@ -11,6 +11,7 @@ export const CDR_LATEST_NATIVE_MISCONFIGURATIONS_INDEX_PATTERN = export const CDR_LATEST_THIRD_PARTY_MISCONFIGURATIONS_INDEX_PATTERN = 'security_solution-*.misconfiguration_latest'; export const CDR_MISCONFIGURATIONS_INDEX_PATTERN = `${CDR_LATEST_NATIVE_MISCONFIGURATIONS_INDEX_PATTERN},${CDR_LATEST_THIRD_PARTY_MISCONFIGURATIONS_INDEX_PATTERN}`; +export const CDR_MISCONFIGURATIONS_DATA_VIEW_NAME = 'Latest Cloud Security Misconfigurations'; export const LATEST_FINDINGS_RETENTION_POLICY = '26h'; export const MAX_FINDINGS_TO_LOAD = 500; export const CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH = @@ -18,3 +19,10 @@ export const CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH = 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'; + +/** The base path for all cloud security posture pages. */ +export const CLOUD_SECURITY_POSTURE_BASE_PATH = '/cloud_security_posture'; + +export const CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX = + 'security_solution_cdr_latest_misconfigurations'; +export const SECURITY_DEFAULT_DATA_VIEW_ID = 'security-solution-default'; diff --git a/x-pack/packages/kbn-cloud-security-posture/constants/component_constants.ts b/x-pack/packages/kbn-cloud-security-posture/constants/component_constants.ts new file mode 100644 index 00000000000000..04a47f0fc12a1f --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/constants/component_constants.ts @@ -0,0 +1,12 @@ +/* + * 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 { euiThemeVars } from '@kbn/ui-theme'; + +export const statusColors = { + passed: euiThemeVars.euiColorSuccess, + failed: euiThemeVars.euiColorVis9, +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/constants/navigation.ts b/x-pack/packages/kbn-cloud-security-posture/constants/navigation.ts new file mode 100644 index 00000000000000..90c9633433cec4 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/constants/navigation.ts @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { CLOUD_SECURITY_POSTURE_BASE_PATH } from '@kbn/cloud-security-posture-common'; +import { i18n } from '@kbn/i18n'; + +export const NAV_ITEMS_NAMES = { + DASHBOARD: i18n.translate('xpack.csp.navigation.dashboardNavItemLabel', { + defaultMessage: 'Cloud Security Posture', + }), + VULNERABILITY_DASHBOARD: i18n.translate( + 'xpack.csp.navigation.vulnerabilityDashboardNavItemLabel', + { defaultMessage: 'Cloud Native Vulnerability Management' } + ), + FINDINGS: i18n.translate('xpack.csp.navigation.findingsNavItemLabel', { + defaultMessage: 'Findings', + }), + BENCHMARKS: i18n.translate('xpack.csp.navigation.myBenchmarksNavItemLabel', { + defaultMessage: 'Benchmarks', + }), + RULES: i18n.translate('xpack.csp.navigation.rulesNavItemLabel', { + defaultMessage: 'Rules', + }), +}; + +export const findingsNavigation = { + findings_default: { + name: NAV_ITEMS_NAMES.FINDINGS, + path: `${CLOUD_SECURITY_POSTURE_BASE_PATH}/findings/configurations`, + id: 'cloud_security_posture-findings-default', + }, + findings_by_resource: { + name: NAV_ITEMS_NAMES.FINDINGS, + path: `${CLOUD_SECURITY_POSTURE_BASE_PATH}/findings/resource`, + id: 'cloud_security_posture-findings-resource', + }, + resource_findings: { + name: NAV_ITEMS_NAMES.FINDINGS, + path: `${CLOUD_SECURITY_POSTURE_BASE_PATH}/findings/resource/:resourceId`, + id: 'cloud_security_posture-findings-resourceId', + }, + vulnerabilities: { + name: NAV_ITEMS_NAMES.FINDINGS, + path: `${CLOUD_SECURITY_POSTURE_BASE_PATH}/findings/vulnerabilities`, + id: 'cloud_security_posture-findings-vulnerabilities', + }, + vulnerabilities_by_resource: { + name: NAV_ITEMS_NAMES.FINDINGS, + path: `${CLOUD_SECURITY_POSTURE_BASE_PATH}/findings/vulnerabilities/resource`, + id: 'cloud_security_posture-findings-vulnerabilities-resource', + }, + resource_vulnerabilities: { + name: NAV_ITEMS_NAMES.FINDINGS, + path: `${CLOUD_SECURITY_POSTURE_BASE_PATH}/findings/vulnerabilities/resource/:resourceId`, + id: 'cloud_security_posture-findings-vulnerabilities-resourceId', + }, +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/index.ts b/x-pack/packages/kbn-cloud-security-posture/index.ts index bb40ae57eca2ab..895624ba805e77 100644 --- a/x-pack/packages/kbn-cloud-security-posture/index.ts +++ b/x-pack/packages/kbn-cloud-security-posture/index.ts @@ -6,4 +6,9 @@ */ export * from './type'; +export * from './constants/component_constants'; +export * from './constants/navigation'; +export type { NavFilter } from './src/hooks/use_navigate_findings'; export { showErrorToast } from './src/utils/show_error_toast'; +export { encodeQuery, decodeQuery } from './src/utils/query_utils'; +export { CspEvaluationBadge } from './src/components/csp_evaluation_badge'; diff --git a/x-pack/packages/kbn-cloud-security-posture/jest.config.js b/x-pack/packages/kbn-cloud-security-posture/jest.config.js new file mode 100644 index 00000000000000..7273e0452cf60c --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/jest.config.js @@ -0,0 +1,12 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/packages/kbn-cloud-security-posture'], +}; diff --git a/x-pack/plugins/cloud_security_posture/public/components/csp_evaluation_badge.tsx b/x-pack/packages/kbn-cloud-security-posture/src/components/csp_evaluation_badge.tsx similarity index 95% rename from x-pack/plugins/cloud_security_posture/public/components/csp_evaluation_badge.tsx rename to x-pack/packages/kbn-cloud-security-posture/src/components/csp_evaluation_badge.tsx index 6e68c18197dbf0..8048414c8f8a5a 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/csp_evaluation_badge.tsx +++ b/x-pack/packages/kbn-cloud-security-posture/src/components/csp_evaluation_badge.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { EuiBadge, type EuiBadgeProps } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { css } from '@emotion/react'; -import { statusColors } from '../common/constants'; +import { statusColors } from '../../constants/component_constants'; interface Props { type?: 'passed' | 'failed'; diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_data_view.ts b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_data_view.ts similarity index 94% rename from x-pack/plugins/cloud_security_posture/public/common/api/use_data_view.ts rename to x-pack/packages/kbn-cloud-security-posture/src/hooks/use_data_view.ts index 304230498d4f4c..3361465e08b86c 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_data_view.ts +++ b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_data_view.ts @@ -8,7 +8,7 @@ import { useQuery } from '@tanstack/react-query'; import { useKibana } from '@kbn/kibana-react-plugin/public'; import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; -import { CspClientPluginStartDeps } from '@kbn/cloud-security-posture'; +import { CspClientPluginStartDeps } from '../..'; /** * Hook to retrieve a Data View by it's Index Pattern title diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.test.ts b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_navigate_findings.test.ts similarity index 94% rename from x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.test.ts rename to x-pack/packages/kbn-cloud-security-posture/src/hooks/use_navigate_findings.test.ts index a1b78852c06c96..30dcd8c7f2ddf5 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.test.ts +++ b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_navigate_findings.test.ts @@ -6,14 +6,14 @@ */ import { renderHook, act } from '@testing-library/react-hooks/dom'; -import { useNavigateFindings, useNavigateVulnerabilities } from './use_navigate_findings'; +import { useNavigateVulnerabilities, useNavigateFindings } from './use_navigate_findings'; import { useHistory } from 'react-router-dom'; jest.mock('react-router-dom', () => ({ useHistory: jest.fn().mockReturnValue({ push: jest.fn() }), })); -jest.mock('./use_kibana', () => ({ +jest.mock('@kbn/kibana-react-plugin/public', () => ({ useKibana: jest.fn().mockReturnValue({ services: { data: { @@ -29,7 +29,8 @@ jest.mock('./use_kibana', () => ({ }, }), })); -jest.mock('../api/use_data_view', () => ({ + +jest.mock('./use_data_view', () => ({ useDataView: jest.fn().mockReturnValue({ status: 'success', data: { diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.ts b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_navigate_findings.ts similarity index 83% rename from x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.ts rename to x-pack/packages/kbn-cloud-security-posture/src/hooks/use_navigate_findings.ts index b5b0cdb84bd869..a8420b17dd4f9b 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_navigate_findings.ts +++ b/x-pack/packages/kbn-cloud-security-posture/src/hooks/use_navigate_findings.ts @@ -9,13 +9,15 @@ import { useCallback } from 'react'; import { useHistory } from 'react-router-dom'; import { Filter } from '@kbn/es-query'; import { - CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX, SECURITY_DEFAULT_DATA_VIEW_ID, -} from '../../../common/constants'; -import { findingsNavigation } from '../navigation/constants'; -import { encodeQuery } from '../navigation/query_utils'; -import { useKibana } from './use_kibana'; -import { useDataView } from '../api/use_data_view'; + CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX, +} from '@kbn/cloud-security-posture-common'; +import type { CoreStart } from '@kbn/core/public'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { findingsNavigation } from '../../constants/navigation'; +import { useDataView } from './use_data_view'; +import { CspClientPluginStartDeps } from '../..'; +import { encodeQuery } from '../utils/query_utils'; interface NegatedValue { value: string | number; @@ -54,7 +56,7 @@ const createFilter = (key: string, filterValue: FilterValue, dataViewId: string) }; const useNavigate = (pathname: string, dataViewId = SECURITY_DEFAULT_DATA_VIEW_ID) => { const history = useHistory(); - const { services } = useKibana(); + const { services } = useKibana(); return useCallback( (filterParams: NavFilter = {}, groupBy?: string[]) => { diff --git a/x-pack/plugins/cloud_security_posture/public/common/navigation/query_utils.ts b/x-pack/packages/kbn-cloud-security-posture/src/utils/query_utils.ts similarity index 100% rename from x-pack/plugins/cloud_security_posture/public/common/navigation/query_utils.ts rename to x-pack/packages/kbn-cloud-security-posture/src/utils/query_utils.ts diff --git a/x-pack/packages/kbn-cloud-security-posture/tsconfig.json b/x-pack/packages/kbn-cloud-security-posture/tsconfig.json index fec5d21b8aa79c..633ef28bf2074d 100644 --- a/x-pack/packages/kbn-cloud-security-posture/tsconfig.json +++ b/x-pack/packages/kbn-cloud-security-posture/tsconfig.json @@ -37,5 +37,8 @@ "@kbn/cloud-security-posture-common", "@kbn/i18n", "@kbn/search-types", + "@kbn/ui-theme", + "@kbn/i18n-react", + "@kbn/rison", ] } diff --git a/x-pack/plugins/cloud_security_posture/common/constants.ts b/x-pack/plugins/cloud_security_posture/common/constants.ts index 17449579bb56aa..fc6fc7d76bf7f3 100644 --- a/x-pack/plugins/cloud_security_posture/common/constants.ts +++ b/x-pack/plugins/cloud_security_posture/common/constants.ts @@ -37,10 +37,6 @@ export const DETECTION_RULE_RULES_API_CURRENT_VERSION = '2023-10-31'; export const CLOUD_SECURITY_POSTURE_PACKAGE_NAME = 'cloud_security_posture'; -export const CDR_MISCONFIGURATIONS_DATA_VIEW_NAME = 'Latest Cloud Security Misconfigurations'; -export const CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX = - 'security_solution_cdr_latest_misconfigurations'; - 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'; 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 8eb996dd156438..60d1c10dd648c0 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/constants.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/constants.ts @@ -6,7 +6,6 @@ */ import { i18n } from '@kbn/i18n'; -import { euiThemeVars } from '@kbn/ui-theme'; import { CSPM_POLICY_TEMPLATE, KSPM_POLICY_TEMPLATE } from '@kbn/cloud-security-posture-common'; import type { CloudSecurityPolicyTemplate, PostureInput } from '../../common/types_old'; import { @@ -28,11 +27,6 @@ import aksLogo from '../assets/icons/cis_aks_logo.svg'; import gkeLogo from '../assets/icons/cis_gke_logo.svg'; import googleCloudLogo from '../assets/icons/google_cloud_logo.svg'; -export const statusColors = { - passed: euiThemeVars.euiColorSuccess, - failed: euiThemeVars.euiColorVis9, -}; - export const CSP_MOMENT_FORMAT = 'MMMM D, YYYY @ HH:mm:ss.SSS'; export const DEFAULT_VISIBLE_ROWS_PER_PAGE = 25; diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts index 20649d01be8fca..bc87cf2d9bb167 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.test.ts @@ -8,7 +8,7 @@ import { renderHook, act } from '@testing-library/react-hooks/dom'; import { useUrlQuery } from './use_url_query'; import { useLocation, useHistory } from 'react-router-dom'; -import { encodeQuery } from '../navigation/query_utils'; +import { encodeQuery } from '@kbn/cloud-security-posture'; jest.mock('react-router-dom', () => ({ useHistory: jest.fn(), diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.ts index 8bc6ff96b4c4ff..144fffda6e2d7c 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_url_query.ts @@ -6,7 +6,7 @@ */ import { useEffect, useCallback, useMemo } from 'react'; import { useHistory, useLocation } from 'react-router-dom'; -import { decodeQuery, encodeQuery } from '../navigation/query_utils'; +import { encodeQuery, decodeQuery } from '@kbn/cloud-security-posture'; /** * @description uses 'rison' to encode/decode a url query diff --git a/x-pack/plugins/cloud_security_posture/public/common/navigation/constants.ts b/x-pack/plugins/cloud_security_posture/public/common/navigation/constants.ts index 055495b59dd117..e5abbbfb7a9aa9 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/navigation/constants.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/navigation/constants.ts @@ -5,32 +5,14 @@ * 2.0. */ -import { i18n } from '@kbn/i18n'; -import { CSPM_POLICY_TEMPLATE, KSPM_POLICY_TEMPLATE } from '@kbn/cloud-security-posture-common'; +import { + CSPM_POLICY_TEMPLATE, + KSPM_POLICY_TEMPLATE, + CLOUD_SECURITY_POSTURE_BASE_PATH, +} from '@kbn/cloud-security-posture-common'; +import { NAV_ITEMS_NAMES } from '@kbn/cloud-security-posture/constants/navigation'; import type { CspBenchmarksPage, CspPage, CspPageNavigationItem } from './types'; -const NAV_ITEMS_NAMES = { - DASHBOARD: i18n.translate('xpack.csp.navigation.dashboardNavItemLabel', { - defaultMessage: 'Cloud Security Posture', - }), - VULNERABILITY_DASHBOARD: i18n.translate( - 'xpack.csp.navigation.vulnerabilityDashboardNavItemLabel', - { defaultMessage: 'Cloud Native Vulnerability Management' } - ), - FINDINGS: i18n.translate('xpack.csp.navigation.findingsNavItemLabel', { - defaultMessage: 'Findings', - }), - BENCHMARKS: i18n.translate('xpack.csp.navigation.myBenchmarksNavItemLabel', { - defaultMessage: 'Benchmarks', - }), - RULES: i18n.translate('xpack.csp.navigation.rulesNavItemLabel', { - defaultMessage: 'Rules', - }), -}; - -/** The base path for all cloud security posture pages. */ -export const CLOUD_SECURITY_POSTURE_BASE_PATH = '/cloud_security_posture'; - const CSPM_DASHBOARD_TAB_NAME = 'Cloud'; const KSPM_DASHBOARD_TAB_NAME = 'Kubernetes'; @@ -75,39 +57,6 @@ export const benchmarksNavigation: Record ({ +jest.mock('@kbn/cloud-security-posture/src/hooks/use_navigate_findings', () => ({ useNavigateFindings: () => mockNavToFindings, })); diff --git a/x-pack/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.tsx b/x-pack/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.tsx index aeb734005a65b4..1d4f26274690d9 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/accounts_evaluated_widget.tsx @@ -7,11 +7,11 @@ import React from 'react'; import { EuiFlexGroup, EuiFlexItem, useEuiTheme } from '@elastic/eui'; import { css } from '@emotion/react'; +import { useNavigateFindings } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; import { CLOUD_PROVIDERS, getBenchmarkApplicableTo } from '../../common/utils/helpers'; import { CIS_AWS, CIS_GCP, CIS_AZURE, CIS_K8S, CIS_EKS } from '../../common/constants'; import { CISBenchmarkIcon } from './cis_benchmark_icon'; import { CompactFormattedNumber } from './compact_formatted_number'; -import { useNavigateFindings } from '../common/hooks/use_navigate_findings'; import { BenchmarkData } from '../../common/types_old'; import { FINDINGS_GROUPING_OPTIONS } from '../common/constants'; diff --git a/x-pack/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx b/x-pack/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx index d71d6c2e2384b0..d4acbc97ab10c7 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/compliance_score_bar.tsx @@ -9,8 +9,8 @@ import { EuiFlexGroup, EuiFlexItem, EuiText, EuiToolTip, useEuiTheme } from '@el import { css, SerializedStyles } from '@emotion/react'; import { i18n } from '@kbn/i18n'; import React from 'react'; +import { statusColors } from '@kbn/cloud-security-posture'; import { calculatePostureScore } from '../../common/utils/helpers'; -import { statusColors } from '../common/constants'; import { CSP_FINDINGS_COMPLIANCE_SCORE } from './test_subjects'; /** diff --git a/x-pack/plugins/cloud_security_posture/public/index.ts b/x-pack/plugins/cloud_security_posture/public/index.ts index 64301add72ca33..b7b9e2ba48fed9 100755 --- a/x-pack/plugins/cloud_security_posture/public/index.ts +++ b/x-pack/plugins/cloud_security_posture/public/index.ts @@ -7,7 +7,6 @@ import { CspPlugin } from './plugin'; 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'; 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 ea08ce03981465..27b32345d85ca5 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 @@ -22,8 +22,8 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { generatePath } from 'react-router-dom'; import type { BenchmarksCisId } from '@kbn/cloud-security-posture-common'; +import { useNavigateFindings } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; import { FINDINGS_GROUPING_OPTIONS } from '../../common/constants'; -import { useNavigateFindings } from '../../common/hooks/use_navigate_findings'; import type { BenchmarkScore, Benchmark } from '../../../common/types/latest'; import * as TEST_SUBJ from './test_subjects'; import { isCommonError } from '../../components/cloud_posture_page'; 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 d1b681e77347be..40d7b52ab3fed7 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,8 +32,8 @@ import { FormattedDate, FormattedTime } from '@kbn/i18n-react'; import moment from 'moment'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; +import { statusColors } 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'; 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 16037fa2047667..43cba19dbd8c7f 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 @@ -16,6 +16,7 @@ import { Redirect, useHistory, useLocation } from 'react-router-dom'; import { CSPM_POLICY_TEMPLATE, KSPM_POLICY_TEMPLATE } from '@kbn/cloud-security-posture-common'; import type { BaseCspSetupStatus } from '@kbn/cloud-security-posture-common'; import { useCspSetupStatusApi } from '@kbn/cloud-security-posture/src/hooks/use_csp_setup_status_api'; +import { encodeQuery } 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 { PosturePolicyTemplate, ComplianceDashboardDataV2 } from '../../../common/types_old'; @@ -41,7 +42,6 @@ import { SummarySection } from './dashboard_sections/summary_section'; import { BenchmarksSection } from './dashboard_sections/benchmarks_section'; 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; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmark_details_box.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmark_details_box.tsx index 226face0d95a0a..aef4086ea027f6 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmark_details_box.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmark_details_box.tsx @@ -17,10 +17,10 @@ import { import { FormattedMessage } from '@kbn/i18n-react'; import React from 'react'; import { i18n } from '@kbn/i18n'; +import { useNavigateFindings } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; import { FINDINGS_GROUPING_OPTIONS } from '../../../common/constants'; import { getBenchmarkIdQuery } from './benchmarks_section'; import { BenchmarkData } from '../../../../common/types_old'; -import { useNavigateFindings } from '../../../common/hooks/use_navigate_findings'; import { CISBenchmarkIcon } from '../../../components/cis_benchmark_icon'; import cisLogoIcon from '../../../assets/icons/cis_logo.svg'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.tsx index 70efd085955102..4a4d4b6c1b193f 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/benchmarks_section.tsx @@ -12,6 +12,8 @@ import { EuiFlexGroup, EuiFlexItem, EuiIcon, EuiTitle, useEuiTheme } from '@elas import { FormattedMessage } from '@kbn/i18n-react'; import { css } from '@emotion/react'; import { i18n } from '@kbn/i18n'; +import { useNavigateFindings } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; +import type { NavFilter } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; import type { BenchmarkData, ComplianceDashboardDataV2, @@ -24,7 +26,6 @@ import { LOCAL_STORAGE_DASHBOARD_BENCHMARK_SORT_KEY, FINDINGS_GROUPING_OPTIONS, } from '../../../common/constants'; -import { NavFilter, useNavigateFindings } from '../../../common/hooks/use_navigate_findings'; import { dashboardColumnsGrow, getPolicyTemplateQuery } from './summary_section'; import { DASHBOARD_TABLE_COLUMN_SCORE_TEST_ID, diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.tsx index 15282395628261..61632fcb4aa99b 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/dashboard_sections/summary_section.tsx @@ -16,6 +16,8 @@ import { import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; import { CSPM_POLICY_TEMPLATE, KSPM_POLICY_TEMPLATE } from '@kbn/cloud-security-posture-common'; +import type { NavFilter } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; +import { useNavigateFindings } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; import { useCspIntegrationLink } from '../../../common/navigation/use_csp_integration_link'; import { DASHBOARD_COUNTER_CARDS, DASHBOARD_SUMMARY_CONTAINER } from '../test_subjects'; import { CspCounterCard, CspCounterCardProps } from '../../../components/csp_counter_card'; @@ -28,7 +30,6 @@ import type { PosturePolicyTemplate, } from '../../../../common/types_old'; import { RisksTable } from '../compliance_charts/risks_table'; -import { NavFilter, useNavigateFindings } from '../../../common/hooks/use_navigate_findings'; import { RULE_FAILED, RULE_PASSED } from '../../../../common/constants'; import { AccountsEvaluatedWidget } from '../../../components/accounts_evaluated_widget'; import { FINDINGS_GROUPING_OPTIONS } from '../../../common/constants'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx index f782d90474a3c8..ba57b1981752c4 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx @@ -14,7 +14,7 @@ import { renderWrapper } from '../../test/mock_server/mock_server_test_provider' import { Configurations } from './configurations'; import { fireEvent, screen, waitFor, within } from '@testing-library/react'; import { MemoryRouter } from '@kbn/shared-ux-router'; -import { findingsNavigation } from '../../common/navigation/constants'; +import { findingsNavigation } from '@kbn/cloud-security-posture'; import userEvent from '@testing-library/user-event'; import { FilterManager } from '@kbn/data-plugin/public'; import { CspClientPluginStartDeps } from '@kbn/cloud-security-posture'; 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 3f088e799239bd..d070d2cd9ec4bf 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 @@ -9,11 +9,12 @@ 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/src/hooks/use_csp_setup_status_api'; -import { CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX } from '../../../common/constants'; +import { CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX } from '@kbn/cloud-security-posture-common'; +import { findingsNavigation } from '@kbn/cloud-security-posture'; +import { useDataView } from '@kbn/cloud-security-posture/src/hooks/use_data_view'; import { NoFindingsStates } from '../../components/no_findings_states'; import { CloudPosturePage, defaultLoadingRenderer } from '../../components/cloud_posture_page'; -import { useDataView } from '../../common/api/use_data_view'; -import { cloudPosturePages, findingsNavigation } from '../../common/navigation/constants'; +import { cloudPosturePages } from '../../common/navigation/constants'; import { LatestFindingsContainer } from './latest_findings/latest_findings_container'; import { DataViewContext } from '../../common/contexts/data_view_context'; 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 e1086f81367a3f..90807416e99111 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,12 +35,12 @@ 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 { CspEvaluationBadge } from '@kbn/cloud-security-posture'; import type { 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'; import cisLogoIcon from '../../../assets/icons/cis_logo.svg'; -import { CspEvaluationBadge } from '../../../components/csp_evaluation_badge'; import { TakeAction } from '../../../components/take_action'; import { TableTab } from './table_tab'; import { JsonTab } from './json_tab'; 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 d25d6d63d213f0..5f54e34846b982 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 @@ -18,18 +18,18 @@ import React, { useMemo } from 'react'; import moment from 'moment'; import type { EuiDescriptionListProps, EuiAccordionProps } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { CDR_MISCONFIGURATIONS_INDEX_PATTERN } from '@kbn/cloud-security-posture-common'; +import { + CDR_MISCONFIGURATIONS_INDEX_PATTERN, + CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX, +} from '@kbn/cloud-security-posture-common'; import { FormattedMessage } from '@kbn/i18n-react'; import { isEmpty } from 'lodash'; import type { CspFinding } from '@kbn/cloud-security-posture-common'; +import { useDataView } from '@kbn/cloud-security-posture/src/hooks/use_data_view'; import { getDatasetDisplayName } from '../../../common/utils/get_dataset_display_name'; import { truthy } from '../../../../common/utils/helpers'; import { CSP_MOMENT_FORMAT } from '../../../common/constants'; -import { - INTERNAL_FEATURE_FLAGS, - CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX, -} from '../../../../common/constants'; -import { useDataView } from '../../../common/api/use_data_view'; +import { INTERNAL_FEATURE_FLAGS } from '../../../../common/constants'; import { useKibana } from '../../../common/hooks/use_kibana'; import { BenchmarkIcons, 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 209c5ed2b2d067..e8968ad0d05a81 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 @@ -12,6 +12,7 @@ import { HttpSetup } from '@kbn/core-http-browser'; import { i18n } from '@kbn/i18n'; import { EuiDataGridCellValueElementProps, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import type { CspFinding } from '@kbn/cloud-security-posture-common'; +import { CspEvaluationBadge } from '@kbn/cloud-security-posture'; import { getDatasetDisplayName } from '../../../common/utils/get_dataset_display_name'; import * as TEST_SUBJECTS from '../test_subjects'; import { FindingsDistributionBar } from '../layout/findings_distribution_bar'; @@ -20,7 +21,6 @@ import { CloudSecurityDataTable } from '../../../components/cloud_security_data_ 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 { 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/layout/findings_distribution_bar.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/findings_distribution_bar.tsx index 811abe1bd1ccc3..f737589aa2a4a4 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/findings_distribution_bar.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/layout/findings_distribution_bar.tsx @@ -8,9 +8,9 @@ import React from 'react'; import { css } from '@emotion/react'; import { EuiHealth, EuiBadge, EuiSpacer, EuiFlexGroup, useEuiTheme } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { statusColors } from '@kbn/cloud-security-posture'; import { getAbbreviatedNumber } from '../../../common/utils/get_abbreviated_number'; import { RULE_FAILED, RULE_PASSED } from '../../../../common/constants'; -import { statusColors } from '../../../common/constants'; import type { Evaluation } from '../../../../common/types_old'; interface Props { 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 db7d856e23aa79..07becb2cc26e44 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 { CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX } from '../../../../common/constants'; +import { CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX } 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/findings/findings.tsx b/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.tsx index b3995e405ba73b..00837a3629893d 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,9 +10,10 @@ 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 { findingsNavigation } from '@kbn/cloud-security-posture'; import { useCspSetupStatusApi } from '@kbn/cloud-security-posture/src/hooks/use_csp_setup_status_api'; import { Configurations } from '../configurations'; -import { cloudPosturePages, findingsNavigation } from '../../common/navigation/constants'; +import { cloudPosturePages } 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 { getStatusForIndexName } from '../../../common/utils/helpers'; 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 dc8de41c0bf7bd..15dca8e9b76ff5 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,14 +18,14 @@ 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 { statusColors } from '@kbn/cloud-security-posture'; +import { useNavigateFindings } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; 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'; import noDataIllustration from '../../assets/illustrations/no_data_illustration.svg'; -import { useNavigateFindings } from '../../common/hooks/use_navigate_findings'; import { cloudPosturePages } from '../../common/navigation/constants'; 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'; 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 6d3b2e5cf1b77c..ca4cc7b01bd11a 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,12 +6,12 @@ */ import React from 'react'; import { Routes, Route } from '@kbn/shared-ux-router'; +import { findingsNavigation } from '@kbn/cloud-security-posture'; import { useCspSetupStatusApi } from '@kbn/cloud-security-posture/src/hooks/use_csp_setup_status_api'; +import { useDataView } from '@kbn/cloud-security-posture/src/hooks/use_data_view'; import { CDR_VULNERABILITIES_DATA_VIEW_ID_PREFIX } from '../../../common/constants'; import { NoVulnerabilitiesStates } from '../../components/no_vulnerabilities_states'; import { CloudPosturePage } from '../../components/cloud_posture_page'; -import { findingsNavigation } from '../../common/navigation/constants'; -import { useDataView } from '../../common/api/use_data_view'; import { LatestVulnerabilitiesContainer } from './latest_vulnerabilities_container'; import { DataViewContext } from '../../common/contexts/data_view_context'; 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 dba62e23ce03e2..d87d7981d1ed97 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 @@ -6,14 +6,14 @@ */ import React from 'react'; import Chance from 'chance'; +import { CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX } from '@kbn/cloud-security-posture-common'; import { Vulnerabilities } from './vulnerabilities'; import { - CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX, CDR_LATEST_NATIVE_VULNERABILITIES_INDEX_PATTERN, VULN_MGMT_POLICY_TEMPLATE, } from '../../../common/constants'; import { useCspSetupStatusApi } from '@kbn/cloud-security-posture/src/hooks/use_csp_setup_status_api'; -import { useDataView } from '../../common/api/use_data_view'; +import { useDataView } from '@kbn/cloud-security-posture/src/hooks/use_data_view'; import { createReactQueryResponse } from '../../test/fixtures/react_query'; import { useCISIntegrationPoliciesLink } from '../../common/navigation/use_navigate_to_cis_integration_policies'; import { useCspIntegrationLink } from '../../common/navigation/use_csp_integration_link'; @@ -27,7 +27,7 @@ import { TestProvider } from '../../test/test_provider'; import { useLicenseManagementLocatorApi } from '../../common/api/use_license_management_locator_api'; import { createStubDataView } from '@kbn/data-views-plugin/common/stubs'; -jest.mock('../../common/api/use_data_view'); +jest.mock('@kbn/cloud-security-posture/src/hooks/use_data_view'); jest.mock('@kbn/cloud-security-posture/src/hooks/use_csp_setup_status_api'); jest.mock('../../common/api/use_license_management_locator_api'); jest.mock('../../common/hooks/use_is_subscription_status_valid'); 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 049681e48e2521..9ea51de9e5f9d5 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 @@ -31,7 +31,7 @@ import { VULNERABILITY_DASHBOARD_CONTAINER } from '../compliance_dashboard/test_ import { useVulnerabilityDashboardApi } from '../../common/api/use_vulnerability_dashboard_api'; import { mockCnvmDashboardData } from './_mocks_/vulnerability_dashboard.mock'; -jest.mock('../../common/api/use_data_view'); +jest.mock('@kbn/cloud-security-posture/src/hooks/use_data_view'); jest.mock('@kbn/cloud-security-posture/src/hooks/use_csp_setup_status_api'); jest.mock('../../common/api/use_license_management_locator_api'); jest.mock('../../common/hooks/use_is_subscription_status_valid'); diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_statistics.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_statistics.tsx index adfca7f2f02052..6a82adcb4e05f6 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_statistics.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_statistics.tsx @@ -7,10 +7,10 @@ import React, { useMemo } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiHealth } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { useNavigateVulnerabilities } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; import { VulnCounterCard, type VulnCounterCardProps } from '../../components/vuln_counter_card'; import { VULNERABILITIES_SEVERITY } from '../../../common/constants'; import { useVulnerabilityDashboardApi } from '../../common/api/use_vulnerability_dashboard_api'; -import { useNavigateVulnerabilities } from '../../common/hooks/use_navigate_findings'; import { CompactFormattedNumber } from '../../components/compact_formatted_number'; import { getSeverityStatusColor } from '../../common/utils/get_vulnerability_colors'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel_section.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel_section.tsx index f9a4b818e975a3..a3d92ab40f08c6 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel_section.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerability_dashboard/vulnerability_table_panel_section.tsx @@ -16,6 +16,8 @@ import { useEuiTheme, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import type { NavFilter } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; +import { useNavigateVulnerabilities } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; import { PatchableVulnerabilityStat, VulnerabilityStat, @@ -24,7 +26,6 @@ import { } from '../../../common/types_old'; import { DASHBOARD_TABLE_TYPES } from './vulnerability_table_panel.config'; import { VulnerabilityTablePanel } from './vulnerability_table_panel'; -import { NavFilter, useNavigateVulnerabilities } from '../../common/hooks/use_navigate_findings'; import { CVSScoreBadge, SeverityStatusBadge } from '../../components/vulnerability_badges'; import { useVulnerabilityDashboardApi } from '../../common/api/use_vulnerability_dashboard_api'; import { VULNERABILITY_GROUPING_OPTIONS, 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 dcdc9ffccd7ce2..89404b0238ece1 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,8 +19,8 @@ import { EuiButton, EuiComboBox } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; +import { useNavigateVulnerabilities } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; import { truthy } from '../../../common/utils/helpers'; -import { useNavigateVulnerabilities } from '../../common/hooks/use_navigate_findings'; import { VulnStatsTrend, VulnSeverity } from '../../../common/types_old'; import { useVulnerabilityDashboardApi } from '../../common/api/use_vulnerability_dashboard_api'; import { getSeverityStatusColor } from '../../common/utils/get_vulnerability_colors'; diff --git a/x-pack/plugins/cloud_security_posture/public/test/mock_server/handlers/dataview.handlers.mock.ts b/x-pack/plugins/cloud_security_posture/public/test/mock_server/handlers/dataview.handlers.mock.ts index 62430421f7358a..74772313c762ac 100644 --- a/x-pack/plugins/cloud_security_posture/public/test/mock_server/handlers/dataview.handlers.mock.ts +++ b/x-pack/plugins/cloud_security_posture/public/test/mock_server/handlers/dataview.handlers.mock.ts @@ -7,7 +7,7 @@ import { http, HttpResponse } from 'msw'; import { CDR_MISCONFIGURATIONS_INDEX_PATTERN } from '@kbn/cloud-security-posture-common'; -import { CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX } from '../../../../common/constants'; +import { CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX } from '@kbn/cloud-security-posture-common'; const generateDataViewField = (name: string, type: 'string' | 'date' = 'string') => ({ name, diff --git a/x-pack/plugins/cloud_security_posture/server/saved_objects/data_views.ts b/x-pack/plugins/cloud_security_posture/server/saved_objects/data_views.ts index e99f0365e6099f..69eef99d7cd438 100644 --- a/x-pack/plugins/cloud_security_posture/server/saved_objects/data_views.ts +++ b/x-pack/plugins/cloud_security_posture/server/saved_objects/data_views.ts @@ -15,11 +15,12 @@ import { DataViewAttributes } from '@kbn/data-views-plugin/common'; import { SpacesServiceStart } from '@kbn/spaces-plugin/server'; import { DataViewsServerPluginStart } from '@kbn/data-views-plugin/server'; import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; -import { CDR_MISCONFIGURATIONS_INDEX_PATTERN } from '@kbn/cloud-security-posture-common'; - import { + CDR_MISCONFIGURATIONS_INDEX_PATTERN, CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX, CDR_MISCONFIGURATIONS_DATA_VIEW_NAME, +} from '@kbn/cloud-security-posture-common'; +import { CDR_VULNERABILITIES_DATA_VIEW_ID_PREFIX, CDR_VULNERABILITIES_DATA_VIEW_NAME, CDR_VULNERABILITIES_INDEX_PATTERN, diff --git a/x-pack/plugins/cloud_security_posture/tsconfig.json b/x-pack/plugins/cloud_security_posture/tsconfig.json index 6e19e9b4d09fa6..2b075062b38c9e 100755 --- a/x-pack/plugins/cloud_security_posture/tsconfig.json +++ b/x-pack/plugins/cloud_security_posture/tsconfig.json @@ -33,7 +33,6 @@ "@kbn/ui-theme", "@kbn/i18n-react", "@kbn/es-query", - "@kbn/rison", "@kbn/data-views-plugin", "@kbn/std", "@kbn/monaco", diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/components/index.tsx b/x-pack/plugins/security_solution/public/cloud_security_posture/components/index.tsx index 25b953e1b15471..3058300036565a 100644 --- a/x-pack/plugins/security_solution/public/cloud_security_posture/components/index.tsx +++ b/x-pack/plugins/security_solution/public/cloud_security_posture/components/index.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { EuiAccordion, EuiSpacer, EuiTitle, useEuiTheme } from '@elastic/eui'; +import { EuiAccordion, EuiHorizontalRule, EuiSpacer, EuiTitle, useEuiTheme } from '@elastic/eui'; import React from 'react'; import { css } from '@emotion/react'; @@ -21,31 +21,34 @@ export const EntityInsight = ({ hostName }: { hostName: string }) => { return ( <> {hasMisconfigurationFindings && ( - -

- -

- - } - > - - - -
+ <> + + +

+ +

+ + } + > + + + +
+ )} ); diff --git a/x-pack/plugins/security_solution/public/cloud_security_posture/routes.tsx b/x-pack/plugins/security_solution/public/cloud_security_posture/routes.tsx index f11bac97dfcf0c..4f64544c79c5d3 100644 --- a/x-pack/plugins/security_solution/public/cloud_security_posture/routes.tsx +++ b/x-pack/plugins/security_solution/public/cloud_security_posture/routes.tsx @@ -6,11 +6,9 @@ */ import React from 'react'; +import { CLOUD_SECURITY_POSTURE_BASE_PATH } from '@kbn/cloud-security-posture-common'; import type { CloudSecurityPosturePageId } from '@kbn/cloud-security-posture-plugin/public'; -import { - CLOUD_SECURITY_POSTURE_BASE_PATH, - type CspSecuritySolutionContext, -} from '@kbn/cloud-security-posture-plugin/public'; +import { type CspSecuritySolutionContext } from '@kbn/cloud-security-posture-plugin/public'; import { TrackApplicationView } from '@kbn/usage-collection-plugin/public'; import type { SecurityPageName, SecuritySubPluginRoutes } from '../app/types'; import { useKibana } from '../common/lib/kibana'; 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 ea149f3e7ede77..1db11becf96109 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,7 +72,6 @@ export const HostPanelContent = ({ observedFields={observedFields} queryId={HOST_PANEL_OBSERVED_HOST_QUERY_ID} /> - ); diff --git a/x-pack/test/cloud_security_posture_functional/data_views/data_views.ts b/x-pack/test/cloud_security_posture_functional/data_views/data_views.ts index d6da5ff3cfe8aa..4d3e1585ec5bb3 100644 --- a/x-pack/test/cloud_security_posture_functional/data_views/data_views.ts +++ b/x-pack/test/cloud_security_posture_functional/data_views/data_views.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import { DataViewAttributes } from '@kbn/data-views-plugin/common'; -import { CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX } from '@kbn/cloud-security-posture-plugin/common/constants'; +import { CDR_MISCONFIGURATIONS_DATA_VIEW_ID_PREFIX } from '@kbn/cloud-security-posture-common'; import { KbnClientSavedObjects } from '@kbn/test/src/kbn_client/kbn_client_saved_objects'; import { FtrProviderContext } from '../ftr_provider_context';