Skip to content

Commit 3d6253f

Browse files
[7.x] Add telemetry as an automatic privilege grant (#77390) (#77774)
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
1 parent fa36528 commit 3d6253f

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

src/plugins/telemetry/server/routes/telemetry_opt_in.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import {
2626
StatsGetterConfig,
2727
TelemetryCollectionManagerPluginSetup,
2828
} from 'src/plugins/telemetry_collection_manager/server';
29+
import { SavedObjectsErrorHelpers } from '../../../../core/server';
2930
import { getTelemetryAllowChangingOptInStatus } from '../../common/telemetry_config';
3031
import { sendTelemetryOptInStatus } from './telemetry_opt_in_stats';
3132

@@ -109,7 +110,13 @@ export function registerTelemetryOptInRoutes({
109110
});
110111
}
111112

112-
await updateTelemetrySavedObject(context.core.savedObjects.client, attributes);
113+
try {
114+
await updateTelemetrySavedObject(context.core.savedObjects.client, attributes);
115+
} catch (e) {
116+
if (SavedObjectsErrorHelpers.isForbiddenError(e)) {
117+
return res.forbidden();
118+
}
119+
}
113120
return res.ok({ body: optInStatus });
114121
}
115122
);

x-pack/plugins/features/server/feature_registry.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ describe('FeatureRegistry', () => {
5757
read: {
5858
savedObject: {
5959
all: [],
60-
read: ['config', 'url'],
60+
read: ['config', 'url', 'telemetry'],
6161
},
6262
ui: [],
6363
},
@@ -230,7 +230,7 @@ describe('FeatureRegistry', () => {
230230
expect(allPrivilege?.savedObject.all).toEqual(['telemetry']);
231231
});
232232

233-
it(`automatically grants 'read' access to config and url saved objects for both privileges`, () => {
233+
it(`automatically grants access to config, url, and telemetry saved objects`, () => {
234234
const feature: KibanaFeatureConfig = {
235235
id: 'test-feature',
236236
name: 'Test Feature',
@@ -263,7 +263,7 @@ describe('FeatureRegistry', () => {
263263
const allPrivilege = result[0].privileges?.all;
264264
const readPrivilege = result[0].privileges?.read;
265265
expect(allPrivilege?.savedObject.read).toEqual(['config', 'url']);
266-
expect(readPrivilege?.savedObject.read).toEqual(['config', 'url']);
266+
expect(readPrivilege?.savedObject.read).toEqual(['config', 'telemetry', 'url']);
267267
});
268268

269269
it(`automatically grants 'all' access to telemetry and 'read' to [config, url] saved objects for the reserved privilege`, () => {
@@ -332,7 +332,7 @@ describe('FeatureRegistry', () => {
332332
const readPrivilege = result[0].privileges!.read;
333333
expect(allPrivilege?.savedObject.all).toEqual(['telemetry']);
334334
expect(allPrivilege?.savedObject.read).toEqual(['config', 'url']);
335-
expect(readPrivilege?.savedObject.read).toEqual(['config', 'url']);
335+
expect(readPrivilege?.savedObject.read).toEqual(['config', 'url', 'telemetry']);
336336
});
337337

338338
it(`does not allow duplicate features to be registered`, () => {

x-pack/plugins/features/server/feature_registry.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,12 @@ function applyAutomaticReadPrivilegeGrants(
9797
) {
9898
readPrivileges.forEach((readPrivilege) => {
9999
if (readPrivilege) {
100-
readPrivilege.savedObject.read = uniq([...readPrivilege.savedObject.read, 'config', 'url']);
100+
readPrivilege.savedObject.read = uniq([
101+
...readPrivilege.savedObject.read,
102+
'config',
103+
'telemetry',
104+
'url',
105+
]);
101106
}
102107
});
103108
}

0 commit comments

Comments
 (0)