Your window into the Elastic Stack
Find a file
Jeramy Soucy 7493ca9340
[7.17] Fixes bulk re-encryption for encrypted objects located in all spaces (#217625) (#218182)
# Backport

This will backport the following commits from `main` to `7.17`:
- [Fixes bulk re-encryption for encrypted objects located in all spaces
(#217625)](https://github.com/elastic/kibana/pull/217625)

<!--- Backport version: 9.6.6 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sorenlouv/backport)

<!--BACKPORT [{"author":{"name":"Jeramy
Soucy","email":"jeramy.soucy@elastic.co"},"sourceCommit":{"committedDate":"2025-04-14T19:20:38Z","message":"Fixes
bulk re-encryption for encrypted objects located in all spaces
(#217625)\n\nCloses #215534\n\n## Summary\n\nThe Encrypted Saved Objects
Key Rotation service makes use of the Saved\nObjects Bulk Update API to
re-encrypt objects. Bulk update supports an\noptional 'namespace'
parameter, per-object, defining the space to access\na specific object.
This allows objects outside of the current space to\nbe affected in the
update operation. The Key Rotation service leverages\nthis optional
parameter for each object to ensure that the re-encryption\noperation is
not limited to the current space.\n\nHowever, should a multi-namespace
encrypted object reside in all spaces,\nthe only value in the object's
namespaces property is the\n`ALL_NAMESPACES_STRING` constant '*'. As
this is not a valid single\nnamespace, the Bulk Update operation will
skip updating the object.\n\nPR resolves the issue by only providing a
object namespace for objects\nthat do not reside in all spaces. Objects
that reside in all spaces can\nbe accessed from the current space
without the need for an override.\n\nThis PR also updates unit tests to
account for this case.\n\n### Testing\n- [x] Set the encrypted saved
objects encryption key to a known value\n(either in kibana.yml or
kibana.dev.yml). For example:\n```\nxpack.encryptedSavedObjects:\n
encryptionKey: \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\" \n```\n- [x] Start
ES & Kibana\n- [x] You will need to set up a Fleet agent policy and
create a\nsynthetics location and monitor. The UI will guide you through
this when\nyou navigate to Observability -> Synthetics\n- [x] Create a
synthetics parameter, Observability -> Synthetics ->\nSettings, Global
Parameters tab. Use anything for a value, but be sure\nto check the
`Share across spaces` option.\n- [x] Update the kibana config to change
the encryption key, and use the\nold key as a decryption-only
key\n```\nxpack.encryptedSavedObjects:\n encryptionKey:
\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\" \n keyRotation:\n
decryptionOnlyKeys: [\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"] \n```\n- [x]
Wait for Kibana to restart\n- [x] Call the key rotation HTTP API as a
privileged user (I just used\nthe `elastic` superuser
account)\n\n`[you_kibana_endpoint]/api/encrypted_saved_objects/_rotate_key?type=synthetics-param`\n-
[x] Verify that 1 out of 1 objects were processed with 0 failures.\n-
[x] Repeat these steps from Main and note that 0 of 1
objects\nsucceeded, and there is 1 failure\n\n### Release Note\nFixes an
issue where the Saved Objects Rotate Encryption Key API would\nnot
affect sharable encrypted object types that exist in all
spaces.\n\n---------\n\nCo-authored-by: kibanamachine
<42973632+kibanamachine@users.noreply.github.com>","sha":"1176625dcaf8ec8ca4e4aa0b1324279ab0f2def3","branchLabelMapping":{"^v9.1.0$":"main","^v8.19.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:fix","Team:Security","backport:all-open","v9.1.0"],"title":"Fixes
bulk re-encryption for encrypted objects located in all
spaces","number":217625,"url":"https://github.com/elastic/kibana/pull/217625","mergeCommit":{"message":"Fixes
bulk re-encryption for encrypted objects located in all spaces
(#217625)\n\nCloses #215534\n\n## Summary\n\nThe Encrypted Saved Objects
Key Rotation service makes use of the Saved\nObjects Bulk Update API to
re-encrypt objects. Bulk update supports an\noptional 'namespace'
parameter, per-object, defining the space to access\na specific object.
This allows objects outside of the current space to\nbe affected in the
update operation. The Key Rotation service leverages\nthis optional
parameter for each object to ensure that the re-encryption\noperation is
not limited to the current space.\n\nHowever, should a multi-namespace
encrypted object reside in all spaces,\nthe only value in the object's
namespaces property is the\n`ALL_NAMESPACES_STRING` constant '*'. As
this is not a valid single\nnamespace, the Bulk Update operation will
skip updating the object.\n\nPR resolves the issue by only providing a
object namespace for objects\nthat do not reside in all spaces. Objects
that reside in all spaces can\nbe accessed from the current space
without the need for an override.\n\nThis PR also updates unit tests to
account for this case.\n\n### Testing\n- [x] Set the encrypted saved
objects encryption key to a known value\n(either in kibana.yml or
kibana.dev.yml). For example:\n```\nxpack.encryptedSavedObjects:\n
encryptionKey: \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\" \n```\n- [x] Start
ES & Kibana\n- [x] You will need to set up a Fleet agent policy and
create a\nsynthetics location and monitor. The UI will guide you through
this when\nyou navigate to Observability -> Synthetics\n- [x] Create a
synthetics parameter, Observability -> Synthetics ->\nSettings, Global
Parameters tab. Use anything for a value, but be sure\nto check the
`Share across spaces` option.\n- [x] Update the kibana config to change
the encryption key, and use the\nold key as a decryption-only
key\n```\nxpack.encryptedSavedObjects:\n encryptionKey:
\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\" \n keyRotation:\n
decryptionOnlyKeys: [\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"] \n```\n- [x]
Wait for Kibana to restart\n- [x] Call the key rotation HTTP API as a
privileged user (I just used\nthe `elastic` superuser
account)\n\n`[you_kibana_endpoint]/api/encrypted_saved_objects/_rotate_key?type=synthetics-param`\n-
[x] Verify that 1 out of 1 objects were processed with 0 failures.\n-
[x] Repeat these steps from Main and note that 0 of 1
objects\nsucceeded, and there is 1 failure\n\n### Release Note\nFixes an
issue where the Saved Objects Rotate Encryption Key API would\nnot
affect sharable encrypted object types that exist in all
spaces.\n\n---------\n\nCo-authored-by: kibanamachine
<42973632+kibanamachine@users.noreply.github.com>","sha":"1176625dcaf8ec8ca4e4aa0b1324279ab0f2def3"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v9.1.0","branchLabelMappingKey":"^v9.1.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/217625","number":217625,"mergeCommit":{"message":"Fixes
bulk re-encryption for encrypted objects located in all spaces
(#217625)\n\nCloses #215534\n\n## Summary\n\nThe Encrypted Saved Objects
Key Rotation service makes use of the Saved\nObjects Bulk Update API to
re-encrypt objects. Bulk update supports an\noptional 'namespace'
parameter, per-object, defining the space to access\na specific object.
This allows objects outside of the current space to\nbe affected in the
update operation. The Key Rotation service leverages\nthis optional
parameter for each object to ensure that the re-encryption\noperation is
not limited to the current space.\n\nHowever, should a multi-namespace
encrypted object reside in all spaces,\nthe only value in the object's
namespaces property is the\n`ALL_NAMESPACES_STRING` constant '*'. As
this is not a valid single\nnamespace, the Bulk Update operation will
skip updating the object.\n\nPR resolves the issue by only providing a
object namespace for objects\nthat do not reside in all spaces. Objects
that reside in all spaces can\nbe accessed from the current space
without the need for an override.\n\nThis PR also updates unit tests to
account for this case.\n\n### Testing\n- [x] Set the encrypted saved
objects encryption key to a known value\n(either in kibana.yml or
kibana.dev.yml). For example:\n```\nxpack.encryptedSavedObjects:\n
encryptionKey: \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\" \n```\n- [x] Start
ES & Kibana\n- [x] You will need to set up a Fleet agent policy and
create a\nsynthetics location and monitor. The UI will guide you through
this when\nyou navigate to Observability -> Synthetics\n- [x] Create a
synthetics parameter, Observability -> Synthetics ->\nSettings, Global
Parameters tab. Use anything for a value, but be sure\nto check the
`Share across spaces` option.\n- [x] Update the kibana config to change
the encryption key, and use the\nold key as a decryption-only
key\n```\nxpack.encryptedSavedObjects:\n encryptionKey:
\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\" \n keyRotation:\n
decryptionOnlyKeys: [\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"] \n```\n- [x]
Wait for Kibana to restart\n- [x] Call the key rotation HTTP API as a
privileged user (I just used\nthe `elastic` superuser
account)\n\n`[you_kibana_endpoint]/api/encrypted_saved_objects/_rotate_key?type=synthetics-param`\n-
[x] Verify that 1 out of 1 objects were processed with 0 failures.\n-
[x] Repeat these steps from Main and note that 0 of 1
objects\nsucceeded, and there is 1 failure\n\n### Release Note\nFixes an
issue where the Saved Objects Rotate Encryption Key API would\nnot
affect sharable encrypted object types that exist in all
spaces.\n\n---------\n\nCo-authored-by: kibanamachine
<42973632+kibanamachine@users.noreply.github.com>","sha":"1176625dcaf8ec8ca4e4aa0b1324279ab0f2def3"}}]}]
BACKPORT-->
2025-04-15 22:02:50 +02:00
.buildkite [7.17] [ci] More info to test annotation failure logging (#215515) (#215780) 2025-03-24 23:11:27 +02:00
.ci [7.17] Upgrade Node.js to 20.18.2 (#207431) (#207896) 2025-01-28 10:19:55 +01:00
.devcontainer [7.17] Sync devcontainer with main (#202853) 2024-12-03 22:28:42 -08:00
.github [7.17] Update actions/checkout action to v4.2.2 (main) (#195305) (#205321) 2024-12-31 11:48:56 -05:00
api_docs remove unused enrollment path (#117063) (#117201) 2021-11-05 21:18:05 +00:00
config [7.17] [node] Enable openssl legacy provider (#165147) 2023-08-30 17:46:38 -05:00
dev_docs [docs] document yarn.lock backport rules (#132883) (#132947) 2022-05-25 09:41:37 -07:00
docs [7.17] [DOCS] Remove Upgrade Assistant add default field API (#217264) (#217424) 2025-04-08 11:07:54 -04:00
examples [7.17] [Dashboard][Embeddable] Create Explicit Diffing System (#121241) (#124293) 2022-02-02 12:35:57 -07:00
licenses [7.x] Elastic License 2.0 (#90192) 2021-02-03 18:39:13 -08:00
packages [7.17] Update dependency lru-cache to ^11.1.0 (main) (#216517) (#216829) 2025-04-05 00:35:25 +01:00
plugins [7.x] [dev/cli] ensure plugins/ and all watch source dirs exist (#78973) (#78998) 2020-09-30 11:53:12 -07:00
rfcs Updates Github link references from master to main (#116789) (#116792) 2021-10-29 10:08:30 -07:00
scripts [7.17] Add node scripts/yarn_deduplicate check (#169165) (#203043) 2024-12-05 13:35:34 -08:00
src [7.17] [build] Use docker hub to download ubi (#217322) (#217774) 2025-04-10 09:06:19 -05:00
test skip failing test suite (#213646) 2025-04-10 22:12:02 +02:00
typings [7.17] Upgrade Typescript to 4.3.5 (#104470) (#158788) 2023-06-01 02:35:54 +01:00
vars adds lists plugin to security solution cypress tests execution (#116442) (#116494) 2021-10-27 23:42:10 +01:00
x-pack [7.17] Fixes bulk re-encryption for encrypted objects located in all spaces (#217625) (#218182) 2025-04-15 22:02:50 +02:00
.backportrc.json chore(NA): adds backport config for 8.1.0 bump (#116431) (#116499) 2021-10-27 16:35:43 -04:00
.bazelignore chore(NA): stop grouping bazel out symlink folders (#96066) (#96085) 2021-04-01 17:34:54 -04:00
.bazeliskversion Development and build support for ARM based Apple devices (#114879) (#115663) 2021-10-19 20:34:47 -04:00
.bazelrc chore(NA): use new and more performant BuildBuddy servers (#130350) (#130441) 2022-04-18 10:24:38 -07:00
.bazelrc.common [bazel] Setup remote cache settings on bootstrap (#121445) (#123303) 2022-01-18 15:17:11 -07:00
.bazelversion Development and build support for ARM based Apple devices (#114879) (#115663) 2021-10-19 20:34:47 -04:00
.browserslistrc [7.x] [browserslist] remove unnecessary browsers (#89186) (#89250) 2021-01-25 18:22:34 -07:00
.editorconfig .editorconfig MDX files should follow the same rules as MD (#96942) (#97079) 2021-04-14 05:34:57 -04:00
.eslintignore [7.17] [FullStory] Update snippet (#153570) (#158805) 2023-06-01 05:28:32 -07:00
.eslintrc.js [7.17] chore(NA): upgrade typescript-eslint packages to v5.54.0 (#163895) 2023-08-17 00:47:54 +01:00
.fossa.yml Adds FOSSA CLI configuration file (#70137) (#70614) 2020-07-02 14:53:42 -07:00
.gitattributes [7.x] [canvas] Color fixes + Storybook 5 (#34075) (#34369) 2019-04-02 16:35:28 -05:00
.gitignore [7.17] Sync devcontainer with main (#202853) 2024-12-03 22:28:42 -08:00
.i18nrc.json [MetricVis] Move the expression function and renderer to a separate plugin. (#113427) (#114384) 2021-10-08 04:28:29 -04:00
.node-version [7.17] Upgrade Node.js to 20.18.2 (#207431) (#207896) 2025-01-28 10:19:55 +01:00
.npmrc chore(NA): assure puppeteer_skip_chromium_download is applied across every yarn install situation (#88346) (#88379) 2021-01-14 20:32:48 +00:00
.nvmrc [7.17] Upgrade Node.js to 20.18.2 (#207431) (#207896) 2025-01-28 10:19:55 +01:00
.prettierignore [7.x] [dev] Replace sass-lint with stylelint (#86177) (#88498) 2021-01-15 14:36:34 -06:00
.prettierrc Increase prettier line width to 100 (#20535) 2018-07-09 22:50:37 +02:00
.puppeteerrc [7.17] Add .puppeteerrc (#179847) (#179944) 2024-04-03 12:46:36 -05:00
.stylelintignore chore(NA): stop grouping bazel out symlink folders (#96066) (#96085) 2021-04-01 17:34:54 -04:00
.stylelintrc Amsterdam helpers (#93701) (#94323) 2021-03-10 13:36:11 -05:00
.telemetryrc.json [Usage collection] Collect non-default kibana configs (#97368) (#97653) 2021-04-20 13:04:54 -04:00
.yarnrc chore(NA): manage npm dependencies within bazel (#92864) (#93474) 2021-03-03 15:21:20 -05:00
api-documenter.json Normalize EOL symbol in platform docs (#56021) (#56041) 2020-01-27 21:04:26 +01:00
BUILD.bazel [build_ts_refs] improve caches, allow building a subset of projects (#107981) (#108139) 2021-08-11 05:08:54 -04:00
CONTRIBUTING.md Update doc slugs to improve analytic tracking, move to appropriate folders (#113630) (#113862) 2021-10-04 20:43:23 -04:00
FAQ.md propose language changes (#10709) 2017-03-05 12:10:32 -05:00
github_checks_reporter.json implementing github checks - second attempt (#35757) (#35906) 2019-05-01 19:53:02 -05:00
Jenkinsfile [CI] Disable tracked branch jobs in Jenkins, enable reporting in Buildkite (#112604) (#112684) 2021-09-21 13:57:58 -04:00
kibana.d.ts [7.x] Remove /src/legacy (#95510) (#96283) 2021-04-06 06:08:31 -04:00
LICENSE.txt [7.x] Elastic License 2.0 (#90192) 2021-02-03 18:39:13 -08:00
NOTICE.txt [7.17] Upgrading APM Node (#205440) (#205576) 2025-01-07 21:59:31 -05:00
package.json Update dependency selenium-webdriver to ^4.31.0 (7.17) (#216388) 2025-04-14 23:41:50 +02:00
preinstall_check.js [7.17] Always throw error objects - never strings (#171498) (#171546) 2023-11-20 10:10:55 -07:00
README.md STYLEGUIDE reference .md => .mdx (#107440) (#107456) 2021-08-02 15:17:17 -04:00
STYLEGUIDE.mdx Updates Github link references from master to main (#116789) (#116792) 2021-10-29 10:08:30 -07:00
tsconfig.base.json [7.17] [TypeScript] Upgrade to 4.5.3 (#120812) (#158883) 2023-06-02 00:39:23 +01:00
tsconfig.bazel.json [build_ts_refs] improve caches, allow building a subset of projects (#107981) (#108139) 2021-08-11 05:08:54 -04:00
tsconfig.browser.json Introduce TS incremental builds & move src/test_utils to TS project (#76082) (#76632) 2020-09-03 23:02:05 +02:00
tsconfig.browser_bazel.json [build_ts_refs] improve caches, allow building a subset of projects (#107981) (#108139) 2021-08-11 05:08:54 -04:00
tsconfig.json [build_ts_refs] improve caches, allow building a subset of projects (#107981) (#108139) 2021-08-11 05:08:54 -04:00
tsconfig.types.json [build_ts_refs] improve caches, allow building a subset of projects (#107981) (#108139) 2021-08-11 05:08:54 -04:00
TYPESCRIPT.md [7.x] Fixed grammar (#74725) (#74745) 2020-08-11 13:21:03 -04:00
WORKSPACE.bazel [7.17] Upgrade Node.js to 20.18.2 (#207431) (#207896) 2025-01-28 10:19:55 +01:00
yarn.lock Update dependency selenium-webdriver to ^4.31.0 (7.17) (#216388) 2025-04-14 23:41:50 +02: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. 5.1.2 5.1.2 💚 OK
ES patch number is newer. 5.1.2 5.1.5 ⚠️ Logged warning
ES minor number is newer. 5.1.2 5.5.0 ⚠️ Logged warning
ES major number is newer. 5.1.2 6.0.0 🚫 Fatal error
ES patch number is older. 5.1.2 5.1.0 ⚠️ Logged warning
ES minor number is older. 5.1.2 5.0.0 🚫 Fatal error
ES major number is older. 5.1.2 4.0.0 🚫 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.