mirror of
https://github.com/elastic/kibana.git
synced 2025-06-28 11:05:39 -04:00
Fixed issue when multiple joined results come back from privileged access detection (#224821)
Fixed some issues found with the privileged access detection heatmap. - Fixed an issue when multiple joined results per user come back from privileged access detection anomalies "top users" query. - Fixed an emotion CSS issue where I imported the wrong module
This commit is contained in:
parent
4b4023fd3c
commit
b67aace24c
3 changed files with 4 additions and 11 deletions
|
@ -35,7 +35,7 @@ describe('the source queries for privileged access detection', () => {
|
||||||
| LOOKUP JOIN .entity_analytics.monitoring.users-default ON user.name
|
| LOOKUP JOIN .entity_analytics.monitoring.users-default ON user.name
|
||||||
| RENAME event_timestamp AS @timestamp
|
| RENAME event_timestamp AS @timestamp
|
||||||
| WHERE user.is_privileged == true
|
| WHERE user.is_privileged == true
|
||||||
| STATS max_record_score = MAX(record_score), user.is_privileged = TOP(user.is_privileged, 100, "desc") by user.name
|
| STATS max_record_score = MAX(record_score), user.is_privileged = TOP(user.is_privileged, 1, "desc") by user.name
|
||||||
| WHERE user.is_privileged == true
|
| WHERE user.is_privileged == true
|
||||||
| SORT max_record_score DESC
|
| SORT max_record_score DESC
|
||||||
| KEEP user.name
|
| KEEP user.name
|
||||||
|
@ -82,7 +82,7 @@ describe('the source queries for privileged access detection', () => {
|
||||||
| LOOKUP JOIN .entity_analytics.monitoring.users-default ON user.name
|
| LOOKUP JOIN .entity_analytics.monitoring.users-default ON user.name
|
||||||
| RENAME event_timestamp AS @timestamp
|
| RENAME event_timestamp AS @timestamp
|
||||||
| WHERE user.is_privileged == true
|
| WHERE user.is_privileged == true
|
||||||
| STATS max_record_score = MAX(record_score), user.is_privileged = TOP(user.is_privileged, 100, "desc") by user.name
|
| STATS max_record_score = MAX(record_score), user.is_privileged = TOP(user.is_privileged, 1, "desc") by user.name
|
||||||
| WHERE user.is_privileged == true
|
| WHERE user.is_privileged == true
|
||||||
| SORT max_record_score DESC
|
| SORT max_record_score DESC
|
||||||
| KEEP user.name
|
| KEEP user.name
|
||||||
|
|
|
@ -16,13 +16,6 @@ const getHiddenBandsFilters = (anomalyBands: AnomalyBand[]) => {
|
||||||
return hiddenBands.map(recordScoreFilterClause).join('');
|
return hiddenBands.map(recordScoreFilterClause).join('');
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Currently, this query utilizes the `TOP` ES|QL command to filter for privileged users, and this effectively puts a cap on the number of data
|
|
||||||
* sources, per `user.name`, this query supports. Right now, we have a total of 3 possible values ('integration', 'api', and 'csv'), so 100
|
|
||||||
* is more than enough, and should likely suffice with the current architecture. If the `VALUES` ES|QL command is ever officially supported, this limitation would go away.
|
|
||||||
*/
|
|
||||||
const numberOfSupportedDataSources = 100;
|
|
||||||
|
|
||||||
export const usePadTopAnomalousUsersEsqlSource = ({
|
export const usePadTopAnomalousUsersEsqlSource = ({
|
||||||
jobIds,
|
jobIds,
|
||||||
anomalyBands,
|
anomalyBands,
|
||||||
|
@ -41,7 +34,7 @@ export const usePadTopAnomalousUsersEsqlSource = ({
|
||||||
| WHERE record_score IS NOT NULL AND user.name IS NOT NULL
|
| WHERE record_score IS NOT NULL AND user.name IS NOT NULL
|
||||||
${getHiddenBandsFilters(anomalyBands)}
|
${getHiddenBandsFilters(anomalyBands)}
|
||||||
${getPrivilegedMonitorUsersJoin(spaceId)}
|
${getPrivilegedMonitorUsersJoin(spaceId)}
|
||||||
| STATS max_record_score = MAX(record_score), user.is_privileged = TOP(user.is_privileged, ${numberOfSupportedDataSources}, "desc") by user.name
|
| STATS max_record_score = MAX(record_score), user.is_privileged = TOP(user.is_privileged, 1, "desc") by user.name
|
||||||
| WHERE user.is_privileged == true
|
| WHERE user.is_privileged == true
|
||||||
| SORT max_record_score DESC
|
| SORT max_record_score DESC
|
||||||
| KEEP user.name
|
| KEEP user.name
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { useExpandableFlyoutApi } from '@kbn/expandable-flyout';
|
import { useExpandableFlyoutApi } from '@kbn/expandable-flyout';
|
||||||
import { EuiFlexGroup, EuiFlexItem, EuiLink, EuiText } from '@elastic/eui';
|
import { EuiFlexGroup, EuiFlexItem, EuiLink, EuiText } from '@elastic/eui';
|
||||||
import { css } from '@emotion/css';
|
import { css } from '@emotion/react';
|
||||||
import { padChartStyling } from './pad_chart_styling';
|
import { padChartStyling } from './pad_chart_styling';
|
||||||
import { UserPanelKey } from '../../../../../../flyout/entity_details/shared/constants';
|
import { UserPanelKey } from '../../../../../../flyout/entity_details/shared/constants';
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue