mirror of
https://github.com/elastic/kibana.git
synced 2025-06-28 03:01:21 -04:00
## Summary This PR makes `security` a required field for route registration. To incorporate the new required filed, changes has been made: 1. **Test file updates**. A lot of the updates made in this PR were made in tests. 2. **Versioned route security configuration**. For the versioned route `security` config has been lifted up to the top-level definition: Before ```ts router.versioned .get({ path: '/api/path', options: { ... }, ... }, handler) .addVersion({ version: 1, validate: false, security: { authz: { requiredPrivileges: ['privilege'], }, }, }); ``` After ```ts router.versioned .get({ path: '/api/path', options: { ... }, security: { authz: { requiredPrivileges: ['privilege'], }, }, ... }, handler) .addVersion({ version: 1, validate: false, }); ``` 3. **Type adjustments for route wrappers**. Type changes has been made in: - `x-pack/solutions/observability/plugins/infra/server/lib/adapters/framework/adapter_types.ts` - `x-pack/solutions/observability/plugins/metrics_data_access/server/lib/adapters/framework/adapter_types.ts` - `x-pack/solutions/observability/plugins/synthetics/server/routes/types.ts` - `x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/types.ts` Security was made an optional field for the wrappers defined in those files, since the default security is provided in the wrapper itself and then passed down to the core router. ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [x] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) __Closes: https://github.com/elastic/kibana/issues/215331__ --------- Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
68 lines
2.1 KiB
TypeScript
68 lines
2.1 KiB
TypeScript
/*
|
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
* or more contributor license agreements. Licensed under the "Elastic License
|
|
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
|
|
* Public License v 1"; you may not use this file except in compliance with, at
|
|
* your election, the "Elastic License 2.0", the "GNU Affero General Public
|
|
* License v3.0 only", or the "Server Side Public License, v 1".
|
|
*/
|
|
|
|
import type { IRouter } from '@kbn/core/server';
|
|
import { DEPRECATED_ROUTES } from '../../../common';
|
|
|
|
export const registerInternalDeprecatedRoute = (router: IRouter) => {
|
|
router.get(
|
|
{
|
|
path: DEPRECATED_ROUTES.INTERNAL_DEPRECATED_ROUTE,
|
|
security: {
|
|
authz: {
|
|
enabled: false,
|
|
reason:
|
|
'This route is opted out of authorization because it is only intended for test use',
|
|
},
|
|
},
|
|
validate: false,
|
|
options: {
|
|
// Explicitly set access is to internal
|
|
access: 'internal',
|
|
deprecated: {
|
|
documentationUrl: 'https://elastic.co/',
|
|
severity: 'critical',
|
|
message: 'Additonal message for internal deprecated api',
|
|
reason: { type: 'deprecate' },
|
|
},
|
|
},
|
|
},
|
|
async (ctx, req, res) => {
|
|
return res.ok({
|
|
body: {
|
|
result:
|
|
'Called deprecated route with `access: internal`. Check UA to see the deprecation.',
|
|
},
|
|
});
|
|
}
|
|
);
|
|
|
|
router.get(
|
|
{
|
|
path: DEPRECATED_ROUTES.INTERNAL_ONLY_ROUTE,
|
|
validate: false,
|
|
security: {
|
|
authz: {
|
|
enabled: false,
|
|
reason:
|
|
'This route is opted out of authorization because it is only intended for test use',
|
|
},
|
|
},
|
|
// If no access is specified then it defaults to internal
|
|
},
|
|
async (ctx, req, res) => {
|
|
return res.ok({
|
|
body: {
|
|
result:
|
|
'Called route with `access: internal` Although this API is not marked as deprecated it will show in UA. Check UA to see the deprecation.',
|
|
},
|
|
});
|
|
}
|
|
);
|
|
};
|