From 0c270f4940ac71e215593b9ba5c7448ba2ad1dcb Mon Sep 17 00:00:00 2001 From: Chris Roberson Date: Mon, 18 Nov 2019 10:24:53 -0500 Subject: [PATCH 1/2] Cherry-pick 66038f5cfd6b3790c980e02a3341e14ecb9b26e4 --- .../monitoring/public/lib/setup_mode.js | 23 ++++++- .../setup/collection/get_collection_status.js | 60 +++++++++++++++---- .../setup/collection/fixtures/detect_apm.json | 4 +- .../collection/fixtures/detect_beats.json | 9 ++- .../fixtures/detect_beats_management.json | 9 ++- .../collection/fixtures/detect_logstash.json | 9 ++- .../fixtures/detect_logstash_management.json | 9 ++- .../fixtures/es_and_kibana_exclusive_mb.json | 9 ++- .../collection/fixtures/es_and_kibana_mb.json | 9 ++- .../fixtures/kibana_exclusive_mb.json | 9 ++- .../setup/collection/fixtures/kibana_mb.json | 9 ++- .../apis/monitoring/setup/collection/index.js | 1 + .../monitoring/setup/collection/security.js | 60 +++++++++++++++++++ 13 files changed, 190 insertions(+), 30 deletions(-) create mode 100644 x-pack/test/api_integration/apis/monitoring/setup/collection/security.js diff --git a/x-pack/legacy/plugins/monitoring/public/lib/setup_mode.js b/x-pack/legacy/plugins/monitoring/public/lib/setup_mode.js index dbfbdb324f7aa..687decb2abaf4 100644 --- a/x-pack/legacy/plugins/monitoring/public/lib/setup_mode.js +++ b/x-pack/legacy/plugins/monitoring/public/lib/setup_mode.js @@ -6,6 +6,9 @@ import { ajaxErrorHandlersProvider } from './ajax_error_handler'; import { get } from 'lodash'; +import chrome from 'ui/chrome'; +import { toastNotifications } from 'ui/notify'; +import { i18n } from '@kbn/i18n'; const angularState = { injector: null, @@ -75,7 +78,25 @@ export const updateSetupModeData = async (uuid, fetchWithoutClusterUuid = false) const oldData = setupModeState.data; const data = await fetchCollectionData(uuid, fetchWithoutClusterUuid); setupModeState.data = data; - if (get(data, '_meta.isOnCloud', false)) { + const isCloud = chrome.getInjected('isOnCloud'); + const hasPermissions = get(data, '_meta.hasPermissions', false); + if (isCloud || !hasPermissions) { + const text = !hasPermissions + ? i18n.translate('xpack.monitoring.setupMode.notAvailablePermissions', { + defaultMessage: 'You do not have the necessary permissions to do this.' + }) + : i18n.translate('xpack.monitoring.setupMode.notAvailableCloud', { + defaultMessage: 'This feature is not available on cloud.' + }); + + angularState.scope.$evalAsync(() => { + toastNotifications.addDanger({ + title: i18n.translate('xpack.monitoring.setupMode.notAvailableTitle', { + defaultMessage: 'Setup mode is not available' + }), + text, + }); + }); return toggleSetupMode(false); // eslint-disable-line no-use-before-define } notifySetupModeDataChange(oldData); diff --git a/x-pack/legacy/plugins/monitoring/server/lib/setup/collection/get_collection_status.js b/x-pack/legacy/plugins/monitoring/server/lib/setup/collection/get_collection_status.js index 85e0745436463..5783a8a3c1cbe 100644 --- a/x-pack/legacy/plugins/monitoring/server/lib/setup/collection/get_collection_status.js +++ b/x-pack/legacy/plugins/monitoring/server/lib/setup/collection/get_collection_status.js @@ -139,7 +139,22 @@ const getRecentMonitoringDocuments = async (req, indexPatterns, clusterUuid, nod return await callWithRequest(req, 'search', params); }; -async function detectProducts(req) { +async function doesIndexExist(req, index) { + const params = { + index, + size: 0, + terminate_after: 1, + ignoreUnavailable: true, + filterPath: [ + 'hits.total.value' + ], + }; + const { callWithRequest } = req.server.plugins.elasticsearch.getCluster('monitoring'); + const response = await callWithRequest(req, 'search', params); + return get(response, 'hits.total.value', 0) > 0; +} + +async function detectProducts(req, isLiveCluster) { const result = { [KIBANA_SYSTEM_ID]: { doesExist: true, @@ -181,11 +196,12 @@ async function detectProducts(req) { } ]; - const { callWithRequest } = req.server.plugins.elasticsearch.getCluster('data'); - for (const { id, indices } of detectionSearch) { - const response = await callWithRequest(req, 'cat.indices', { index: indices, format: 'json' }); - if (response.length) { - result[id].mightExist = true; + if (isLiveCluster) { + for (const { id, indices } of detectionSearch) { + const exists = await doesIndexExist(req, indices.join(',')); + if (exists) { + result[id].mightExist = true; + } } } @@ -215,6 +231,19 @@ function isBeatFromAPM(bucket) { return get(beatType, 'buckets[0].key') === 'apm-server'; } +async function hasNecessaryPermissions(req) { + const { callWithRequest } = req.server.plugins.elasticsearch.getCluster('data'); + const response = await callWithRequest(req, 'transport.request', { + method: 'POST', + path: '/_security/user/_has_privileges', + body: { + cluster: ['monitor'], + } + }); + // If there is some problem, assume they do not have access + return get(response, 'has_all_requested', false); +} + /** * Determines if we should ignore this bucket from this product. * @@ -308,6 +337,16 @@ async function getLiveElasticsearchCollectionEnabled(req) { export const getCollectionStatus = async (req, indexPatterns, clusterUuid, nodeUuid, skipLiveData) => { const config = req.server.config(); const kibanaUuid = config.get('server.uuid'); + const hasPermissions = await hasNecessaryPermissions(req); + if (!hasPermissions) { + return { + _meta: { + hasPermissions: false + } + }; + } + const liveClusterUuid = skipLiveData ? null : await getLiveElasticsearchClusterUuid(req); + const isLiveCluster = !clusterUuid || liveClusterUuid === clusterUuid; const PRODUCTS = [ { name: KIBANA_SYSTEM_ID }, @@ -322,12 +361,11 @@ export const getCollectionStatus = async (req, indexPatterns, clusterUuid, nodeU detectedProducts ] = await Promise.all([ await getRecentMonitoringDocuments(req, indexPatterns, clusterUuid, nodeUuid), - await detectProducts(req) + await detectProducts(req, isLiveCluster) ]); - const liveClusterUuid = skipLiveData ? null : await getLiveElasticsearchClusterUuid(req); - const liveEsNodes = skipLiveData || (clusterUuid && liveClusterUuid !== clusterUuid) ? [] : await getLivesNodes(req); - const liveKibanaInstance = skipLiveData || (clusterUuid && liveClusterUuid !== clusterUuid) ? {} : await getLiveKibanaInstance(req); + const liveEsNodes = skipLiveData || !isLiveCluster ? [] : await getLivesNodes(req); + const liveKibanaInstance = skipLiveData || !isLiveCluster ? {} : await getLiveKibanaInstance(req); const indicesBuckets = get(recentDocuments, 'aggregations.indices.buckets', []); const liveClusterInternalCollectionEnabled = await getLiveElasticsearchCollectionEnabled(req); @@ -527,7 +565,7 @@ export const getCollectionStatus = async (req, indexPatterns, clusterUuid, nodeU status._meta = { secondsAgo: NUMBER_OF_SECONDS_AGO_TO_LOOK, liveClusterUuid, - isOnCloud: get(req.server.plugins, 'cloud.config.isCloudEnabled', false) + hasPermissions, }; return status; diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_apm.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_apm.json index 518c074bc985d..62e7aae0231ba 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_apm.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_apm.json @@ -46,7 +46,7 @@ }, "_meta": { "secondsAgo": 30, - "isOnCloud": false, - "liveClusterUuid": null + "liveClusterUuid": null, + "hasPermissions": true } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats.json index 219b2194d04db..bf4d07f623c39 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats.json @@ -3,6 +3,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 1, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "5b2de169-2785-441b-ae8c-186a1936b17d": { @@ -17,6 +18,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": true }, @@ -26,6 +28,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -35,6 +38,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -44,6 +48,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 1, + "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "agI8JhXhShasvuDgq0VxRg": { @@ -55,7 +60,7 @@ }, "_meta": { "secondsAgo": 30, - "isOnCloud": false, - "liveClusterUuid": null + "liveClusterUuid": null, + "hasPermissions": true } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats_management.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats_management.json index 72e44a3227728..61f9a46081810 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats_management.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats_management.json @@ -3,6 +3,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "doesExist": true }, @@ -12,6 +13,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": true }, @@ -21,6 +23,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -30,6 +33,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -39,6 +43,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "doesExist": true }, @@ -46,7 +51,7 @@ }, "_meta": { "secondsAgo": 30, - "isOnCloud": false, - "liveClusterUuid": null + "liveClusterUuid": null, + "hasPermissions": true } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash.json index a30ee6c04640d..aaa576d05c446 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash.json @@ -3,6 +3,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "doesExist": true }, @@ -12,6 +13,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -21,6 +23,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": true }, @@ -30,6 +33,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -39,6 +43,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "doesExist": true }, @@ -46,7 +51,7 @@ }, "_meta": { "secondsAgo": 30, - "isOnCloud": false, - "liveClusterUuid": null + "liveClusterUuid": null, + "hasPermissions": true } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash_management.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash_management.json index a30ee6c04640d..aaa576d05c446 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash_management.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash_management.json @@ -3,6 +3,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "doesExist": true }, @@ -12,6 +13,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -21,6 +23,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": true }, @@ -30,6 +33,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -39,6 +43,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "doesExist": true }, @@ -46,7 +51,7 @@ }, "_meta": { "secondsAgo": 30, - "isOnCloud": false, - "liveClusterUuid": null + "liveClusterUuid": null, + "hasPermissions": true } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_exclusive_mb.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_exclusive_mb.json index 28f90aeba7ceb..a0f5c2617af07 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_exclusive_mb.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_exclusive_mb.json @@ -3,6 +3,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 1, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "5b2de169-2785-441b-ae8c-186a1936b17d": { @@ -17,6 +18,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "8eba4902-df80-43b0-b6c2-ed8ca290984e": { @@ -32,6 +34,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "4134a00e-89e4-4896-a3d4-c3a9aa03a594": { @@ -46,6 +49,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -55,6 +59,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 1, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "agI8JhXhShasvuDgq0VxRg": { @@ -66,7 +71,7 @@ }, "_meta": { "secondsAgo": 30, - "isOnCloud": false, - "liveClusterUuid": null + "liveClusterUuid": null, + "hasPermissions": true } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_mb.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_mb.json index 16d079ea9b7e9..50a59ed5c7b41 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_mb.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_mb.json @@ -3,6 +3,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 1, + "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "5b2de169-2785-441b-ae8c-186a1936b17d": { @@ -17,6 +18,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "8eba4902-df80-43b0-b6c2-ed8ca290984e": { @@ -32,6 +34,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "4134a00e-89e4-4896-a3d4-c3a9aa03a594": { @@ -46,6 +49,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -55,6 +59,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 1, + "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "agI8JhXhShasvuDgq0VxRg": { @@ -66,7 +71,7 @@ }, "_meta": { "secondsAgo": 30, - "isOnCloud": false, - "liveClusterUuid": null + "liveClusterUuid": null, + "hasPermissions": true } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_exclusive_mb.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_exclusive_mb.json index 7f5e8cb889782..2022ef2a99f35 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_exclusive_mb.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_exclusive_mb.json @@ -3,6 +3,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 1, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "5b2de169-2785-441b-ae8c-186a1936b17d": { @@ -17,6 +18,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "8eba4902-df80-43b0-b6c2-ed8ca290984e": { @@ -32,6 +34,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "4134a00e-89e4-4896-a3d4-c3a9aa03a594": { @@ -46,6 +49,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -55,6 +59,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 1, + "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "agI8JhXhShasvuDgq0VxRg": { @@ -66,7 +71,7 @@ }, "_meta": { "secondsAgo": 30, - "isOnCloud": false, - "liveClusterUuid": null + "liveClusterUuid": null, + "hasPermissions": true } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_mb.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_mb.json index 3c6da934bbf94..d0dc8d44b29c4 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_mb.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_mb.json @@ -3,6 +3,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 1, + "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "5b2de169-2785-441b-ae8c-186a1936b17d": { @@ -17,6 +18,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "8eba4902-df80-43b0-b6c2-ed8ca290984e": { @@ -32,6 +34,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "4134a00e-89e4-4896-a3d4-c3a9aa03a594": { @@ -46,6 +49,7 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -55,6 +59,7 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, + "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "agI8JhXhShasvuDgq0VxRg": { @@ -66,7 +71,7 @@ }, "_meta": { "secondsAgo": 30, - "isOnCloud": false, - "liveClusterUuid": null + "liveClusterUuid": null, + "hasPermissions": true } } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/index.js b/x-pack/test/api_integration/apis/monitoring/setup/collection/index.js index a88dc2f43c9b4..e5860bbc7ffc6 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/index.js +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/index.js @@ -15,5 +15,6 @@ export default function ({ loadTestFile }) { loadTestFile(require.resolve('./detect_logstash')); loadTestFile(require.resolve('./detect_logstash_management')); loadTestFile(require.resolve('./detect_apm')); + loadTestFile(require.resolve('./security')); }); } diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/security.js b/x-pack/test/api_integration/apis/monitoring/setup/collection/security.js new file mode 100644 index 0000000000000..420abe26103d0 --- /dev/null +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/security.js @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import expect from '@kbn/expect'; + +export default function ({ getService }) { + const supertest = getService('supertest'); + const esArchiver = getService('esArchiver'); + const security = getService('security'); + const supertestWithoutAuth = getService('supertestWithoutAuth'); + + describe('security', () => { + const archive = 'monitoring/setup/collection/kibana_exclusive_mb'; + const timeRange = { + min: '2019-04-09T00:00:00.741Z', + max: '2019-04-09T23:59:59.741Z' + }; + + before('load archive', () => { + return esArchiver.load(archive); + }); + + after('unload archive', () => { + return esArchiver.unload(archive); + }); + + it('should allow access to elevated user', async () => { + const { body } = await supertest + .post('/api/monitoring/v1/setup/collection/cluster?skipLiveData=true') + .set('kbn-xsrf', 'xxx') + .send({ timeRange }) + .expect(200); + + expect(body.hasPermissions).to.not.be(false); + }); + + it('should say permission denied for limited user', async () => { + const username = 'limited_user'; + const password = 'changeme'; + + await security.user.create(username, { + password: password, + full_name: 'Limited User', + roles: ['kibana_user', 'monitoring_user'] + }); + + const { body } = await supertestWithoutAuth + .post('/api/monitoring/v1/setup/collection/cluster?skipLiveData=true') + .auth(username, password) + .set('kbn-xsrf', 'xxx') + .send({ timeRange }) + .expect(200); + + expect(body._meta.hasPermissions).to.be(false); + }); + }); +} From c9886dfa71ea812dae42b63120ae08517146a516 Mon Sep 17 00:00:00 2001 From: chrisronline Date: Mon, 18 Nov 2019 14:23:04 -0500 Subject: [PATCH 2/2] Remove unnecessary field --- .../monitoring/setup/collection/fixtures/detect_beats.json | 5 ----- .../setup/collection/fixtures/detect_beats_management.json | 5 ----- .../setup/collection/fixtures/detect_logstash.json | 5 ----- .../collection/fixtures/detect_logstash_management.json | 5 ----- .../collection/fixtures/es_and_kibana_exclusive_mb.json | 5 ----- .../setup/collection/fixtures/es_and_kibana_mb.json | 5 ----- .../setup/collection/fixtures/kibana_exclusive_mb.json | 5 ----- .../apis/monitoring/setup/collection/fixtures/kibana_mb.json | 5 ----- 8 files changed, 40 deletions(-) diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats.json index bf4d07f623c39..b71b866d83c0d 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats.json @@ -3,7 +3,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 1, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "5b2de169-2785-441b-ae8c-186a1936b17d": { @@ -18,7 +17,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": true }, @@ -28,7 +26,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -38,7 +35,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -48,7 +44,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 1, - "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "agI8JhXhShasvuDgq0VxRg": { diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats_management.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats_management.json index 61f9a46081810..e381fea9f36f7 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats_management.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_beats_management.json @@ -3,7 +3,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "doesExist": true }, @@ -13,7 +12,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": true }, @@ -23,7 +21,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -33,7 +30,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -43,7 +39,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "doesExist": true }, diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash.json index aaa576d05c446..16c36a24923d0 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash.json @@ -3,7 +3,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "doesExist": true }, @@ -13,7 +12,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -23,7 +21,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": true }, @@ -33,7 +30,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -43,7 +39,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "doesExist": true }, diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash_management.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash_management.json index aaa576d05c446..16c36a24923d0 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash_management.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/detect_logstash_management.json @@ -3,7 +3,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "doesExist": true }, @@ -13,7 +12,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -23,7 +21,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": true }, @@ -33,7 +30,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -43,7 +39,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "doesExist": true }, diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_exclusive_mb.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_exclusive_mb.json index a0f5c2617af07..cc2e9b9a32173 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_exclusive_mb.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_exclusive_mb.json @@ -3,7 +3,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 1, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "5b2de169-2785-441b-ae8c-186a1936b17d": { @@ -18,7 +17,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "8eba4902-df80-43b0-b6c2-ed8ca290984e": { @@ -34,7 +32,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "4134a00e-89e4-4896-a3d4-c3a9aa03a594": { @@ -49,7 +46,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -59,7 +55,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 1, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "agI8JhXhShasvuDgq0VxRg": { diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_mb.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_mb.json index 50a59ed5c7b41..6a65752a4bbda 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_mb.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/es_and_kibana_mb.json @@ -3,7 +3,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 1, - "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "5b2de169-2785-441b-ae8c-186a1936b17d": { @@ -18,7 +17,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "8eba4902-df80-43b0-b6c2-ed8ca290984e": { @@ -34,7 +32,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "4134a00e-89e4-4896-a3d4-c3a9aa03a594": { @@ -49,7 +46,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -59,7 +55,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 1, - "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "agI8JhXhShasvuDgq0VxRg": { diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_exclusive_mb.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_exclusive_mb.json index 2022ef2a99f35..a7eb2fd8cd663 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_exclusive_mb.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_exclusive_mb.json @@ -3,7 +3,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 1, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "5b2de169-2785-441b-ae8c-186a1936b17d": { @@ -18,7 +17,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "8eba4902-df80-43b0-b6c2-ed8ca290984e": { @@ -34,7 +32,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "4134a00e-89e4-4896-a3d4-c3a9aa03a594": { @@ -49,7 +46,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -59,7 +55,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 1, - "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "agI8JhXhShasvuDgq0VxRg": { diff --git a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_mb.json b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_mb.json index d0dc8d44b29c4..ad0e85b499a45 100644 --- a/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_mb.json +++ b/x-pack/test/api_integration/apis/monitoring/setup/collection/fixtures/kibana_mb.json @@ -3,7 +3,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 1, - "totalUniqueInternallyCollectedCount": 0, "detected": null, "byUuid": { "5b2de169-2785-441b-ae8c-186a1936b17d": { @@ -18,7 +17,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "8eba4902-df80-43b0-b6c2-ed8ca290984e": { @@ -34,7 +32,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "4134a00e-89e4-4896-a3d4-c3a9aa03a594": { @@ -49,7 +46,6 @@ "totalUniqueInstanceCount": 0, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 0, "detected": { "mightExist": false }, @@ -59,7 +55,6 @@ "totalUniqueInstanceCount": 1, "totalUniqueFullyMigratedCount": 0, "totalUniquePartiallyMigratedCount": 0, - "totalUniqueInternallyCollectedCount": 1, "detected": null, "byUuid": { "agI8JhXhShasvuDgq0VxRg": {