From 351e900d28c736ad402d5caf180b1df28a5b3262 Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Wed, 11 Dec 2024 10:25:47 +0000 Subject: [PATCH 01/33] asset criticality badge colors update to use euiTheme Colors --- .../asset_criticality_badge.tsx | 13 +++---------- .../hooks/use_criticality_level_colors.ts | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_badge.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_badge.tsx index a4c7344ca5607..befac8537b94a 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_badge.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_badge.tsx @@ -6,17 +6,9 @@ */ import React from 'react'; import { EuiHealth } from '@elastic/eui'; -import { euiLightVars } from '@kbn/ui-theme'; import { CRITICALITY_LEVEL_TITLE } from './translations'; import type { CriticalityLevelWithUnassigned } from '../../../../common/entity_analytics/asset_criticality/types'; - -export const CRITICALITY_LEVEL_COLOR: Record = { - extreme_impact: '#E7664C', - high_impact: '#DA8B45', - medium_impact: 'D6BF57', - low_impact: '#54B399', - unassigned: euiLightVars.euiColorMediumShade, -}; +import { useCriticalityLevelColors } from '../../hooks/use_criticality_level_colors'; export const AssetCriticalityBadge: React.FC<{ criticalityLevel?: CriticalityLevelWithUnassigned; @@ -29,10 +21,11 @@ export const AssetCriticalityBadge: React.FC<{ dataTestSubj = 'asset-criticality-badge', className, }) => { + const criticalityColors = useCriticalityLevelColors(); return ( diff --git a/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts b/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts new file mode 100644 index 0000000000000..d017b111796b1 --- /dev/null +++ b/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts @@ -0,0 +1,19 @@ +/* + * 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 { useEuiTheme } from '@elastic/eui'; +import type { CriticalityLevelWithUnassigned } from '../../../common/entity_analytics/asset_criticality/types'; +// TODO: update these colors once severity color palette is available +export const useCriticalityLevelColors = (): Record => { + const { euiTheme } = useEuiTheme(); + return { + extreme_impact: '#F66D64', // TODO change to euiTheme.colors.vis.euiColorVis6 when borealis is available, + high_impact: euiTheme.colors.vis.euiColorVisWarm1, + medium_impact: euiTheme.colors.vis.euiColorVis9, + low_impact: euiTheme.colors.vis.euiColorVisSuccess0, + unassigned: euiTheme.colors.vis.euiColorVisNeutral0, // TODO: this is a closest guess based on severity colors, change to grey20 when available + }; +}; From f0692f2a690232c1f0bfa178c45987d78eaf637d Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Thu, 5 Dec 2024 13:00:40 +0000 Subject: [PATCH 02/33] color tokens updated, util functions and json tokens removed --- .../components/severity/common/index.tsx | 47 ++++++++++--------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx index e010c3bd42169..abaf7c6c373b0 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx @@ -7,31 +7,33 @@ import React from 'react'; -import { EuiHealth, EuiTextColor, transparentize } from '@elastic/eui'; +import { EuiHealth, EuiTextColor, useEuiTheme } from '@elastic/eui'; import styled, { css } from 'styled-components'; -import { euiLightVars } from '@kbn/ui-theme'; import { RISK_SEVERITY_COLOUR } from '../../../common/utils'; import { HoverPopover } from '../../../../common/components/hover_popover'; import type { RiskSeverity } from '../../../../../common/search_strategy'; -const RiskBadge = styled.div<{ $severity: RiskSeverity; $hideBackgroundColor: boolean }>` +const RiskBadge = styled.div<{ + $severity: RiskSeverity; + $hideBackgroundColor: boolean; +}>` ${({ theme, $severity, $hideBackgroundColor }) => css` width: fit-content; - padding-right: ${theme.eui.euiSizeS}; - padding-left: ${theme.eui.euiSizeXS}; + padding-right: ${theme.size.xs}; + padding-left: ${theme.size.xs}; ${($severity === 'Critical' || $severity === 'High') && !$hideBackgroundColor && css` - background-color: ${transparentize(theme.eui.euiColorDanger, 0.2)}; + background-color: ${theme.colors.backgroundLightDanger}; border-radius: 999px; // pill shaped `}; `} `; const TooltipContainer = styled.div` - padding: ${({ theme }) => theme.eui.euiSizeS}; + padding: ${({ theme }) => theme.size.s}; `; export const RiskScoreLevel: React.FC<{ @@ -68,18 +70,21 @@ const RiskScoreBadge: React.FC<{ severity: RiskSeverity; hideBackgroundColor?: boolean; ['data-test-subj']?: string; -}> = React.memo(({ severity, hideBackgroundColor = false, 'data-test-subj': dataTestSubj }) => ( - - - - {severity} - - - -)); +}> = React.memo(({ severity, hideBackgroundColor = false, 'data-test-subj': dataTestSubj }) => { + const { euiTheme } = useEuiTheme(); + return ( + + + + {severity} + + + + ); +}); RiskScoreBadge.displayName = 'RiskScoreBadge'; From a5a8653ecac62826a0b61646577d11d308acd0aa Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Tue, 3 Dec 2024 11:57:40 +0000 Subject: [PATCH 03/33] JSON tokens updated to pull in from euiTheme instead; index text for risk severity updated to use RISK_SEVERITY_COLOUR instead of SEVERITY_COLOUR --- .../components/file_picker_step.tsx | 20 ++++++++++--------- .../risk_summary_flyout/risk_summary.tsx | 3 +-- .../components/severity/common/index.test.tsx | 13 ++++++------ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx index 942b3a18c2c21..54aa99dc2cd9e 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx @@ -13,13 +13,14 @@ import { EuiSpacer, EuiText, EuiTitle, + useEuiFontSize, useEuiTheme, } from '@elastic/eui'; + import { css } from '@emotion/css'; import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; -import { euiThemeVars } from '@kbn/ui-theme'; import { CRITICALITY_CSV_MAX_SIZE_BYTES, ValidCriticalityLevels, @@ -35,17 +36,18 @@ interface AssetCriticalityFilePickerStepProps { const sampleCSVContent = `user,user-001,low_impact\nuser,user-002,medium_impact\nhost,host-001,extreme_impact`; -const listStyle = css` - list-style-type: disc; - margin-bottom: ${euiThemeVars.euiSizeL}; - margin-left: ${euiThemeVars.euiSizeL}; - line-height: ${euiThemeVars.euiLineHeight}; -`; - export const AssetCriticalityFilePickerStep: React.FC = React.memo(({ onFileChange, errorMessage, isLoading }) => { const formatBytes = useFormatBytes(); const { euiTheme } = useEuiTheme(); + + const listStyle = css` + list-style-type: disc; + margin-bottom: ${euiTheme.size.l}; + margin-left: ${euiTheme.size.l}; + line-height: ${useEuiFontSize('s').lineHeight}; + `; + return ( <> @@ -94,7 +96,7 @@ export const AssetCriticalityFilePickerStep: React.FC
  • {'host'}, diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx index 0c42543a7f91e..bcfe92225a528 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx @@ -19,7 +19,6 @@ import { } from '@elastic/eui'; import { css } from '@emotion/react'; import { FormattedMessage } from '@kbn/i18n-react'; -import { euiThemeVars } from '@kbn/ui-theme'; import dateMath from '@kbn/datemath'; import { i18n } from '@kbn/i18n'; import { useKibana } from '../../../common/lib/kibana/kibana_react'; @@ -243,7 +242,7 @@ const FlyoutRiskSummaryComponent = ({ css={css` position: absolute; right: 0; - top: -${euiThemeVars.euiSize}; + top: -${euiTheme.size}; `} > { const original = jest.requireActual('@elastic/eui'); @@ -38,7 +37,7 @@ describe('RiskScore', () => { expect(container).toHaveTextContent(RiskSeverity.Critical); expect(EuiHealth as jest.Mock).toHaveBeenLastCalledWith( - expect.objectContaining({ color: SEVERITY_COLOR.critical }), + expect.objectContaining({ color: RISK_SEVERITY_COLOUR.Critical }), context ); }); @@ -53,7 +52,7 @@ describe('RiskScore', () => { expect(container).toHaveTextContent(RiskSeverity.High); expect(EuiHealth as jest.Mock).toHaveBeenLastCalledWith( - expect.objectContaining({ color: SEVERITY_COLOR.high }), + expect.objectContaining({ color: RISK_SEVERITY_COLOUR.High }), context ); }); @@ -68,7 +67,7 @@ describe('RiskScore', () => { expect(container).toHaveTextContent(RiskSeverity.Moderate); expect(EuiHealth as jest.Mock).toHaveBeenLastCalledWith( - expect.objectContaining({ color: SEVERITY_COLOR.medium }), + expect.objectContaining({ color: RISK_SEVERITY_COLOUR.Moderate }), context ); }); @@ -83,7 +82,7 @@ describe('RiskScore', () => { expect(container).toHaveTextContent(RiskSeverity.Low); expect(EuiHealth as jest.Mock).toHaveBeenLastCalledWith( - expect.objectContaining({ color: SEVERITY_COLOR.low }), + expect.objectContaining({ color: RISK_SEVERITY_COLOUR.Low }), context ); }); @@ -98,7 +97,7 @@ describe('RiskScore', () => { expect(container).toHaveTextContent(RiskSeverity.Unknown); expect(EuiHealth as jest.Mock).toHaveBeenLastCalledWith( - expect.objectContaining({ color: euiThemeVars.euiColorMediumShade }), + expect.objectContaining({ color: RISK_SEVERITY_COLOUR.Unknown }), context ); }); From 4d94311cdc739f2f21d291418c859668392121dc Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Sat, 30 Nov 2024 11:00:25 +0000 Subject: [PATCH 04/33] EUI refresh theme colors update --- .../components/validation_step.tsx | 2 +- .../entity_analytics/components/risk_information/index.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.tsx index c4dadc756c15b..821782667f8c8 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.tsx @@ -100,7 +100,7 @@ export const AssetCriticalityValidationStep: React.FC {validLines.text} diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_information/index.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_information/index.tsx index 0b08c8976cf67..23bd74ecd595f 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_information/index.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_information/index.tsx @@ -144,7 +144,7 @@ export const RiskInformationFlyout = ({ handleOnClose }: { handleOnClose: () => label={BETA} size="s" css={css` - color: ${euiTheme.colors.text}; + color: ${euiTheme.colors.textParagraph}; margin-top: ${euiTheme.size.xxs}; `} /> From ed7b5154320d7959ffa46b5d7937fe82d3d75981 Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Thu, 5 Dec 2024 15:50:20 +0000 Subject: [PATCH 05/33] change theme colors to use from themeProvider instead of useEuiTheme hook --- .../entity_analytics/components/severity/common/index.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx index abaf7c6c373b0..2164e79faa0d0 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx @@ -21,19 +21,19 @@ const RiskBadge = styled.div<{ }>` ${({ theme, $severity, $hideBackgroundColor }) => css` width: fit-content; - padding-right: ${theme.size.xs}; - padding-left: ${theme.size.xs}; + padding-right: ${theme.eui.euiSizeXS}; + padding-left: ${theme.eui.euiSizeXS}; ${($severity === 'Critical' || $severity === 'High') && !$hideBackgroundColor && css` - background-color: ${theme.colors.backgroundLightDanger}; + background-color: ${theme.eui.euiColorDanger}; border-radius: 999px; // pill shaped `}; `} `; const TooltipContainer = styled.div` - padding: ${({ theme }) => theme.size.s}; + padding: ${({ theme }) => theme.euiSizeS}; `; export const RiskScoreLevel: React.FC<{ From 9d5a020b6b9ea3a686790faeaacc1d96d570a119 Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Thu, 12 Dec 2024 11:44:04 +0000 Subject: [PATCH 06/33] restore missing word in filepicker step --- .../components/file_picker_step.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx index 54aa99dc2cd9e..c7adec090f4cd 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx @@ -96,7 +96,7 @@ export const AssetCriticalityFilePickerStep: React.FC
  • {'host'}, From 0164b9a44b180db74fe13509ba604bed901667e7 Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Thu, 12 Dec 2024 13:40:01 +0000 Subject: [PATCH 07/33] risk severity hook to use the useEuiTheme hook instead of - definition in place, to change references WiP --- .../public/entity_analytics/common/utils.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts b/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts index f3097fe46b9bb..4b791e6f58da6 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts @@ -6,6 +6,7 @@ */ import { euiLightVars } from '@kbn/ui-theme'; +import { useEuiTheme } from '@elastic/eui'; import { RiskSeverity } from '../../../common/search_strategy'; import { SEVERITY_COLOR } from '../../overview/components/detection_response/utils'; export { RISK_LEVEL_RANGES as RISK_SCORE_RANGES } from '../../../common/entity_analytics/risk_engine'; @@ -26,6 +27,19 @@ export const RISK_SEVERITY_COLOUR: { [k in RiskSeverity]: string } = { [RiskSeverity.Critical]: SEVERITY_COLOR.critical, }; +export const useRiskSeverityColors = (): { [k in RiskSeverity]: string } => { + const { euiTheme } = useEuiTheme(); + + return { + [RiskSeverity.Unknown]: euiTheme.colors.vis.euiColorVisNeutral0, // TODO: this is a closest guess based on severity colors, change to grey20 when available + // TODO: update these with V9.0.0 severity palette colors when available / keep if the below are updated with the palette + [RiskSeverity.Low]: SEVERITY_COLOR.low, + [RiskSeverity.Moderate]: SEVERITY_COLOR.medium, + [RiskSeverity.High]: SEVERITY_COLOR.high, + [RiskSeverity.Critical]: SEVERITY_COLOR.critical, + }; +}; + type SnakeToCamelCaseString = S extends `${infer T}_${infer U}` ? `${T}${Capitalize>}` : S; From 087a782f87e2011b280ac58863e9f666665f8386 Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Fri, 13 Dec 2024 21:31:03 +0000 Subject: [PATCH 08/33] riskSeverityColors hook used instead of static color mapping to use euiTheme hook for colors --- .../components/risk_score_donut_chart/index.tsx | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.tsx index 92ae592368ba5..f0aa8ef3c82ff 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.tsx @@ -10,7 +10,7 @@ import React from 'react'; import styled from 'styled-components'; import { i18n } from '@kbn/i18n'; import { ChartLabel } from '../../../overview/components/detection_response/alerts_by_status/chart_label'; -import { RISK_SEVERITY_COLOUR } from '../../common/utils'; +import { useRiskSeverityColors } from '../../common/utils'; import type { SeverityCount } from '../severity/types'; import { useRiskDonutChartData } from './use_risk_donut_chart_data'; import type { FillColor } from '../../../common/components/charts/donutchart'; @@ -21,12 +21,6 @@ import type { RiskSeverity } from '../../../../common/search_strategy'; const DONUT_HEIGHT = 120; -const fillColor: FillColor = (dataName) => { - return Object.hasOwn(RISK_SEVERITY_COLOUR, dataName) - ? RISK_SEVERITY_COLOUR[dataName as RiskSeverity] - : emptyDonutColor; -}; - const DonutContainer = styled(EuiFlexItem)` padding-right: ${({ theme }) => theme.eui.euiSizeXXL}; padding-left: ${({ theme }) => theme.eui.euiSizeM}; @@ -42,7 +36,12 @@ interface RiskScoreDonutChartProps { export const RiskScoreDonutChart = ({ severityCount }: RiskScoreDonutChartProps) => { const [donutChartData, legendItems, total] = useRiskDonutChartData(severityCount); - + const riskColors = useRiskSeverityColors(); + const fillColorValue: FillColor = (dataName) => { + return Object.hasOwn(riskColors, dataName) + ? riskColors[dataName as RiskSeverity] + : emptyDonutColor; + }; return ( @@ -51,7 +50,7 @@ export const RiskScoreDonutChart = ({ severityCount }: RiskScoreDonutChartProps) Date: Sun, 15 Dec 2024 20:28:25 +0000 Subject: [PATCH 09/33] riskSeverity hook used instead of static mapping to use euiTheme hook - WiP consider moving back to static mapping if eui can allow --- .../public/entity_analytics/common/utils.ts | 8 ++-- .../use_risk_donut_chart_data.ts | 9 ++-- .../risk_summary_flyout/risk_summary.tsx | 6 ++- .../components/severity/common/index.tsx | 5 ++- .../components/severity/severity_badges.tsx | 41 ++++++++++--------- .../components/severity/severity_bar.tsx | 9 ++-- .../lens_attributes/risk_score_summary.ts | 9 ++-- 7 files changed, 48 insertions(+), 39 deletions(-) diff --git a/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts b/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts index 4b791e6f58da6..87488bd79efdc 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts @@ -33,10 +33,10 @@ export const useRiskSeverityColors = (): { [k in RiskSeverity]: string } => { return { [RiskSeverity.Unknown]: euiTheme.colors.vis.euiColorVisNeutral0, // TODO: this is a closest guess based on severity colors, change to grey20 when available // TODO: update these with V9.0.0 severity palette colors when available / keep if the below are updated with the palette - [RiskSeverity.Low]: SEVERITY_COLOR.low, - [RiskSeverity.Moderate]: SEVERITY_COLOR.medium, - [RiskSeverity.High]: SEVERITY_COLOR.high, - [RiskSeverity.Critical]: SEVERITY_COLOR.critical, + [RiskSeverity.Low]: euiTheme.colors.vis.euiColorVisSuccess0, + [RiskSeverity.Moderate]: euiTheme.colors.vis.euiColorVis9, + [RiskSeverity.High]: euiTheme.colors.vis.euiColorVisWarm1, + [RiskSeverity.Critical]: '#F66D64', // Todo: update with V9.0.0 severity palette color when available }; }; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.ts b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.ts index 8505f229d893f..6190716a9815d 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.ts @@ -6,7 +6,7 @@ */ import { sum } from 'lodash/fp'; import { useMemo } from 'react'; -import { RISK_SEVERITY_COLOUR } from '../../common/utils'; +import { useRiskSeverityColors } from '../../common/utils'; import type { LegendItem } from '../../../common/components/charts/legend_item'; import type { SeverityCount } from '../severity/types'; import type { DonutChartProps } from '../../../common/components/charts/donutchart'; @@ -17,8 +17,9 @@ const legendField = 'kibana.alert.severity'; export const useRiskDonutChartData = ( severityCount: SeverityCount ): [DonutChartProps['data'], LegendItem[], number] => { + const riskSeverityColor = useRiskSeverityColors(); const [donutChartData, legendItems, total] = useMemo(() => { - const severities = Object.keys(RISK_SEVERITY_COLOUR) as RiskSeverity[]; + const severities = Object.keys(riskSeverityColor) as RiskSeverity[]; return [ severities.map((status) => ({ @@ -26,13 +27,13 @@ export const useRiskDonutChartData = ( value: severityCount[status], })), severities.map((status) => ({ - color: RISK_SEVERITY_COLOUR[status], + color: riskSeverityColor[status], field: legendField, value: status, })), sum(Object.values(severityCount)), ]; - }, [severityCount]); + }, [riskSeverityColor, severityCount]); return [donutChartData, legendItems, total]; }; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx index bcfe92225a528..edf213a2ec466 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx @@ -43,6 +43,7 @@ import { SUMMARY_TABLE_MIN_WIDTH, } from './common'; import { EntityEventTypes } from '../../../common/lib/telemetry'; +import { useRiskSeverityColors } from '../../common/utils'; export interface RiskSummaryProps { riskScoreData: RiskScoreState; @@ -64,7 +65,7 @@ const FlyoutRiskSummaryComponent = ({ const riskData = data && data.length > 0 ? data[0] : undefined; const entityData = getEntityData(riskData); const { euiTheme } = useEuiTheme(); - + const riskColors = useRiskSeverityColors(); const lensAttributes = useMemo(() => { const entityName = entityData?.name ?? ''; const fieldName = isUserRiskData(riskData) ? 'user.name' : 'host.name'; @@ -74,8 +75,9 @@ const FlyoutRiskSummaryComponent = ({ query: `${fieldName}: ${entityName}`, spaceId: 'default', riskEntity: isUserRiskData(riskData) ? RiskScoreEntity.user : RiskScoreEntity.host, + riskColors, }); - }, [entityData?.name, entityData?.risk?.calculated_level, riskData]); + }, [entityData?.name, entityData?.risk?.calculated_level, riskData, riskColors]); const xsFontSize = useEuiFontSize('xxs').fontSize; const rows = useMemo(() => getItems(entityData), [entityData]); diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx index 2164e79faa0d0..9ecab712f1156 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx @@ -11,7 +11,7 @@ import { EuiHealth, EuiTextColor, useEuiTheme } from '@elastic/eui'; import styled, { css } from 'styled-components'; -import { RISK_SEVERITY_COLOUR } from '../../../common/utils'; +import { useRiskSeverityColors } from '../../../common/utils'; import { HoverPopover } from '../../../../common/components/hover_popover'; import type { RiskSeverity } from '../../../../../common/search_strategy'; @@ -72,6 +72,7 @@ const RiskScoreBadge: React.FC<{ ['data-test-subj']?: string; }> = React.memo(({ severity, hideBackgroundColor = false, 'data-test-subj': dataTestSubj }) => { const { euiTheme } = useEuiTheme(); + const riskColors = useRiskSeverityColors(); return ( - + {severity} diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_badges.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_badges.tsx index 373a8dd5a5693..0abe7098ec766 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_badges.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_badges.tsx @@ -7,31 +7,34 @@ import { EuiFlexGroup, EuiNotificationBadge, EuiFlexItem } from '@elastic/eui'; import React from 'react'; -import { RISK_SEVERITY_COLOUR } from '../../common/utils'; +import { useRiskSeverityColors } from '../../common/utils'; import type { RiskSeverity } from '../../../../common/search_strategy'; import { RiskScoreLevel } from './common'; import type { SeverityCount } from './types'; export const SeverityBadges: React.FC<{ severityCount: SeverityCount; -}> = React.memo(({ severityCount }) => ( - - - - - {(Object.keys(RISK_SEVERITY_COLOUR) as RiskSeverity[]).map((status) => ( - - - - ))} - - - -)); +}> = React.memo(({ severityCount }) => { + const riskColors = useRiskSeverityColors(); + return ( + + + + + {(Object.keys(riskColors) as RiskSeverity[]).map((status) => ( + + + + ))} + + + + ); +}); SeverityBadges.displayName = 'SeverityBadges'; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_bar.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_bar.tsx index 149d8f2cf74b9..7c5e0b254047a 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_bar.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/severity/severity_bar.tsx @@ -9,7 +9,7 @@ import styled from 'styled-components'; import { EuiColorPaletteDisplay } from '@elastic/eui'; import React, { useMemo } from 'react'; -import { RISK_SEVERITY_COLOUR } from '../../common/utils'; +import { useRiskSeverityColors } from '../../common/utils'; import type { RiskSeverity } from '../../../../common/search_strategy'; import type { SeverityCount } from './types'; @@ -31,21 +31,22 @@ type PalletteArray = PalletteObject[]; export const SeverityBar: React.FC<{ severityCount: SeverityCount; }> = ({ severityCount }) => { + const riskSeverityColor = useRiskSeverityColors(); const palette = useMemo( () => - (Object.keys(RISK_SEVERITY_COLOUR) as RiskSeverity[]).reduce( + (Object.keys(riskSeverityColor) as RiskSeverity[]).reduce( (acc: PalletteArray, status: RiskSeverity) => { const previousStop = acc.length > 0 ? acc[acc.length - 1].stop : 0; const newEntry: PalletteObject = { stop: previousStop + (severityCount[status] || 0), - color: RISK_SEVERITY_COLOUR[status], + color: riskSeverityColor[status], }; acc.push(newEntry); return acc; }, [] as PalletteArray ), - [severityCount] + [severityCount, riskSeverityColor] ); return ( LensAttributes = ({ spaceId, query, severity, riskEntity }) => { +) => LensAttributes = ({ spaceId, query, severity, riskEntity, riskColors }) => { const layerIds = [uuidv4(), uuidv4()]; const internalReferenceId = uuidv4(); const columnIds = [uuidv4(), uuidv4(), uuidv4()]; @@ -55,11 +56,11 @@ export const getRiskScoreSummaryAttributes: ( rangeMax: null, progression: 'fixed', colorStops: SEVERITY_UI_SORT_ORDER.map((riskSeverity) => ({ - color: RISK_SEVERITY_COLOUR[riskSeverity], + color: riskColors[riskSeverity], stop: RISK_SCORE_RANGES[riskSeverity].start, })), stops: SEVERITY_UI_SORT_ORDER.map((riskSeverity) => ({ - color: RISK_SEVERITY_COLOUR[riskSeverity], + color: riskColors[riskSeverity], stop: RISK_SCORE_RANGES[riskSeverity].stop, })), continuity: 'above', From 7cd01887b24a1dd3ed814a2292b73fc8cf42a946 Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Mon, 16 Dec 2024 16:51:32 +0000 Subject: [PATCH 10/33] moved static definitions to hook usage in risk severity colors --- .../components/severity/common/index.test.tsx | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.test.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.test.tsx index d6708d6eb4018..daed7b900df7d 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.test.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/severity/common/index.test.tsx @@ -15,7 +15,7 @@ import { EuiHealth } from '@elastic/eui'; import { RiskSeverity } from '../../../../../common/search_strategy'; import { RiskScoreLevel } from '.'; -import { RISK_SEVERITY_COLOUR } from '../../../common/utils'; +import { useRiskSeverityColors } from '../../../common/utils'; jest.mock('@elastic/eui', () => { const original = jest.requireActual('@elastic/eui'); @@ -26,6 +26,19 @@ jest.mock('@elastic/eui', () => { }); describe('RiskScore', () => { + let riskSeverityColor: ReturnType; + const HookWrapper: React.FC = () => { + riskSeverityColor = useRiskSeverityColors(); + return null; + }; + + beforeAll(() => { + render( + + + + ); + }); const context = {}; it('renders critical severity risk score', () => { const { container } = render( @@ -35,10 +48,9 @@ describe('RiskScore', () => { ); expect(container).toHaveTextContent(RiskSeverity.Critical); - expect(EuiHealth as jest.Mock).toHaveBeenLastCalledWith( - expect.objectContaining({ color: RISK_SEVERITY_COLOUR.Critical }), - context + expect.objectContaining({ color: riskSeverityColor.Critical }), + {} ); }); @@ -52,7 +64,7 @@ describe('RiskScore', () => { expect(container).toHaveTextContent(RiskSeverity.High); expect(EuiHealth as jest.Mock).toHaveBeenLastCalledWith( - expect.objectContaining({ color: RISK_SEVERITY_COLOUR.High }), + expect.objectContaining({ color: riskSeverityColor.High }), context ); }); @@ -67,7 +79,7 @@ describe('RiskScore', () => { expect(container).toHaveTextContent(RiskSeverity.Moderate); expect(EuiHealth as jest.Mock).toHaveBeenLastCalledWith( - expect.objectContaining({ color: RISK_SEVERITY_COLOUR.Moderate }), + expect.objectContaining({ color: riskSeverityColor.Moderate }), context ); }); @@ -82,7 +94,7 @@ describe('RiskScore', () => { expect(container).toHaveTextContent(RiskSeverity.Low); expect(EuiHealth as jest.Mock).toHaveBeenLastCalledWith( - expect.objectContaining({ color: RISK_SEVERITY_COLOUR.Low }), + expect.objectContaining({ color: riskSeverityColor.Low }), context ); }); @@ -97,7 +109,7 @@ describe('RiskScore', () => { expect(container).toHaveTextContent(RiskSeverity.Unknown); expect(EuiHealth as jest.Mock).toHaveBeenLastCalledWith( - expect.objectContaining({ color: RISK_SEVERITY_COLOUR.Unknown }), + expect.objectContaining({ color: riskSeverityColor.Unknown }), context ); }); From 8dba6907ea8c16a538dc828e50af1b1e8494951a Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Mon, 16 Dec 2024 17:05:44 +0000 Subject: [PATCH 11/33] asset criticality update with new hook using euiTheme hook --- .../timeline/body/renderers/asset_criticality_level.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx index ce98498d9523f..8aac67fd78eff 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx @@ -9,7 +9,7 @@ import React, { useMemo } from 'react'; import { EuiBadge } from '@elastic/eui'; import { isString, startCase } from 'lodash/fp'; import type { CriticalityLevel } from '../../../../../../common/entity_analytics/asset_criticality/types'; -import { CRITICALITY_LEVEL_COLOR } from '../../../../../entity_analytics/components/asset_criticality'; +import { useCriticalityLevelColors } from '../../../../../entity_analytics/hooks/use_criticality_level_colors'; import { DefaultDraggable } from '../../../../../common/components/draggables'; interface Props { @@ -31,9 +31,10 @@ const AssetCriticalityLevelComponent: React.FC = ({ isDraggable, value, }) => { - const color = isString(value) ? CRITICALITY_LEVEL_COLOR[value as CriticalityLevel] : 'normal'; + const criticalityColors = useCriticalityLevelColors(); + const color = isString(value) ? criticalityColors[value as CriticalityLevel] : 'normal'; const stringValue = isString(value) ? value : ''; - + const badge = useMemo( () => ( From 81757635ec44307c772c5af88f07bb97b4aabd52 Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Mon, 16 Dec 2024 17:15:17 +0000 Subject: [PATCH 12/33] fieldColumn update with euiTheme hook --- .../user_right/utils/columns.tsx | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/utils/columns.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/utils/columns.tsx index 22387fadbaf06..6273dc70f1555 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/utils/columns.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/utils/columns.tsx @@ -7,26 +7,34 @@ import { css } from '@emotion/react'; import React from 'react'; -import { euiThemeVars } from '@kbn/ui-theme'; -import type { EuiBasicTableColumn } from '@elastic/eui'; +import { useEuiTheme, type EuiBasicTableColumn } from '@elastic/eui'; import { DefaultFieldRenderer } from '../../../../timelines/components/field_renderers/default_renderer'; import type { ManagedUsersTableColumns, ManagedUserTable } from '../types'; import * as i18n from '../translations'; import { defaultToEmptyTag } from '../../../../common/components/empty_value'; -const fieldColumn: EuiBasicTableColumn = { - name: i18n.FIELD_COLUMN_TITLE, - field: 'label', - render: (label: string, { field }) => ( + + + +const FieldColumn: React.FC<{ label: string; field: string }> = ({ label, field }) => { + const { euiTheme } = useEuiTheme(); + + return ( {label ?? field} - ), + ); +}; + +const fieldColumn: EuiBasicTableColumn = { + name: i18n.FIELD_COLUMN_TITLE, + field: 'label', + render: (label: string, { field }) => , }; export const getManagedUserTableColumns = ( From 76ae25df39df7ce8e95bfe2912234ee27ded7285 Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Mon, 16 Dec 2024 17:16:21 +0000 Subject: [PATCH 13/33] empty space cleanup --- .../public/flyout/entity_details/user_right/utils/columns.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/utils/columns.tsx b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/utils/columns.tsx index 6273dc70f1555..ffc4c2ce8ee94 100644 --- a/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/utils/columns.tsx +++ b/x-pack/plugins/security_solution/public/flyout/entity_details/user_right/utils/columns.tsx @@ -13,9 +13,6 @@ import type { ManagedUsersTableColumns, ManagedUserTable } from '../types'; import * as i18n from '../translations'; import { defaultToEmptyTag } from '../../../../common/components/empty_value'; - - - const FieldColumn: React.FC<{ label: string; field: string }> = ({ label, field }) => { const { euiTheme } = useEuiTheme(); From 6502b52cfd975bb179397c07df45537196d01541 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Mon, 16 Dec 2024 17:43:38 +0000 Subject: [PATCH 14/33] [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' --- .../timeline/body/renderers/asset_criticality_level.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx index 8aac67fd78eff..7a94577e31152 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx @@ -34,7 +34,7 @@ const AssetCriticalityLevelComponent: React.FC = ({ const criticalityColors = useCriticalityLevelColors(); const color = isString(value) ? criticalityColors[value as CriticalityLevel] : 'normal'; const stringValue = isString(value) ? value : ''; - + const badge = useMemo( () => ( From 0302b3240754bf42b8cb9f082e8ae39ec2f9b844 Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Mon, 16 Dec 2024 17:48:29 +0000 Subject: [PATCH 15/33] conditional for criticality mappings to always align correct colours regardless of availability within euicolorVis library --- .../hooks/use_criticality_level_colors.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts b/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts index d017b111796b1..17ecd60062e1a 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts @@ -10,10 +10,19 @@ import type { CriticalityLevelWithUnassigned } from '../../../common/entity_anal export const useCriticalityLevelColors = (): Record => { const { euiTheme } = useEuiTheme(); return { - extreme_impact: '#F66D64', // TODO change to euiTheme.colors.vis.euiColorVis6 when borealis is available, - high_impact: euiTheme.colors.vis.euiColorVisWarm1, - medium_impact: euiTheme.colors.vis.euiColorVis9, - low_impact: euiTheme.colors.vis.euiColorVisSuccess0, + extreme_impact: euiTheme.flags.hasVisColorAdjustment + ? '#F66D64' + : euiTheme.colors.vis.euiColorVis6, // TODO change to euiTheme.colors.vis.euiColorVis6 when borealis is available, + high_impact: euiTheme.flags.hasVisColorAdjustment + ? '#DA8B45' + : euiTheme.colors.vis.euiColorVisWarm1, + medium_impact: euiTheme.flags.hasVisColorAdjustment + ? 'D6BF57' + : euiTheme.colors.vis.euiColorVis9, + low_impact: euiTheme.flags.hasVisColorAdjustment + ? '#54B399' + : euiTheme.colors.vis.euiColorVisSuccess0, + // low_impact: euiTheme.colors.vis.euiColorVisSuccess0, unassigned: euiTheme.colors.vis.euiColorVisNeutral0, // TODO: this is a closest guess based on severity colors, change to grey20 when available }; }; From f1e30abd065077bf370f5d21a7d79b17b8192444 Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Mon, 16 Dec 2024 17:59:02 +0000 Subject: [PATCH 16/33] risk severity colors with conditional for correct mapping across both themes; ordering on criticality colors matching --- .../public/entity_analytics/common/utils.ts | 13 ++++++---- .../hooks/use_criticality_level_colors.ts | 24 +++++++++---------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts b/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts index 87488bd79efdc..ec1b567e91fb1 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts @@ -33,10 +33,15 @@ export const useRiskSeverityColors = (): { [k in RiskSeverity]: string } => { return { [RiskSeverity.Unknown]: euiTheme.colors.vis.euiColorVisNeutral0, // TODO: this is a closest guess based on severity colors, change to grey20 when available // TODO: update these with V9.0.0 severity palette colors when available / keep if the below are updated with the palette - [RiskSeverity.Low]: euiTheme.colors.vis.euiColorVisSuccess0, - [RiskSeverity.Moderate]: euiTheme.colors.vis.euiColorVis9, - [RiskSeverity.High]: euiTheme.colors.vis.euiColorVisWarm1, - [RiskSeverity.Critical]: '#F66D64', // Todo: update with V9.0.0 severity palette color when available + [RiskSeverity.Low]: euiTheme.flags.hasVisColorAdjustment + ? '#54B399' : euiTheme.colors.vis.euiColorVisSuccess0, + [RiskSeverity.Moderate]: euiTheme.flags.hasVisColorAdjustment + ? '#D6BF57' : euiTheme.colors.vis.euiColorVis9, + [RiskSeverity.High]: euiTheme.flags.hasVisColorAdjustment + ? '#DA8B45' : euiTheme.colors.vis.euiColorVisWarm1, + [RiskSeverity.Critical]: euiTheme.flags.hasVisColorAdjustment + ? '#F66D64' + : euiTheme.colors.vis.euiColorVis6, }; }; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts b/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts index 17ecd60062e1a..f836ecb35af51 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts @@ -10,19 +10,19 @@ import type { CriticalityLevelWithUnassigned } from '../../../common/entity_anal export const useCriticalityLevelColors = (): Record => { const { euiTheme } = useEuiTheme(); return { - extreme_impact: euiTheme.flags.hasVisColorAdjustment - ? '#F66D64' - : euiTheme.colors.vis.euiColorVis6, // TODO change to euiTheme.colors.vis.euiColorVis6 when borealis is available, - high_impact: euiTheme.flags.hasVisColorAdjustment - ? '#DA8B45' - : euiTheme.colors.vis.euiColorVisWarm1, - medium_impact: euiTheme.flags.hasVisColorAdjustment - ? 'D6BF57' - : euiTheme.colors.vis.euiColorVis9, - low_impact: euiTheme.flags.hasVisColorAdjustment + // low_impact: euiTheme.colors.vis.euiColorVisSuccess0, + unassigned: euiTheme.colors.vis.euiColorVisNeutral0, // TODO: this is a closest guess based on severity colors, change to grey20 when available + low_impact: euiTheme.flags.hasVisColorAdjustment ? '#54B399' : euiTheme.colors.vis.euiColorVisSuccess0, - // low_impact: euiTheme.colors.vis.euiColorVisSuccess0, - unassigned: euiTheme.colors.vis.euiColorVisNeutral0, // TODO: this is a closest guess based on severity colors, change to grey20 when available + medium_impact: euiTheme.flags.hasVisColorAdjustment + ? 'D6BF57' + : euiTheme.colors.vis.euiColorVis9, + high_impact: euiTheme.flags.hasVisColorAdjustment + ? '#DA8B45' + : euiTheme.colors.vis.euiColorVisWarm1, + extreme_impact: euiTheme.flags.hasVisColorAdjustment + ? '#F66D64' + : euiTheme.colors.vis.euiColorVis6, }; }; From dd4d06fc8bb416f8f5850caf92aa77cd779cd662 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Mon, 16 Dec 2024 18:23:23 +0000 Subject: [PATCH 17/33] [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' --- .../public/entity_analytics/common/utils.ts | 13 ++++++++----- .../hooks/use_criticality_level_colors.ts | 10 +++++----- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts b/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts index ec1b567e91fb1..aa3d195b82ef5 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/common/utils.ts @@ -34,14 +34,17 @@ export const useRiskSeverityColors = (): { [k in RiskSeverity]: string } => { [RiskSeverity.Unknown]: euiTheme.colors.vis.euiColorVisNeutral0, // TODO: this is a closest guess based on severity colors, change to grey20 when available // TODO: update these with V9.0.0 severity palette colors when available / keep if the below are updated with the palette [RiskSeverity.Low]: euiTheme.flags.hasVisColorAdjustment - ? '#54B399' : euiTheme.colors.vis.euiColorVisSuccess0, + ? '#54B399' + : euiTheme.colors.vis.euiColorVisSuccess0, [RiskSeverity.Moderate]: euiTheme.flags.hasVisColorAdjustment - ? '#D6BF57' : euiTheme.colors.vis.euiColorVis9, + ? '#D6BF57' + : euiTheme.colors.vis.euiColorVis9, [RiskSeverity.High]: euiTheme.flags.hasVisColorAdjustment - ? '#DA8B45' : euiTheme.colors.vis.euiColorVisWarm1, + ? '#DA8B45' + : euiTheme.colors.vis.euiColorVisWarm1, [RiskSeverity.Critical]: euiTheme.flags.hasVisColorAdjustment - ? '#F66D64' - : euiTheme.colors.vis.euiColorVis6, + ? '#F66D64' + : euiTheme.colors.vis.euiColorVis6, }; }; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts b/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts index f836ecb35af51..e2e7743eecabc 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts @@ -10,15 +10,15 @@ import type { CriticalityLevelWithUnassigned } from '../../../common/entity_anal export const useCriticalityLevelColors = (): Record => { const { euiTheme } = useEuiTheme(); return { - // low_impact: euiTheme.colors.vis.euiColorVisSuccess0, - unassigned: euiTheme.colors.vis.euiColorVisNeutral0, // TODO: this is a closest guess based on severity colors, change to grey20 when available - low_impact: euiTheme.flags.hasVisColorAdjustment + // low_impact: euiTheme.colors.vis.euiColorVisSuccess0, + unassigned: euiTheme.colors.vis.euiColorVisNeutral0, // TODO: this is a closest guess based on severity colors, change to grey20 when available + low_impact: euiTheme.flags.hasVisColorAdjustment ? '#54B399' : euiTheme.colors.vis.euiColorVisSuccess0, - medium_impact: euiTheme.flags.hasVisColorAdjustment + medium_impact: euiTheme.flags.hasVisColorAdjustment ? 'D6BF57' : euiTheme.colors.vis.euiColorVis9, - high_impact: euiTheme.flags.hasVisColorAdjustment + high_impact: euiTheme.flags.hasVisColorAdjustment ? '#DA8B45' : euiTheme.colors.vis.euiColorVisWarm1, extreme_impact: euiTheme.flags.hasVisColorAdjustment From da530ac00f82fc861a4590a6e6a2b0ad131d1a24 Mon Sep 17 00:00:00 2001 From: Mark Hopkin Date: Thu, 19 Dec 2024 16:44:29 +0000 Subject: [PATCH 18/33] fix types --- .../lens_attributes/risk_score_summary.test.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.test.ts index ac7028fa90280..f98c96f534cf4 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.test.ts @@ -27,6 +27,14 @@ jest.mock('uuid', () => ({ v4: jest.fn().mockReturnValue('2cc5663b-f062-43f8-8688-fc8166c2ca8e'), })); +const riskColors = { + [RiskSeverity.Critical]: '#FF0000', + [RiskSeverity.High]: '#FFA500', + [RiskSeverity.Moderate]: '#FFD700', + [RiskSeverity.Low]: '#008000', + [RiskSeverity.Unknown]: '#808080', +}; + describe('getRiskScoreSummaryAttributes', () => { it('should render', () => { const { result } = renderHook( @@ -37,6 +45,7 @@ describe('getRiskScoreSummaryAttributes', () => { query: `user.name: test.user`, spaceId: 'default', riskEntity: RiskScoreEntity.user, + riskColors, }), }), { wrapper } @@ -54,6 +63,7 @@ describe('getRiskScoreSummaryAttributes', () => { query: `user.name: test.user`, spaceId: 'default', riskEntity: RiskScoreEntity.user, + riskColors, }), }), { wrapper } @@ -73,7 +83,9 @@ describe('getRiskScoreSummaryAttributes', () => { query, spaceId: 'default', riskEntity: RiskScoreEntity.user, + riskColors, }), + applyGlobalQueriesAndFilters: false, }), { wrapper } From 404c2abd496333bc85e5ac7e6c112729cae880b2 Mon Sep 17 00:00:00 2001 From: Mark Hopkin Date: Thu, 19 Dec 2024 16:56:52 +0000 Subject: [PATCH 19/33] some PR feedback --- .../security_solution/public/entity_analytics/common/utils.ts | 2 +- .../components/validation_step.tsx | 2 +- .../components/risk_summary_flyout/risk_summary.tsx | 2 +- .../entity_analytics/components/severity/common/index.tsx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts index aa3d195b82ef5..13a2f20dd9dee 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts @@ -43,7 +43,7 @@ export const useRiskSeverityColors = (): { [k in RiskSeverity]: string } => { ? '#DA8B45' : euiTheme.colors.vis.euiColorVisWarm1, [RiskSeverity.Critical]: euiTheme.flags.hasVisColorAdjustment - ? '#F66D64' + ? '#E7664C' : euiTheme.colors.vis.euiColorVis6, }; }; diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.tsx index 821782667f8c8..f12db29f7fac3 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/validation_step.tsx @@ -100,7 +100,7 @@ export const AssetCriticalityValidationStep: React.FC {validLines.text} diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx index 2622fb57901a4..737f8881fab6f 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx @@ -247,7 +247,7 @@ const FlyoutRiskSummaryComponent = ({ css={css` position: absolute; right: 0; - top: -${euiTheme.size}; + top: -${euiTheme.size.base}; `} > Date: Mon, 6 Jan 2025 13:53:12 +0000 Subject: [PATCH 20/33] euiThemeSize reverted back to small from xs, typo previously. --- .../entity_analytics/components/severity/common/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx index 4a2bd9ccdd9c7..befdb6a4901df 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx @@ -21,7 +21,7 @@ const RiskBadge = styled.div<{ }>` ${({ theme, $severity, $hideBackgroundColor }) => css` width: fit-content; - padding-right: ${theme.eui.euiSizeXS}; + padding-right: ${theme.eui.euiSizeS}; padding-left: ${theme.eui.euiSizeXS}; ${($severity === 'Critical' || $severity === 'High') && From 4b89342bf45a2abc164ecb29cd14a3b33dfc1700 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Mon, 6 Jan 2025 14:03:50 +0000 Subject: [PATCH 21/33] [CI] Auto-commit changed files from 'node scripts/yarn_deduplicate' --- NOTICE.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NOTICE.txt b/NOTICE.txt index 9cd38e6773d88..312326d7e41a9 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -1,5 +1,5 @@ Kibana source code with Kibana X-Pack source code -Copyright 2012-2024 Elasticsearch B.V. +Copyright 2012-2025 Elasticsearch B.V. --- Adapted from remote-web-worker, which was available under a "MIT" license. From 17100c2fccac26ddeb6dbf88d26a6415ae926d87 Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Tue, 7 Jan 2025 12:25:14 +0000 Subject: [PATCH 22/33] riskBadge color fix --- .../entity_analytics/components/severity/common/index.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx index befdb6a4901df..76e4ab13982fe 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx @@ -19,7 +19,7 @@ const RiskBadge = styled.div<{ $severity: RiskSeverity; $hideBackgroundColor: boolean; }>` - ${({ theme, $severity, $hideBackgroundColor }) => css` + ${({ theme, color, $severity, $hideBackgroundColor }) => css` width: fit-content; padding-right: ${theme.eui.euiSizeS}; padding-left: ${theme.eui.euiSizeXS}; @@ -27,7 +27,7 @@ const RiskBadge = styled.div<{ ${($severity === 'Critical' || $severity === 'High') && !$hideBackgroundColor && css` - background-color: ${euiTheme.colors.backgroundLightDanger}; + background-color: ${color}; border-radius: 999px; // pill shaped `}; `} @@ -75,7 +75,7 @@ const RiskScoreBadge: React.FC<{ const riskColors = useRiskSeverityColors(); return ( Date: Tue, 7 Jan 2025 17:36:51 +0000 Subject: [PATCH 23/33] revert criticality level colors hook; will be updated with shared hook for security --- .../asset_criticality_badge.tsx | 14 ++++++++-- .../hooks/use_criticality_level_colors.ts | 28 ------------------- .../renderers/asset_criticality_level.tsx | 5 ++-- 3 files changed, 13 insertions(+), 34 deletions(-) delete mode 100644 x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_badge.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_badge.tsx index befac8537b94a..4e8c7329bdd31 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_badge.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality/asset_criticality_badge.tsx @@ -6,9 +6,18 @@ */ import React from 'react'; import { EuiHealth } from '@elastic/eui'; +import { euiLightVars } from '@kbn/ui-theme'; import { CRITICALITY_LEVEL_TITLE } from './translations'; import type { CriticalityLevelWithUnassigned } from '../../../../common/entity_analytics/asset_criticality/types'; -import { useCriticalityLevelColors } from '../../hooks/use_criticality_level_colors'; + +// below will be updated with new severity color palette & shared security wide severity colors hook creation +export const CRITICALITY_LEVEL_COLOR: Record = { + extreme_impact: '#E7664C', + high_impact: '#DA8B45', + medium_impact: 'D6BF57', + low_impact: '#54B399', + unassigned: euiLightVars.euiColorMediumShade, +}; export const AssetCriticalityBadge: React.FC<{ criticalityLevel?: CriticalityLevelWithUnassigned; @@ -21,11 +30,10 @@ export const AssetCriticalityBadge: React.FC<{ dataTestSubj = 'asset-criticality-badge', className, }) => { - const criticalityColors = useCriticalityLevelColors(); return ( diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts deleted file mode 100644 index e2e7743eecabc..0000000000000 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/hooks/use_criticality_level_colors.ts +++ /dev/null @@ -1,28 +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 { useEuiTheme } from '@elastic/eui'; -import type { CriticalityLevelWithUnassigned } from '../../../common/entity_analytics/asset_criticality/types'; -// TODO: update these colors once severity color palette is available -export const useCriticalityLevelColors = (): Record => { - const { euiTheme } = useEuiTheme(); - return { - // low_impact: euiTheme.colors.vis.euiColorVisSuccess0, - unassigned: euiTheme.colors.vis.euiColorVisNeutral0, // TODO: this is a closest guess based on severity colors, change to grey20 when available - low_impact: euiTheme.flags.hasVisColorAdjustment - ? '#54B399' - : euiTheme.colors.vis.euiColorVisSuccess0, - medium_impact: euiTheme.flags.hasVisColorAdjustment - ? 'D6BF57' - : euiTheme.colors.vis.euiColorVis9, - high_impact: euiTheme.flags.hasVisColorAdjustment - ? '#DA8B45' - : euiTheme.colors.vis.euiColorVisWarm1, - extreme_impact: euiTheme.flags.hasVisColorAdjustment - ? '#F66D64' - : euiTheme.colors.vis.euiColorVis6, - }; -}; diff --git a/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx index 7a94577e31152..ce98498d9523f 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/timelines/components/timeline/body/renderers/asset_criticality_level.tsx @@ -9,7 +9,7 @@ import React, { useMemo } from 'react'; import { EuiBadge } from '@elastic/eui'; import { isString, startCase } from 'lodash/fp'; import type { CriticalityLevel } from '../../../../../../common/entity_analytics/asset_criticality/types'; -import { useCriticalityLevelColors } from '../../../../../entity_analytics/hooks/use_criticality_level_colors'; +import { CRITICALITY_LEVEL_COLOR } from '../../../../../entity_analytics/components/asset_criticality'; import { DefaultDraggable } from '../../../../../common/components/draggables'; interface Props { @@ -31,8 +31,7 @@ const AssetCriticalityLevelComponent: React.FC = ({ isDraggable, value, }) => { - const criticalityColors = useCriticalityLevelColors(); - const color = isString(value) ? criticalityColors[value as CriticalityLevel] : 'normal'; + const color = isString(value) ? CRITICALITY_LEVEL_COLOR[value as CriticalityLevel] : 'normal'; const stringValue = isString(value) ? value : ''; const badge = useMemo( From 0990008265fac7dd12a12e030fd31807104e030a Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Tue, 7 Jan 2025 18:26:43 +0000 Subject: [PATCH 24/33] update correct color palette --- .../public/entity_analytics/common/utils.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts index 215371c2452c9..21575c77bb003 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts @@ -35,16 +35,16 @@ export const useRiskSeverityColors = (): { [k in RiskSeverity]: string } => { // TODO: update these with V9.0.0 severity palette colors when available / keep if the below are updated with the palette [RiskSeverity.Low]: euiTheme.flags.hasVisColorAdjustment ? '#54B399' - : euiTheme.colors.vis.euiColorVisSuccess0, + : euiTheme.colors.vis.euiColorVis0, [RiskSeverity.Moderate]: euiTheme.flags.hasVisColorAdjustment ? '#D6BF57' - : euiTheme.colors.vis.euiColorVis9, + : euiTheme.colors.vis.euiColorVis5, [RiskSeverity.High]: euiTheme.flags.hasVisColorAdjustment ? '#DA8B45' - : euiTheme.colors.vis.euiColorVisWarm1, + : euiTheme.colors.vis.euiColorVis7, [RiskSeverity.Critical]: euiTheme.flags.hasVisColorAdjustment ? '#E7664C' - : euiTheme.colors.vis.euiColorVis6, + : euiTheme.colors.vis.euiColorVis9, }; }; From 8759c94417d250f24e362e755c61aee3abb4ae98 Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Wed, 8 Jan 2025 07:44:56 +0000 Subject: [PATCH 25/33] revert colors in test for severity colors --- .../lens_attributes/risk_score_summary.test.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.test.ts index dd41075819b5e..f1fc64157143d 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.test.ts @@ -28,11 +28,11 @@ jest.mock('uuid', () => ({ })); const riskColors = { - [RiskSeverity.Critical]: '#FF0000', - [RiskSeverity.High]: '#FFA500', - [RiskSeverity.Moderate]: '#FFD700', - [RiskSeverity.Low]: '#008000', - [RiskSeverity.Unknown]: '#808080', + [RiskSeverity.Critical]: '#E7664C', + [RiskSeverity.High]: '#DA8B45', + [RiskSeverity.Moderate]: '#D6BF57', + [RiskSeverity.Low]: '#54B399', + [RiskSeverity.Unknown]: '#98a2b3', }; describe('getRiskScoreSummaryAttributes', () => { From 9843d7ba7cacb97505ed46f12fcebde58fad107b Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Wed, 15 Jan 2025 10:33:28 +0000 Subject: [PATCH 26/33] risk colors updated for borealis and amsterdam in interim of shared hook --- .../public/entity_analytics/common/utils.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts index 21575c77bb003..92d04ad5575cf 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts @@ -34,17 +34,17 @@ export const useRiskSeverityColors = (): { [k in RiskSeverity]: string } => { [RiskSeverity.Unknown]: euiTheme.colors.vis.euiColorVisNeutral0, // TODO: this is a closest guess based on severity colors, change to grey20 when available // TODO: update these with V9.0.0 severity palette colors when available / keep if the below are updated with the palette [RiskSeverity.Low]: euiTheme.flags.hasVisColorAdjustment - ? '#54B399' - : euiTheme.colors.vis.euiColorVis0, + ? euiTheme.colors.vis.euiColorVis0 // amsterdam palette + : euiTheme.colors.vis.euiColorVisSuccess0, // borealis palette [RiskSeverity.Moderate]: euiTheme.flags.hasVisColorAdjustment - ? '#D6BF57' - : euiTheme.colors.vis.euiColorVis5, + ? euiTheme.colors.vis.euiColorVis5 // amsterdam palette + : euiTheme.colors.vis.euiColorSeverity7, // borealis palette [RiskSeverity.High]: euiTheme.flags.hasVisColorAdjustment - ? '#DA8B45' - : euiTheme.colors.vis.euiColorVis7, + ? euiTheme.colors.vis.euiColorVis7 // amsterdam palette + : euiTheme.colors.vis.euiColorSeverity10, // borealis palette [RiskSeverity.Critical]: euiTheme.flags.hasVisColorAdjustment - ? '#E7664C' - : euiTheme.colors.vis.euiColorVis9, + ? euiTheme.colors.vis.euiColorVis9 // amsterdam palette + : euiTheme.colors.vis.euiColorSeverity14, // borealis palette }; }; From 479613522c16c02baee97e91b301b174a52e92d1 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Wed, 15 Jan 2025 11:42:24 +0000 Subject: [PATCH 27/33] [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' --- .../components/file_picker_step.tsx | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx index e47c285fc0800..d7dd843cac153 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx @@ -21,7 +21,6 @@ import { css } from '@emotion/css'; import React from 'react'; import { FormattedMessage, useI18n } from '@kbn/i18n-react'; -import { euiThemeVars } from '@kbn/ui-theme'; import { useAssetCriticalityEntityTypes } from '../../../hooks/use_enabled_entity_types'; import { EntityTypeToIdentifierField } from '../../../../../common/entity_analytics/types'; @@ -39,11 +38,11 @@ interface AssetCriticalityFilePickerStepProps { } const listStyle = css` - list-style-type: disc; - margin-bottom: ${euiTheme.size.l}; - margin-left: ${euiTheme.size.l}; - line-height: ${useEuiFontSize('s').lineHeight}; - `; + list-style-type: disc; + margin-bottom: ${euiTheme.size.l}; + margin-left: ${euiTheme.size.l}; + line-height: ${useEuiFontSize('s').lineHeight}; +`; const sampleCSVContent = `user,user-001,low_impact\nuser,user-002,medium_impact\nhost,host-001,extreme_impact`; From 2b82ee5fe5bd20d857caa8caa64db211cb531ee0 Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Mon, 20 Jan 2025 15:35:14 +0000 Subject: [PATCH 28/33] fixing a couple of errors --- .../components/file_picker_step.tsx | 14 +++++++------- .../risk_summary_flyout/risk_summary.tsx | 3 +-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx index d7dd843cac153..9663fc242be51 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/file_picker_step.tsx @@ -37,13 +37,6 @@ interface AssetCriticalityFilePickerStepProps { errorMessage?: string; } -const listStyle = css` - list-style-type: disc; - margin-bottom: ${euiTheme.size.l}; - margin-left: ${euiTheme.size.l}; - line-height: ${useEuiFontSize('s').lineHeight}; -`; - const sampleCSVContent = `user,user-001,low_impact\nuser,user-002,medium_impact\nhost,host-001,extreme_impact`; export const AssetCriticalityFilePickerStep: React.FC = @@ -53,6 +46,13 @@ export const AssetCriticalityFilePickerStep: React.FC i18n diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx index c8ff74853cf6b..ee72afb6bbfec 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx @@ -83,8 +83,7 @@ const FlyoutRiskSummaryComponent = ({ riskColors, riskEntity: entityType, }); - }, [entityData?.name, entityData?.risk?.calculated_level, entityType riskColors]); - + }, [entityData?.name, entityData?.risk?.calculated_level, entityType, riskColors]); const xsFontSize = useEuiFontSize('xxs').fontSize; const rows = useMemo(() => getItems(entityData), [entityData]); From 9607bb0efaae60bfb69f46616e139066cc55b930 Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Thu, 23 Jan 2025 13:06:28 +0000 Subject: [PATCH 29/33] Update Severity colors in utils to use previous colors matching Amsterdam theme - Borealis old colors --- .../public/entity_analytics/common/utils.ts | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts index 92d04ad5575cf..9d73759683aa2 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts @@ -29,22 +29,23 @@ export const RISK_SEVERITY_COLOUR: { [k in RiskSeverity]: string } = { export const useRiskSeverityColors = (): { [k in RiskSeverity]: string } => { const { euiTheme } = useEuiTheme(); + const isAmsterdam = euiTheme.flags.hasVisColorAdjustment; return { [RiskSeverity.Unknown]: euiTheme.colors.vis.euiColorVisNeutral0, // TODO: this is a closest guess based on severity colors, change to grey20 when available // TODO: update these with V9.0.0 severity palette colors when available / keep if the below are updated with the palette - [RiskSeverity.Low]: euiTheme.flags.hasVisColorAdjustment - ? euiTheme.colors.vis.euiColorVis0 // amsterdam palette - : euiTheme.colors.vis.euiColorVisSuccess0, // borealis palette - [RiskSeverity.Moderate]: euiTheme.flags.hasVisColorAdjustment - ? euiTheme.colors.vis.euiColorVis5 // amsterdam palette - : euiTheme.colors.vis.euiColorSeverity7, // borealis palette - [RiskSeverity.High]: euiTheme.flags.hasVisColorAdjustment - ? euiTheme.colors.vis.euiColorVis7 // amsterdam palette - : euiTheme.colors.vis.euiColorSeverity10, // borealis palette - [RiskSeverity.Critical]: euiTheme.flags.hasVisColorAdjustment - ? euiTheme.colors.vis.euiColorVis9 // amsterdam palette - : euiTheme.colors.vis.euiColorSeverity14, // borealis palette + [RiskSeverity.Low]: isAmsterdam + ? euiTheme.colors.vis.euiColorVis0 + : euiTheme.colors.vis.euiColorVis0, + [RiskSeverity.Moderate]: isAmsterdam + ? euiTheme.colors.vis.euiColorVis5 + : euiTheme.colors.vis.euiColorVis9, + [RiskSeverity.High]: isAmsterdam + ? euiTheme.colors.vis.euiColorVis7 + : euiTheme.colors.vis.euiColorVis8, + [RiskSeverity.Critical]: isAmsterdam + ? euiTheme.colors.vis.euiColorVis9 + : euiTheme.colors.vis.euiColorVis6, }; }; From 6c7b3f02ccbef7cfbcba5a4db58bbae26dd11840 Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Fri, 24 Jan 2025 16:57:20 +0000 Subject: [PATCH 30/33] revert risk severity colors palette changes; blocked until security severity colour palette is agreed --- .../public/entity_analytics/common/utils.ts | 30 ++++--------------- .../risk_score_donut_chart/index.tsx | 9 +++--- .../use_risk_donut_chart_data.ts | 12 ++++---- .../risk_summary_flyout/risk_summary.tsx | 9 +++--- .../components/severity/common/index.test.tsx | 26 +++++----------- .../components/severity/common/index.tsx | 7 +++-- .../components/severity/severity_badges.tsx | 7 +++-- .../components/severity/severity_bar.tsx | 11 +++---- .../risk_score_summary.test.ts | 11 ------- .../lens_attributes/risk_score_summary.ts | 14 +++++---- 10 files changed, 49 insertions(+), 87 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts index 9d73759683aa2..8c8ee528a50e7 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/common/utils.ts @@ -5,8 +5,6 @@ * 2.0. */ -import { euiLightVars } from '@kbn/ui-theme'; -import { useEuiTheme } from '@elastic/eui'; import { RiskSeverity } from '../../../common/search_strategy'; import { SEVERITY_COLOR } from '../../overview/components/detection_response/utils'; export { RISK_LEVEL_RANGES as RISK_SCORE_RANGES } from '../../../common/entity_analytics/risk_engine'; @@ -19,36 +17,18 @@ export const SEVERITY_UI_SORT_ORDER = [ RiskSeverity.Critical, ]; +// Migration to tokens from EUI during the Borealis theme migration is blocked until new severity palette is agreed upon. +// We keep using hardcoded colors until security severity palette is ready https://github.com/elastic/kibana/issues/203387 +// TODO: Borealis migration - move from hardcoded values to severity palette, which should instead use shared hook across security: +// https://github.com/elastic/security-team/issues/11516 hook - https://github.com/elastic/kibana/pull/206276 export const RISK_SEVERITY_COLOUR: { [k in RiskSeverity]: string } = { - [RiskSeverity.Unknown]: euiLightVars.euiColorMediumShade, + [RiskSeverity.Unknown]: '#aaa', // euiThemeVars no longer in use. Hard coded temporarily, see above. [RiskSeverity.Low]: SEVERITY_COLOR.low, [RiskSeverity.Moderate]: SEVERITY_COLOR.medium, [RiskSeverity.High]: SEVERITY_COLOR.high, [RiskSeverity.Critical]: SEVERITY_COLOR.critical, }; -export const useRiskSeverityColors = (): { [k in RiskSeverity]: string } => { - const { euiTheme } = useEuiTheme(); - const isAmsterdam = euiTheme.flags.hasVisColorAdjustment; - - return { - [RiskSeverity.Unknown]: euiTheme.colors.vis.euiColorVisNeutral0, // TODO: this is a closest guess based on severity colors, change to grey20 when available - // TODO: update these with V9.0.0 severity palette colors when available / keep if the below are updated with the palette - [RiskSeverity.Low]: isAmsterdam - ? euiTheme.colors.vis.euiColorVis0 - : euiTheme.colors.vis.euiColorVis0, - [RiskSeverity.Moderate]: isAmsterdam - ? euiTheme.colors.vis.euiColorVis5 - : euiTheme.colors.vis.euiColorVis9, - [RiskSeverity.High]: isAmsterdam - ? euiTheme.colors.vis.euiColorVis7 - : euiTheme.colors.vis.euiColorVis8, - [RiskSeverity.Critical]: isAmsterdam - ? euiTheme.colors.vis.euiColorVis9 - : euiTheme.colors.vis.euiColorVis6, - }; -}; - type SnakeToCamelCaseString = S extends `${infer T}_${infer U}` ? `${T}${Capitalize>}` : S; diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.tsx index f0aa8ef3c82ff..bc4a704b48655 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/index.tsx @@ -10,7 +10,7 @@ import React from 'react'; import styled from 'styled-components'; import { i18n } from '@kbn/i18n'; import { ChartLabel } from '../../../overview/components/detection_response/alerts_by_status/chart_label'; -import { useRiskSeverityColors } from '../../common/utils'; +import { RISK_SEVERITY_COLOUR } from '../../common/utils'; import type { SeverityCount } from '../severity/types'; import { useRiskDonutChartData } from './use_risk_donut_chart_data'; import type { FillColor } from '../../../common/components/charts/donutchart'; @@ -36,10 +36,11 @@ interface RiskScoreDonutChartProps { export const RiskScoreDonutChart = ({ severityCount }: RiskScoreDonutChartProps) => { const [donutChartData, legendItems, total] = useRiskDonutChartData(severityCount); - const riskColors = useRiskSeverityColors(); + // TODO: Borealis theme migration, when severity palette agreed, update RISK_SEVERITY_COLOUR to use shared hook from security colors: + // https://github.com/elastic/security-team/issues/11516 hook - https://github.com/elastic/kibana/pull/206276 const fillColorValue: FillColor = (dataName) => { - return Object.hasOwn(riskColors, dataName) - ? riskColors[dataName as RiskSeverity] + return Object.hasOwn(RISK_SEVERITY_COLOUR, dataName) + ? RISK_SEVERITY_COLOUR[dataName as RiskSeverity] : emptyDonutColor; }; return ( diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.ts index 6190716a9815d..fda8c8f3cd2d3 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_score_donut_chart/use_risk_donut_chart_data.ts @@ -6,7 +6,7 @@ */ import { sum } from 'lodash/fp'; import { useMemo } from 'react'; -import { useRiskSeverityColors } from '../../common/utils'; +import { RISK_SEVERITY_COLOUR } from '../../common/utils'; import type { LegendItem } from '../../../common/components/charts/legend_item'; import type { SeverityCount } from '../severity/types'; import type { DonutChartProps } from '../../../common/components/charts/donutchart'; @@ -17,23 +17,23 @@ const legendField = 'kibana.alert.severity'; export const useRiskDonutChartData = ( severityCount: SeverityCount ): [DonutChartProps['data'], LegendItem[], number] => { - const riskSeverityColor = useRiskSeverityColors(); const [donutChartData, legendItems, total] = useMemo(() => { - const severities = Object.keys(riskSeverityColor) as RiskSeverity[]; - + const severities = Object.keys(RISK_SEVERITY_COLOUR) as RiskSeverity[]; + // TODO: Borealis theme migration, when severity palette agreed, update RISK_SEVERITY_COLOUR to use shared hook from security colors: + // https://github.com/elastic/security-team/issues/11516 hook - https://github.com/elastic/kibana/pull/206276 return [ severities.map((status) => ({ key: status, value: severityCount[status], })), severities.map((status) => ({ - color: riskSeverityColor[status], + color: RISK_SEVERITY_COLOUR[status], field: legendField, value: status, })), sum(Object.values(severityCount)), ]; - }, [riskSeverityColor, severityCount]); + }, [severityCount]); return [donutChartData, legendItems, total]; }; diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx index ee72afb6bbfec..bfa9de67cc9d2 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx @@ -45,7 +45,6 @@ import { SUMMARY_TABLE_MIN_WIDTH, } from './common'; import { EntityEventTypes } from '../../../common/lib/telemetry'; -import { useRiskSeverityColors } from '../../common/utils'; export interface RiskSummaryProps { riskScoreData: RiskScoreState; @@ -71,7 +70,6 @@ const FlyoutRiskSummaryComponent = ({ const riskData = data && data.length > 0 ? data[0] : undefined; const entityData = getEntityData(entityType, riskData); const { euiTheme } = useEuiTheme(); - const riskColors = useRiskSeverityColors(); const lensAttributes = useMemo(() => { const entityName = entityData?.name ?? ''; const fieldName = EntityTypeToIdentifierField[entityType]; @@ -80,10 +78,11 @@ const FlyoutRiskSummaryComponent = ({ severity: entityData?.risk?.calculated_level, query: `${fieldName}: ${entityName}`, spaceId: 'default', - riskColors, - riskEntity: entityType, + riskEntity: entityType, + // TODO: add in riskColors when severity palette agreed on. + // https://github.com/elastic/security-team/issues/11516 hook - https://github.com/elastic/kibana/pull/206276 }); - }, [entityData?.name, entityData?.risk?.calculated_level, entityType, riskColors]); + }, [entityData?.name, entityData?.risk?.calculated_level, entityType]); const xsFontSize = useEuiFontSize('xxs').fontSize; const rows = useMemo(() => getItems(entityData), [entityData]); diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.test.tsx index daed7b900df7d..d53fb004295af 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.test.tsx @@ -15,7 +15,7 @@ import { EuiHealth } from '@elastic/eui'; import { RiskSeverity } from '../../../../../common/search_strategy'; import { RiskScoreLevel } from '.'; -import { useRiskSeverityColors } from '../../../common/utils'; +import { SEVERITY_COLOR } from '../../../../overview/components/detection_response/utils'; jest.mock('@elastic/eui', () => { const original = jest.requireActual('@elastic/eui'); @@ -26,19 +26,6 @@ jest.mock('@elastic/eui', () => { }); describe('RiskScore', () => { - let riskSeverityColor: ReturnType; - const HookWrapper: React.FC = () => { - riskSeverityColor = useRiskSeverityColors(); - return null; - }; - - beforeAll(() => { - render( - - - - ); - }); const context = {}; it('renders critical severity risk score', () => { const { container } = render( @@ -49,7 +36,7 @@ describe('RiskScore', () => { expect(container).toHaveTextContent(RiskSeverity.Critical); expect(EuiHealth as jest.Mock).toHaveBeenLastCalledWith( - expect.objectContaining({ color: riskSeverityColor.Critical }), + expect.objectContaining({ color: SEVERITY_COLOR.critical }), {} ); }); @@ -64,7 +51,7 @@ describe('RiskScore', () => { expect(container).toHaveTextContent(RiskSeverity.High); expect(EuiHealth as jest.Mock).toHaveBeenLastCalledWith( - expect.objectContaining({ color: riskSeverityColor.High }), + expect.objectContaining({ color: SEVERITY_COLOR.high }), context ); }); @@ -79,7 +66,7 @@ describe('RiskScore', () => { expect(container).toHaveTextContent(RiskSeverity.Moderate); expect(EuiHealth as jest.Mock).toHaveBeenLastCalledWith( - expect.objectContaining({ color: riskSeverityColor.Moderate }), + expect.objectContaining({ color: SEVERITY_COLOR.medium }), context ); }); @@ -94,7 +81,7 @@ describe('RiskScore', () => { expect(container).toHaveTextContent(RiskSeverity.Low); expect(EuiHealth as jest.Mock).toHaveBeenLastCalledWith( - expect.objectContaining({ color: riskSeverityColor.Low }), + expect.objectContaining({ color: SEVERITY_COLOR.low }), context ); }); @@ -109,7 +96,8 @@ describe('RiskScore', () => { expect(container).toHaveTextContent(RiskSeverity.Unknown); expect(EuiHealth as jest.Mock).toHaveBeenLastCalledWith( - expect.objectContaining({ color: riskSeverityColor.Unknown }), + expect.objectContaining({ color: '#aaa' }), // TODO: update with new severity palette agreement. + // https://github.com/elastic/security-team/issues/11516 hook - https://github.com/elastic/kibana/pull/206276 context ); }); diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx index 76e4ab13982fe..c539adb7b771d 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx @@ -11,7 +11,7 @@ import { EuiHealth, EuiTextColor, useEuiTheme } from '@elastic/eui'; import styled, { css } from 'styled-components'; -import { useRiskSeverityColors } from '../../../common/utils'; +import { RISK_SEVERITY_COLOUR } from '../../../common/utils'; import { HoverPopover } from '../../../../common/components/hover_popover'; import type { RiskSeverity } from '../../../../../common/search_strategy'; @@ -72,7 +72,8 @@ const RiskScoreBadge: React.FC<{ ['data-test-subj']?: string; }> = React.memo(({ severity, hideBackgroundColor = false, 'data-test-subj': dataTestSubj }) => { const { euiTheme } = useEuiTheme(); - const riskColors = useRiskSeverityColors(); + // TODO: use riskSeverity hook when palette agreed. + // https://github.com/elastic/security-team/issues/11516 hook - https://github.com/elastic/kibana/pull/206276 return ( - + {severity} diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_badges.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_badges.tsx index 0abe7098ec766..a1a83d8c4d40a 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_badges.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_badges.tsx @@ -7,7 +7,7 @@ import { EuiFlexGroup, EuiNotificationBadge, EuiFlexItem } from '@elastic/eui'; import React from 'react'; -import { useRiskSeverityColors } from '../../common/utils'; +import { RISK_SEVERITY_COLOUR } from '../../common/utils'; import type { RiskSeverity } from '../../../../common/search_strategy'; import { RiskScoreLevel } from './common'; import type { SeverityCount } from './types'; @@ -15,7 +15,8 @@ import type { SeverityCount } from './types'; export const SeverityBadges: React.FC<{ severityCount: SeverityCount; }> = React.memo(({ severityCount }) => { - const riskColors = useRiskSeverityColors(); + // TODO: use riskSeverity hook when palette agreed. + // https://github.com/elastic/security-team/issues/11516 hook - https://github.com/elastic/kibana/pull/206276 return ( - {(Object.keys(riskColors) as RiskSeverity[]).map((status) => ( + {(Object.keys(RISK_SEVERITY_COLOUR) as RiskSeverity[]).map((status) => ( diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_bar.tsx index 7c5e0b254047a..e643407cde5f4 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_bar.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/severity_bar.tsx @@ -9,7 +9,7 @@ import styled from 'styled-components'; import { EuiColorPaletteDisplay } from '@elastic/eui'; import React, { useMemo } from 'react'; -import { useRiskSeverityColors } from '../../common/utils'; +import { RISK_SEVERITY_COLOUR } from '../../common/utils'; import type { RiskSeverity } from '../../../../common/search_strategy'; import type { SeverityCount } from './types'; @@ -31,22 +31,23 @@ type PalletteArray = PalletteObject[]; export const SeverityBar: React.FC<{ severityCount: SeverityCount; }> = ({ severityCount }) => { - const riskSeverityColor = useRiskSeverityColors(); + // TODO: use riskSeverity hook when palette agreed. + // https://github.com/elastic/security-team/issues/11516 hook - https://github.com/elastic/kibana/pull/206276 const palette = useMemo( () => - (Object.keys(riskSeverityColor) as RiskSeverity[]).reduce( + (Object.keys(RISK_SEVERITY_COLOUR) as RiskSeverity[]).reduce( (acc: PalletteArray, status: RiskSeverity) => { const previousStop = acc.length > 0 ? acc[acc.length - 1].stop : 0; const newEntry: PalletteObject = { stop: previousStop + (severityCount[status] || 0), - color: riskSeverityColor[status], + color: RISK_SEVERITY_COLOUR[status], }; acc.push(newEntry); return acc; }, [] as PalletteArray ), - [severityCount, riskSeverityColor] + [severityCount] ); return ( ({ v4: jest.fn().mockReturnValue('2cc5663b-f062-43f8-8688-fc8166c2ca8e'), })); -const riskColors = { - [RiskSeverity.Critical]: '#E7664C', - [RiskSeverity.High]: '#DA8B45', - [RiskSeverity.Moderate]: '#D6BF57', - [RiskSeverity.Low]: '#54B399', - [RiskSeverity.Unknown]: '#98a2b3', -}; - describe('getRiskScoreSummaryAttributes', () => { it('should render', () => { const { result } = renderHook( @@ -44,7 +36,6 @@ describe('getRiskScoreSummaryAttributes', () => { severity: RiskSeverity.Low, query: `user.name: test.user`, spaceId: 'default', - riskColors, riskEntity: EntityType.user, }), }), @@ -62,7 +53,6 @@ describe('getRiskScoreSummaryAttributes', () => { severity: RiskSeverity.Low, query: `user.name: test.user`, spaceId: 'default', - riskColors, riskEntity: EntityType.user, }), }), @@ -82,7 +72,6 @@ describe('getRiskScoreSummaryAttributes', () => { severity: RiskSeverity.Low, query, spaceId: 'default', - riskColors, riskEntity: EntityType.user, }), diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.ts index 554685eccbdbb..44108c683c77a 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/risk_score_summary.ts @@ -9,7 +9,7 @@ import { v4 as uuidv4 } from 'uuid'; import type { LensAttributes } from '@kbn/lens-embeddable-utils'; import capitalize from 'lodash/capitalize'; -import { SEVERITY_UI_SORT_ORDER, RISK_SCORE_RANGES } from '../common/utils'; +import { SEVERITY_UI_SORT_ORDER, RISK_SCORE_RANGES, RISK_SEVERITY_COLOUR } from '../common/utils'; import type { EntityType } from '../../../common/entity_analytics/types'; import type { RiskSeverity } from '../../../common/search_strategy'; import { EntityTypeToScoreField, RiskScoreFields } from '../../../common/search_strategy'; @@ -18,18 +18,20 @@ interface GetRiskScoreSummaryAttributesProps { query?: string; spaceId?: string; severity?: RiskSeverity; - riskColors: { [k in RiskSeverity]: string }; + // TODO: add riskColors in when severityPalette available + // riskColors: { [k in RiskSeverity]: string }; riskEntity: EntityType; } export const getRiskScoreSummaryAttributes: ( props: GetRiskScoreSummaryAttributesProps -) => LensAttributes = ({ spaceId, query, severity, riskEntity, riskColors }) => { + // TODO: may need to pass riskColors in props, here, when severity palette agreed and hook created + // https://github.com/elastic/security-team/issues/11516 hook - https://github.com/elastic/kibana/pull/206276 +) => LensAttributes = ({ spaceId, query, severity, riskEntity }) => { const layerIds = [uuidv4(), uuidv4()]; const internalReferenceId = uuidv4(); const columnIds = [uuidv4(), uuidv4(), uuidv4()]; const sourceField = EntityTypeToScoreField[riskEntity]; - return { title: 'Risk score summary', description: '', @@ -55,11 +57,11 @@ export const getRiskScoreSummaryAttributes: ( rangeMax: null, progression: 'fixed', colorStops: SEVERITY_UI_SORT_ORDER.map((riskSeverity) => ({ - color: riskColors[riskSeverity], + color: RISK_SEVERITY_COLOUR[riskSeverity], stop: RISK_SCORE_RANGES[riskSeverity].start, })), stops: SEVERITY_UI_SORT_ORDER.map((riskSeverity) => ({ - color: riskColors[riskSeverity], + color: RISK_SEVERITY_COLOUR[riskSeverity], stop: RISK_SCORE_RANGES[riskSeverity].stop, })), continuity: 'above', From adc05df7934e13379ebc1fdb3a87f7e3584366ee Mon Sep 17 00:00:00 2001 From: Charlotte Alexandra Wilson Date: Fri, 24 Jan 2025 17:21:03 +0000 Subject: [PATCH 31/33] background color changed to euiTheme.colors.backgroundBaseDanger for high and critical risk score dropdown --- .../entity_analytics/components/severity/common/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx index c539adb7b771d..123027fd81da9 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/severity/common/index.tsx @@ -76,7 +76,7 @@ const RiskScoreBadge: React.FC<{ // https://github.com/elastic/security-team/issues/11516 hook - https://github.com/elastic/kibana/pull/206276 return ( Date: Fri, 24 Jan 2025 17:45:06 +0000 Subject: [PATCH 32/33] [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' --- .../components/risk_summary_flyout/risk_summary.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx index bfa9de67cc9d2..64ecb0dbd87e6 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/risk_summary_flyout/risk_summary.tsx @@ -78,7 +78,7 @@ const FlyoutRiskSummaryComponent = ({ severity: entityData?.risk?.calculated_level, query: `${fieldName}: ${entityName}`, spaceId: 'default', - riskEntity: entityType, + riskEntity: entityType, // TODO: add in riskColors when severity palette agreed on. // https://github.com/elastic/security-team/issues/11516 hook - https://github.com/elastic/kibana/pull/206276 }); From 7592982f15ecdf79dd87d1092965953c002a87cc Mon Sep 17 00:00:00 2001 From: CAWilson94 Date: Fri, 24 Jan 2025 20:08:23 +0000 Subject: [PATCH 33/33] update unknown colors for testing risk severity --- .../__snapshots__/risk_score_summary.test.ts.snap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_summary.test.ts.snap b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_summary.test.ts.snap index 225ff3ef8c7a0..7f8b46a9f5bb4 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_summary.test.ts.snap +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/lens_attributes/__snapshots__/risk_score_summary.test.ts.snap @@ -113,7 +113,7 @@ Object { "params": Object { "colorStops": Array [ Object { - "color": "#98a2b3", + "color": "#aaa", "stop": 0, }, Object { @@ -144,7 +144,7 @@ Object { "steps": 3, "stops": Array [ Object { - "color": "#98a2b3", + "color": "#aaa", "stop": 20, }, Object {