Your window into the Elastic Stack
Find a file
Jeramy Soucy 1a3343dc82
Removes Kibana version from authorization model to support zero-downtime upgrades (#156280)
Closes https://github.com/elastic/kibana/issues/153820

## Summary

This PR removes the version string from all actions, and removes the
actions.version property altogether. This will support zero-downtime
upgrades, where the need to continue to authorize user actions during an
upgrade is required.

### Caveats
Without the version string or version property, we will no longer check
for a strict match of Kibana versions in a cluster ('Multiple versions
of Kibana are running against the same Elasticsearch cluster, unable to
authorize user'). We do not feel this will be an issue - the check was
originally an extra precaution to ensure future versions could not
inadvertently grant additional privileges to users by default, but this
is no longer considered a real concern.

### Questions
Will we need any further changes to support ZDT upgrades? During
testing, I had attempted to run two different versions of Kibana
containing versionless actions to see if there would be any unforeseen
issues. Unfortunately, there are many other mechanisms which interfere
with doing this and it was not possible to circumvent them all. The
on-prem and ESS upgrade paths appear to work as expected, where after
migration everything behaves as it should but without versioned actions.

## Testing
This change can be tested by creating one or more roles with specific
privileges in various categories/solutions, assigning those roles to
different users, logging in as those users and validating that the
appropriate actions are either allowed or blocked.

Additionally, start ES & Kibana 8.8.0 and perform the steps above, then
stop Kibana 8.8.0, and start Kibana from this PR with
`elasticsearch.ignoreVersionMismatch` set to true. Re-check privileges
for the test roles. Check the master list of actions with `GET
/_security/privilege` and verify that the version number is not
included.

Relevant automated tests:
-
x-pack/plugins/security/server/authorization/authorization_service.test.ts
-
x-pack/plugins/security/server/authorization/privileges/privileges.test.ts
- x-pack/plugins/security/server/authorization/api_authorization.test.ts
- x-pack/plugins/security/server/authorization/app_authorization.test.ts
- x-pack/plugins/security/server/authorization/actions/actions.test.ts
- x-pack/plugins/security/server/authorization/actions/app.test.ts 
- x-pack/plugins/security/server/authorization/actions/cases.test.ts 
-
x-pack/plugins/security/server/authorization/actions/saved_object.test.ts
- x-pack/plugins/security/server/authorization/actions/space.test.ts 
- x-pack/plugins/security/server/authorization/actions/ui.test.ts    
- x-pack/plugins/security/server/authorization/actions/alerting.test.ts
- x-pack/plugins/security/server/authorization/actions/api.test.ts  
- x-pack/plugins/features/server/oss_features.test.ts   
-
x-pack/plugins/security/server/authorization/register_privileges_with_cluster.test.ts
- x-pack/plugins/security/server/authorization/check_privileges.test.ts
-
x-pack/plugins/security/server/authorization/privileges/feature_privilege_builder/alerting.test.ts
-
x-pack/plugins/security/server/authorization/privileges/feature_privilege_builder/cases.test.ts
- x-pack/plugins/fleet/jest.integration.config.js
-
x-pack/plugins/fleet/server/integration_tests/upgrade_package_install_version.test.ts
-
x-pack/plugins/fleet/server/integration_tests/reset_preconfiguration.test.ts
- x-pack/plugins/security/server/saved_objects/ensure_authorized.test.ts
-
x-pack/plugins/security/server/saved_objects/authorization_utils.test.ts
-
x-pack/plugins/security/server/saved_objects/saved_objects_security_extension.test.ts
- x-pack/plugins/security/server/plugin.test.ts

Flaky test runner:
https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/2205
2023-05-10 09:05:13 -04:00
.buildkite [functional tests] split fleet_api_integration config into smaller ones (#156407) 2023-05-03 16:26:58 +02:00
.ci Upgrade Node.js to 16.19.1 (#151527) 2023-02-21 10:40:59 -06:00
.github Enables preventing access to internal APIs (#156935) 2023-05-10 04:25:15 -07:00
api_docs [api-docs] 2023-05-10 Daily api_docs build (#157236) 2023-05-10 01:02:43 -04:00
config Enables preventing access to internal APIs (#156935) 2023-05-10 04:25:15 -07:00
dev_docs [performance] enable journey run against cloud deployments (#156720) 2023-05-08 23:35:43 -04:00
docs Adds documentation to clarify kibana-keystore behaviour (#157146) 2023-05-09 18:02:45 +02:00
examples [Tech Debt] Remove deprecated EuiLoadingContent (#156316) 2023-05-03 08:01:37 -06:00
kbn_pm chore(NA): exit early with link for docs when using kbn_pm on windows (#139745) 2023-02-10 15:38:29 +00:00
legacy_rfcs rename @elastic/* packages to @kbn/* (#138957) 2022-08-18 08:54:42 -07:00
licenses Elastic License 2.0 (#90099) 2021-02-03 18:12:39 -08:00
packages [Enterprise Search] Add Jira, Confluence, Sharepoint connectors (#157167) 2023-05-10 05:07:43 -07:00
plugins [dev/cli] ensure plugins/ and all watch source dirs exist (#78973) 2020-09-30 10:20:44 -07:00
scripts [QA] Fixup flaky test (#156373) 2023-05-08 11:32:53 +01:00
src Enables preventing access to internal APIs (#156935) 2023-05-10 04:25:15 -07:00
test [Enterprise Search] Add Jira, Confluence, Sharepoint connectors (#157167) 2023-05-10 05:07:43 -07:00
typings Wrap rison-node to improve types (#146649) 2022-12-01 08:33:56 -07:00
vars [ts] ts refs cache was removed, remove capture task 2022-10-28 14:27:18 -05:00
x-pack Removes Kibana version from authorization model to support zero-downtime upgrades (#156280) 2023-05-10 09:05:13 -04:00
.backportrc.json chore(NA): adds 8.8 into backportrc (#155894) 2023-04-26 21:13:00 +01:00
.bazelignore Bazel config maintenance (#135442) 2022-07-05 10:20:26 -05:00
.bazeliskversion chore(NA): upgrade bazelisk into v1.11.0 (#125070) 2022-02-09 20:43:57 +00:00
.bazelrc chore(NA): use new and more performant BuildBuddy servers (#130350) 2022-04-18 02:01:38 +01:00
.bazelrc.common Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
.bazelversion chore(NA): revert bazel upgrade for v5.2.0 (#135096) 2022-06-24 03:57:21 +01:00
.browserslistrc [browserslist] remove unnecessary browsers (#89186) 2021-01-25 16:30:18 -07:00
.editorconfig .editorconfig MDX files should follow the same rules as MD (#96942) 2021-04-13 11:40:42 -04:00
.eslintignore [NOTICE.txt] Fix notices for Gainsight and FullStory (#146004) 2023-01-13 14:49:43 +01:00
.eslintrc.js [SecuritySolution] Refactor security packages (#155365) 2023-04-26 05:05:36 -07:00
.gitattributes
.gitignore [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
.i18nrc.json [Lens] New random sampling shared plugin (#155068) 2023-05-02 10:30:46 +02:00
.node-version Upgrade Node.js to 16.19.1 (#151527) 2023-02-21 10:40:59 -06:00
.npmrc chore(NA): assure puppeteer_skip_chromium_download is applied across every yarn install situation (#88346) 2021-01-14 18:00:23 +00:00
.nvmrc Upgrade Node.js to 16.19.1 (#151527) 2023-02-21 10:40:59 -06:00
.prettierignore [dev] Replace sass-lint with stylelint (#86177) 2021-01-15 11:52:29 -06:00
.prettierrc
.stylelintignore chore(NA): stop grouping bazel out symlink folders (#96066) 2021-04-01 14:16:14 -05:00
.stylelintrc Bump stylelint to ^14 (#136693) 2022-07-20 10:11:00 -05:00
.telemetryrc.json [Telemetry] Fix telemetry-tools TS parser for packages (#149819) 2023-01-31 04:09:09 +03:00
.yarnrc chore(NA): manage npm dependencies within bazel (#92864) 2021-03-03 12:37:20 -05:00
BUILD.bazel Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
CODE_OF_CONDUCT.md Add CODE_OF_CONDUCT.md (#87439) 2021-02-23 09:01:51 +01:00
CONTRIBUTING.md Update doc slugs to improve analytic tracking, move to appropriate folders (#113630) 2021-10-04 13:36:45 -04:00
FAQ.md Fix small typos in the root md files (#134609) 2022-06-23 09:36:11 -05:00
fleet_packages.json [main] Sync bundled packages with Package Storage (#156083) 2023-04-28 09:35:19 -04:00
github_checks_reporter.json
Jenkinsfile [CI] Disable tracked branch jobs in Jenkins, enable reporting in Buildkite (#112604) 2021-09-21 11:31:15 -04:00
kibana.d.ts fix all violations 2022-04-16 01:37:30 -05:00
LICENSE.txt Elastic License 2.0 (#90099) 2021-02-03 18:12:39 -08:00
nav-kibana-dev.docnav.json Add March 2023 Newsletter link (#154248) 2023-04-06 16:04:06 -04:00
NOTICE.txt [FullStory] Update snippet (#153570) 2023-04-18 04:06:05 -07:00
package.json [Enterprise Search] update search-ui + remove searchable-fields config (#157209) 2023-05-09 13:59:45 -07:00
preinstall_check.js Elastic License 2.0 (#90099) 2021-02-03 18:12:39 -08:00
README.md [README] Update version Compatibility with Elasticsearch (#116040) 2022-01-10 10:31:21 -05:00
renovate.json Session view and k8s dashboard fixes (#154982) 2023-04-17 16:22:28 -07:00
RISK_MATRIX.mdx Add "Risk Matrix" section to the PR template (#100649) 2021-06-02 14:43:47 +02:00
SECURITY.md Add security policy to the Kibana repository (#85407) 2020-12-10 09:26:00 -05:00
STYLEGUIDE.mdx [styleguide] update path to scss theme (#140742) 2022-09-15 10:41:14 -04:00
tsconfig.base.json [ML] Package @kbn/ml-anomaly-utils (#155697) 2023-05-03 08:46:27 +02:00
tsconfig.browser.json
tsconfig.browser_bazel.json [build_ts_refs] improve caches, allow building a subset of projects (#107981) 2021-08-10 22:12:45 -07:00
tsconfig.json Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
TYPESCRIPT.md Fix small typos in the root md files (#134609) 2022-06-23 09:36:11 -05:00
versions.json chore(NA): update versions after v7.17.11 bump (#156371) 2023-05-02 19:58:31 +01:00
WORKSPACE.bazel Upgrade Node.js to 16.19.1 (#151527) 2023-02-21 10:40:59 -06:00
yarn.lock [Enterprise Search] update search-ui + remove searchable-fields config (#157209) 2023-05-09 13:59:45 -07:00

Kibana

Kibana is your window into the Elastic Stack. Specifically, it's a browser-based analytics and search dashboard for Elasticsearch.

Getting Started

If you just want to try Kibana out, check out the Elastic Stack Getting Started Page to give it a whirl.

If you're interested in diving a bit deeper and getting a taste of Kibana's capabilities, head over to the Kibana Getting Started Page.

Using a Kibana Release

If you want to use a Kibana release in production, give it a test run, or just play around:

Building and Running Kibana, and/or Contributing Code

You might want to build Kibana locally to contribute some code, test out the latest features, or try out an open PR:

Documentation

Visit Elastic.co for the full Kibana documentation.

For information about building the documentation, see the README in elastic/docs.

Version Compatibility with Elasticsearch

Ideally, you should be running Elasticsearch and Kibana with matching version numbers. If your Elasticsearch has an older version number or a newer major number than Kibana, then Kibana will fail to run. If Elasticsearch has a newer minor or patch number than Kibana, then the Kibana Server will log a warning.

Note: The version numbers below are only examples, meant to illustrate the relationships between different types of version numbers.

Situation Example Kibana version Example ES version Outcome
Versions are the same. 7.15.1 7.15.1 💚 OK
ES patch number is newer. 7.15.0 7.15.1 ⚠️ Logged warning
ES minor number is newer. 7.14.2 7.15.0 ⚠️ Logged warning
ES major number is newer. 7.15.1 8.0.0 🚫 Fatal error
ES patch number is older. 7.15.1 7.15.0 ⚠️ Logged warning
ES minor number is older. 7.15.1 7.14.2 🚫 Fatal error
ES major number is older. 8.0.0 7.15.1 🚫 Fatal error

Questions? Problems? Suggestions?

  • If you've found a bug or want to request a feature, please create a GitHub Issue. Please check to make sure someone else hasn't already created an issue for the same topic.
  • Need help using Kibana? Ask away on our Kibana Discuss Forum and a fellow community member or Elastic engineer will be glad to help you out.