Skip to content

Commit cc43bcd

Browse files
Merge branch 'master' of github.com:elastic/kibana into hosts-overview-search-strategy
# Conflicts: # x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/index.ts # x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/hosts/details/query.host_details.dsl.ts
2 parents 438a7eb + 95a0b55 commit cc43bcd

File tree

23 files changed

+753
-198
lines changed

23 files changed

+753
-198
lines changed

x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/authentications/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ import {
1919
} from '../../../common';
2020
import { RequestOptionsPaginated } from '../../';
2121

22-
export interface AuthenticationsStrategyResponse extends IEsSearchResponse {
22+
export interface HostAuthenticationsStrategyResponse extends IEsSearchResponse {
2323
edges: AuthenticationsEdges[];
2424
totalCount: number;
2525
pageInfo: PageInfoPaginated;
2626
inspect?: Maybe<Inspect>;
2727
}
2828

29-
export interface AuthenticationsRequestOptions extends RequestOptionsPaginated {
29+
export interface HostAuthenticationsRequestOptions extends RequestOptionsPaginated {
3030
defaultIndex: string[];
3131
}
3232

x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/common/index.ts

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

77
import { CloudEcs } from '../../../../ecs/cloud';
88
import { HostEcs, OsEcs } from '../../../../ecs/host';
9-
import { Maybe, SearchHit, TotalValue } from '../../../common';
9+
import { Hit, Hits, Maybe, SearchHit, StringOrNumber, TotalValue } from '../../../common';
1010

1111
export enum HostPolicyResponseActionStatus {
1212
success = 'success',
@@ -98,3 +98,15 @@ export interface HostAggEsData extends SearchHit {
9898
sort: string[];
9999
aggregations: HostAggEsItem;
100100
}
101+
102+
export interface HostHit extends Hit {
103+
_source: {
104+
'@timestamp'?: string;
105+
host: HostEcs;
106+
};
107+
cursor?: string;
108+
firstSeen?: string;
109+
sort?: StringOrNumber[];
110+
}
111+
112+
export type HostHits = Hits<number, HostHit>;

x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/details/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66

77
import { IEsSearchResponse } from '../../../../../../../../src/plugins/data/common';
88

9+
import { Inspect, Maybe, TimerangeInput } from '../../../common';
910
import { HostItem, HostsFields } from '../common';
10-
import { Inspect, Maybe, RequestOptionsPaginated, TimerangeInput } from '../..';
11+
import { RequestOptionsPaginated } from '../..';
1112

1213
export interface HostDetailsStrategyResponse extends IEsSearchResponse {
1314
hostDetails: HostItem;

x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@ export * from './common';
1111
export * from './details';
1212
export * from './overview';
1313
export * from './first_last_seen';
14+
export * from './uncommon_processes';
1415

1516
export enum HostsQueries {
1617
authentications = 'authentications',
1718
details = 'details',
1819
firstLastSeen = 'firstLastSeen',
1920
hosts = 'hosts',
2021
overview = 'overview',
22+
uncommonProcesses = 'uncommonProcesses',
2123
}

x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts/overview/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ export interface HostOverviewStrategyResponse extends IEsSearchResponse {
2929
filebeatSystemModule?: Maybe<number>;
3030
winlogbeatSecurity?: Maybe<number>;
3131
winlogbeatMWSysmonOperational?: Maybe<number>;
32-
inspect?: Maybe<Inspect>;
3332
};
3433
}
3534

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
import { IEsSearchResponse } from '../../../../../../../../src/plugins/data/common';
7+
8+
import { HostEcs } from '../../../../ecs/host';
9+
import { UserEcs } from '../../../../ecs/user';
10+
import {
11+
RequestOptionsPaginated,
12+
SortField,
13+
CursorType,
14+
Inspect,
15+
Maybe,
16+
PageInfoPaginated,
17+
Hit,
18+
TotalHit,
19+
StringOrNumber,
20+
Hits,
21+
} from '../../..';
22+
23+
export interface HostUncommonProcessesRequestOptions extends RequestOptionsPaginated {
24+
sort: SortField;
25+
defaultIndex: string[];
26+
}
27+
28+
export interface HostUncommonProcessesStrategyResponse extends IEsSearchResponse {
29+
edges: UncommonProcessesEdges[];
30+
totalCount: number;
31+
pageInfo: PageInfoPaginated;
32+
inspect?: Maybe<Inspect>;
33+
}
34+
35+
export interface UncommonProcessesEdges {
36+
node: UncommonProcessItem;
37+
cursor: CursorType;
38+
}
39+
40+
export interface UncommonProcessItem {
41+
_id: string;
42+
instances: number;
43+
process: ProcessEcsFields;
44+
hosts: HostEcs[];
45+
user?: Maybe<UserEcs>;
46+
}
47+
48+
export interface ProcessEcsFields {
49+
hash?: Maybe<ProcessHashData>;
50+
pid?: Maybe<number[]>;
51+
name?: Maybe<string[]>;
52+
ppid?: Maybe<number[]>;
53+
args?: Maybe<string[]>;
54+
entity_id?: Maybe<string[]>;
55+
executable?: Maybe<string[]>;
56+
title?: Maybe<string[]>;
57+
thread?: Maybe<Thread>;
58+
working_directory?: Maybe<string[]>;
59+
}
60+
61+
export interface ProcessHashData {
62+
md5?: Maybe<string[]>;
63+
sha1?: Maybe<string[]>;
64+
sha256?: Maybe<string[]>;
65+
}
66+
67+
export interface Thread {
68+
id?: Maybe<number[]>;
69+
start?: Maybe<string[]>;
70+
}
71+
72+
export interface UncommonProcessHit extends Hit {
73+
total: TotalHit;
74+
host: Array<{
75+
id: string[] | undefined;
76+
name: string[] | undefined;
77+
}>;
78+
_source: {
79+
'@timestamp': string;
80+
process: ProcessEcsFields;
81+
};
82+
cursor: string;
83+
sort: StringOrNumber[];
84+
}
85+
86+
export type ProcessHits = Hits<TotalHit, UncommonProcessHit>;

x-pack/plugins/security_solution/common/search_strategy/security_solution/index.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,17 @@ import {
1010
HostDetailsStrategyResponse,
1111
HostDetailsRequestOptions,
1212
HostOverviewStrategyResponse,
13+
HostAuthenticationsRequestOptions,
14+
HostAuthenticationsStrategyResponse,
1315
HostOverviewRequestOptions,
1416
HostFirstLastSeenStrategyResponse,
1517
HostFirstLastSeenRequestOptions,
1618
HostsQueries,
1719
HostsRequestOptions,
1820
HostsStrategyResponse,
21+
HostUncommonProcessesStrategyResponse,
22+
HostUncommonProcessesRequestOptions,
1923
} from './hosts';
20-
import {
21-
AuthenticationsRequestOptions,
22-
AuthenticationsStrategyResponse,
23-
} from './hosts/authentications';
2424
import {
2525
NetworkQueries,
2626
NetworkTlsStrategyResponse,
@@ -70,9 +70,11 @@ export type StrategyResponseType<T extends FactoryQueryTypes> = T extends HostsQ
7070
: T extends HostsQueries.overview
7171
? HostOverviewStrategyResponse
7272
: T extends HostsQueries.authentications
73-
? AuthenticationsStrategyResponse
73+
? HostAuthenticationsStrategyResponse
7474
: T extends HostsQueries.firstLastSeen
7575
? HostFirstLastSeenStrategyResponse
76+
: T extends HostsQueries.uncommonProcesses
77+
? HostUncommonProcessesStrategyResponse
7678
: T extends NetworkQueries.tls
7779
? NetworkTlsStrategyResponse
7880
: T extends NetworkQueries.http
@@ -88,9 +90,11 @@ export type StrategyRequestType<T extends FactoryQueryTypes> = T extends HostsQu
8890
: T extends HostsQueries.overview
8991
? HostOverviewRequestOptions
9092
: T extends HostsQueries.authentications
91-
? AuthenticationsRequestOptions
93+
? HostAuthenticationsRequestOptions
9294
: T extends HostsQueries.firstLastSeen
9395
? HostFirstLastSeenRequestOptions
96+
: T extends HostsQueries.uncommonProcesses
97+
? HostUncommonProcessesRequestOptions
9498
: T extends NetworkQueries.tls
9599
? NetworkTlsRequestOptions
96100
: T extends NetworkQueries.http

x-pack/plugins/security_solution/public/hosts/components/authentications_table/mock.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
* you may not use this file except in compliance with the Elastic License.
55
*/
66
import { SearchResponse } from 'elasticsearch';
7-
import { AuthenticationsStrategyResponse } from '../../../../common/search_strategy/security_solution/hosts/authentications';
7+
import { HostAuthenticationsStrategyResponse } from '../../../../common/search_strategy/security_solution/hosts/authentications';
88

9-
export const mockData: { Authentications: AuthenticationsStrategyResponse } = {
9+
export const mockData: { Authentications: HostAuthenticationsStrategyResponse } = {
1010
Authentications: {
1111
rawResponse: {
1212
aggregations: {

x-pack/plugins/security_solution/public/hosts/containers/authentications/index.tsx

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@ import deepEqual from 'fast-deep-equal';
1212
import { AbortError } from '../../../../../../../src/plugins/data/common';
1313

1414
import { DEFAULT_INDEX_KEY } from '../../../../common/constants';
15+
import { HostsQueries } from '../../../../common/search_strategy/security_solution';
1516
import {
16-
Direction,
17-
DocValueFields,
18-
HostPolicyResponseActionStatus,
19-
HostsQueries,
20-
PageInfoPaginated,
21-
AuthenticationsRequestOptions,
22-
AuthenticationsStrategyResponse,
17+
HostAuthenticationsRequestOptions,
18+
HostAuthenticationsStrategyResponse,
2319
AuthenticationsEdges,
20+
PageInfoPaginated,
21+
DocValueFields,
22+
SortField,
2423
} from '../../../../common/search_strategy';
2524
import { ESTermQuery } from '../../../../common/typed_json';
2625

@@ -75,7 +74,7 @@ export const useAuthentications = ({
7574
const defaultIndex = uiSettings.get<string[]>(DEFAULT_INDEX_KEY);
7675
const [loading, setLoading] = useState(false);
7776
const [authenticationsRequest, setAuthenticationsRequest] = useState<
78-
AuthenticationsRequestOptions
77+
HostAuthenticationsRequestOptions
7978
>({
8079
defaultIndex,
8180
docValueFields: docValueFields ?? [],
@@ -87,10 +86,7 @@ export const useAuthentications = ({
8786
from: startDate,
8887
to: endDate,
8988
},
90-
sort: {
91-
direction: Direction.desc,
92-
field: HostPolicyResponseActionStatus.success,
93-
},
89+
sort: {} as SortField,
9490
});
9591

9692
const wrappedLoadMore = useCallback(
@@ -125,14 +121,14 @@ export const useAuthentications = ({
125121
});
126122

127123
const authenticationsSearch = useCallback(
128-
(request: AuthenticationsRequestOptions) => {
124+
(request: HostAuthenticationsRequestOptions) => {
129125
let didCancel = false;
130126
const asyncSearch = async () => {
131127
abortCtrl.current = new AbortController();
132128
setLoading(true);
133129

134130
const searchSubscription$ = data.search
135-
.search<AuthenticationsRequestOptions, AuthenticationsStrategyResponse>(request, {
131+
.search<HostAuthenticationsRequestOptions, HostAuthenticationsStrategyResponse>(request, {
136132
strategy: 'securitySolutionSearchStrategy',
137133
abortSignal: abortCtrl.current.signal,
138134
})

0 commit comments

Comments
 (0)