Skip to content

Commit c36fd66

Browse files
A redesigned SIEM Overview page that includes Recent timelines, a Security news feed, visualizations, and rolled-up event counts
![overview-day](https://user-images.githubusercontent.com/4459398/72394573-f7c42080-36f3-11ea-93a1-57c52152cfdd.png) ![overview-night](https://user-images.githubusercontent.com/4459398/72394575-fb57a780-36f3-11ea-868e-8fcd2c5c4543.png) - Added the global Search bar and Date picker to the Overview page - New `Recent timelines` widget affords quick access to favorite and recently modified timelines - New `Security news` widget - New Kibana advanced settings (toggle switch) for enabling or disabling the news widget and configuring the news URL ![news-settings](https://user-images.githubusercontent.com/4459398/72362776-fd4c4700-36b0-11ea-805b-3c7353f2c1cd.png) - New `Events count by dataset` widget - Updated the `Host Events` and `Network Events` widgets to integrate with the Search bar and date picker input - Enhanced the `Host Events` and `Network Events` widgets to use an accordion paradigm that summarizes stats by source (e.g. `Auditbeat`, `Endgame`) - Enhanced the `Host Events` and `Network Events` widgets to visualize relative percentages of events collected as progress bars - New `Alerts count by category` widget - New `Signals count by MITRE ATT&CK™ category` widget - New `View events`, `View alerts`, and `View signals` navigation buttons for their respective visualizations - FTUE "no data" view design refresh ![ftue](https://user-images.githubusercontent.com/4459398/72361771-43a0a680-36af-11ea-969f-5872ac4a01a1.png) - When the FTUE "no data" page is displayed, hide all global navigation links (i.e. `Hosts`, `Network`, `Detection engine`), such that only `Overview` appears in the global nav - App Help popover design refresh ![help](https://user-images.githubusercontent.com/4459398/72362132-d80b0900-36af-11ea-9b58-1fd3b923b7c8.png) - Removed the `Beta` badge and `Security Information & Event Management with the Elastic Stack` from the Overview header - Tested in Chrome `79.0.3945.117`, Firefox `72.0.1`, and Safari `13.0.4` - The `siem:newsFeedUrl` advanced setting is defaulted to `https://feeds.elastic.co/kibana` - The `Signals count by MITRE ATT&CK™ category` visualization does not display all categories - The `Signals count by MITRE ATT&CK™ category` visualization may require a different index pattern - `EuiButtonGroup` throwing a `Can't perform a React state update on an unmounted component` warning when switching from the Overview tab elastic/siem-team#484
1 parent 6cac02e commit c36fd66

File tree

74 files changed

+3435
-928
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+3435
-928
lines changed

docs/management/advanced-options.asciidoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,8 @@ might increase the search time. This setting is off by default. Users must opt-i
217217
[horizontal]
218218
`siem:defaultAnomalyScore`:: The threshold above which Machine Learning job anomalies are displayed in the SIEM app.
219219
`siem:defaultIndex`:: A comma-delimited list of Elasticsearch indices from which the SIEM app collects events.
220+
`siem:enableNewsFeed`:: Enables the News feed
221+
`siem:newsFeedUrl`:: News feed content will be retrieved from this URL
220222
`siem:refreshIntervalDefaults`:: The default refresh interval for the SIEM time filter, in milliseconds.
221223
`siem:timeDefaults`:: The default period of time in the SIEM time filter.
222224

src/core/public/doc_links/doc_links_service.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,10 @@ export class DocLinksService {
106106
introduction: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/index-patterns.html`,
107107
},
108108
kibana: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/index.html`,
109-
siem: `${ELASTIC_WEBSITE_URL}guide/en/siem/guide/${DOC_LINK_VERSION}/index.html`,
109+
siem: {
110+
guide: `${ELASTIC_WEBSITE_URL}guide/en/siem/guide/${DOC_LINK_VERSION}/index.html`,
111+
gettingStarted: `${ELASTIC_WEBSITE_URL}guide/en/siem/guide/${DOC_LINK_VERSION}/install-siem.html`,
112+
},
110113
query: {
111114
luceneQuerySyntax: `${ELASTICSEARCH_DOCS}query-dsl-query-string-query.html#query-string-syntax`,
112115
queryDsl: `${ELASTICSEARCH_DOCS}query-dsl.html`,
@@ -199,7 +202,10 @@ export interface DocLinksStart {
199202
readonly introduction: string;
200203
};
201204
readonly kibana: string;
202-
readonly siem: string;
205+
readonly siem: {
206+
readonly guide: string;
207+
readonly gettingStarted: string;
208+
};
203209
readonly query: {
204210
readonly luceneQuerySyntax: string;
205211
readonly queryDsl: string;

x-pack/legacy/plugins/siem/common/constants.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,15 @@ export const DEFAULT_INTERVAL_TYPE = 'manual';
2929
export const DEFAULT_INTERVAL_VALUE = 300000; // ms
3030
export const DEFAULT_TIMEPICKER_QUICK_RANGES = 'timepicker:quickRanges';
3131

32+
/** This Kibana Advanced Setting enables the `Security news` feed widget */
33+
export const ENABLE_NEWS_FEED_SETTING = 'siem:enableNewsFeed';
34+
35+
/** This Kibana Advanced Setting specifies the URL of the News feed widget */
36+
export const NEWS_FEED_URL_SETTING = 'siem:newsFeedUrl';
37+
38+
/** The default value for News feed widget */
39+
export const NEWS_FEED_URL_SETTING_DEFAULT = 'https://feeds.elastic.co/kibana'; // TODO: replace this with the real feed URL
40+
3241
/**
3342
* Id for the signals alerting type
3443
*/

x-pack/legacy/plugins/siem/cypress/integration/lib/overview/selectors.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,3 +133,7 @@ export const NETWORK_STATS = [
133133
STAT_FLOW,
134134
STAT_TLS,
135135
];
136+
137+
export const OVERVIEW_HOST_STATS = '[data-test-subj="overview-hosts-stats"]';
138+
139+
export const OVERVIEW_NETWORK_STATS = '[data-test-subj="overview-network-stats"]';

x-pack/legacy/plugins/siem/cypress/integration/smoke_tests/overview/overview.spec.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,13 @@
66

77
import { OVERVIEW_PAGE } from '../../lib/urls';
88
import { clearFetch, stubApi } from '../../lib/fixtures/helpers';
9-
import { HOST_STATS, NETWORK_STATS, STAT_AUDITD } from '../../lib/overview/selectors';
9+
import {
10+
HOST_STATS,
11+
NETWORK_STATS,
12+
OVERVIEW_HOST_STATS,
13+
OVERVIEW_NETWORK_STATS,
14+
STAT_AUDITD,
15+
} from '../../lib/overview/selectors';
1016
import { loginAndWaitForPage } from '../../lib/util/helpers';
1117

1218
describe('Overview Page', () => {
@@ -17,6 +23,14 @@ describe('Overview Page', () => {
1723
});
1824

1925
it('Host and Network stats render with correct values', () => {
26+
cy.get(OVERVIEW_HOST_STATS)
27+
.find('button')
28+
.invoke('click');
29+
30+
cy.get(OVERVIEW_NETWORK_STATS)
31+
.find('button')
32+
.invoke('click');
33+
2034
cy.get(STAT_AUDITD.domId);
2135

2236
HOST_STATS.forEach(stat => {

x-pack/legacy/plugins/siem/index.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ import {
2525
DEFAULT_FROM,
2626
DEFAULT_TO,
2727
DEFAULT_SIGNALS_INDEX,
28+
ENABLE_NEWS_FEED_SETTING,
29+
NEWS_FEED_URL_SETTING,
30+
NEWS_FEED_URL_SETTING_DEFAULT,
2831
SIGNALS_INDEX_KEY,
2932
} from './common/constants';
3033
import { defaultIndexPattern } from './default_index_pattern';
@@ -118,6 +121,29 @@ export const siem = (kibana: any) => {
118121
category: ['siem'],
119122
requiresPageReload: true,
120123
},
124+
[ENABLE_NEWS_FEED_SETTING]: {
125+
name: i18n.translate('xpack.siem.uiSettings.enableNewsFeedLabel', {
126+
defaultMessage: 'News feed',
127+
}),
128+
value: true,
129+
description: i18n.translate('xpack.siem.uiSettings.enableNewsFeedDescription', {
130+
defaultMessage: '<p>Enables the News feed</p>',
131+
}),
132+
type: 'boolean',
133+
category: ['siem'],
134+
requiresPageReload: true,
135+
},
136+
[NEWS_FEED_URL_SETTING]: {
137+
name: i18n.translate('xpack.siem.uiSettings.newsFeedUrl', {
138+
defaultMessage: 'News feed URL',
139+
}),
140+
value: NEWS_FEED_URL_SETTING_DEFAULT,
141+
description: i18n.translate('xpack.siem.uiSettings.newsFeedUrlDescription', {
142+
defaultMessage: '<p>News feed content will be retrieved from this URL</p>',
143+
}),
144+
category: ['siem'],
145+
requiresPageReload: true,
146+
},
121147
},
122148
mappings: savedObjectMappings,
123149
},

x-pack/legacy/plugins/siem/public/components/alerts_viewer/index.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,13 @@ import { MatrixHistogramOption } from '../matrix_histogram/types';
1414
import { MatrixHistogramContainer } from '../../containers/matrix_histogram';
1515
import { MatrixHistogramGqlQuery } from '../../containers/matrix_histogram/index.gql_query';
1616
const ID = 'alertsOverTimeQuery';
17-
const alertsStackByOptions: MatrixHistogramOption[] = [
17+
export const alertsStackByOptions: MatrixHistogramOption[] = [
1818
{
19-
text: i18n.ALERTS_STACK_BY_MODULE,
19+
text: i18n.CATEGORY,
20+
value: 'event.category',
21+
},
22+
{
23+
text: i18n.MODULE,
2024
value: 'event.module',
2125
},
2226
];
@@ -51,7 +55,7 @@ export const AlertsView = ({
5155
<MatrixHistogramContainer
5256
dataKey={dataKey}
5357
deleteQuery={deleteQuery}
54-
defaultStackByOption={alertsStackByOptions[0]}
58+
defaultStackByOption={alertsStackByOptions[1]}
5559
endDate={endDate}
5660
errorMessage={i18n.ERROR_FETCHING_ALERTS_DATA}
5761
filterQuery={filterQuery}

x-pack/legacy/plugins/siem/public/components/alerts_viewer/translations.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,11 @@ export const ERROR_FETCHING_ALERTS_DATA = i18n.translate(
4141
defaultMessage: 'Failed to query alerts data',
4242
}
4343
);
44+
45+
export const CATEGORY = i18n.translate('xpack.siem.alertsView.categoryLabel', {
46+
defaultMessage: 'category',
47+
});
48+
49+
export const MODULE = i18n.translate('xpack.siem.alertsView.moduleLabel', {
50+
defaultMessage: 'module',
51+
});

x-pack/legacy/plugins/siem/public/components/empty_page/__snapshots__/index.test.tsx.snap

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

x-pack/legacy/plugins/siem/public/components/empty_page/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export const EmptyPage = React.memo<EmptyPageProps>(
4343
...rest
4444
}) => (
4545
<EmptyPrompt
46+
iconType="securityAnalyticsApp"
4647
title={<h2>{title}</h2>}
4748
body={message && <p>{message}</p>}
4849
actions={

0 commit comments

Comments
 (0)