Skip to content

[Write-restricted dashboards] Update user profile retrieval for getShouldAddAccessControl#255065

Merged
jeramysoucy merged 9 commits intoelastic:mainfrom
jeramysoucy:poc-fix-wrd-ui-profile-id-retrieval
Mar 11, 2026
Merged

[Write-restricted dashboards] Update user profile retrieval for getShouldAddAccessControl#255065
jeramysoucy merged 9 commits intoelastic:mainfrom
jeramysoucy:poc-fix-wrd-ui-profile-id-retrieval

Conversation

@jeramysoucy
Copy link
Copy Markdown
Contributor

@jeramysoucy jeramysoucy commented Feb 26, 2026

Summary

This PR changes how the dashboard save modal determines if access control metadata should be added to a dashboard. Previously it used the user profile service, however, since #249839, the getCurrent function now attempts to retrieve the user profile when the incoming request is authenticated via Basic or API key. This resulted in adding the access control metadata when authenticated to the UI via a proxy or the anonymous authc provider.

The Saved Object Repository does not use the user profiles service to determine the current user, but rather the authentication service, which does not retrieve the user profile when authenticated via API key. This caused errors when creating dashboards in the UI when authenticated via a proxy or the anonymous authc provider - the UI would add the access control meta data and the SO repository would reject the operation due to lacking a profile ID for the owner field.

This PR implements a short term solution by switching to the authentication service in the dashboard save modal - matching the mechanism of checking for an active profile ID in the SO repository.

A longer-term solution might be different, should we want to support creating dashboards with access control via API key. In this case, we would need to modify the SO repository code (actually, the security extension), if feasible, to use the user profile service. However, his may introduce too much overhead.

Testing

The easiest way to test this fix is to configure the anonymous authentication provider. When users are authenticated anonymously they do not activate a user profile.

Checklist

Check the PR satisfies following conditions.

Reviewers should verify this PR satisfies this list as well.

  • Any text added follows EUI's writing guidelines, uses sentence case text and includes i18n support
  • Documentation was added for features that require explanation or tutorials
  • Unit or functional tests were updated or added to match the most common scenarios
  • If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the docker list
  • This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The release_note:breaking label should be applied in these situations.
  • Flaky Test Runner was used on any tests changed
  • The PR description includes the appropriate Release Notes section, and the correct release_note:* label is applied per the guidelines
  • Review the backport guidelines and apply applicable backport:* labels.

Identify risks

Does this PR introduce any risks? For example, consider risks like hard to test bugs, performance regression, potential of data loss.

Describe the risk, its severity, and mitigation for each identified risk. Invite stakeholders and evaluate how to proceed before merging.

Release note

Fixes an issue where saving a dashboard included access control features when a user profile, which is required for access control, was not available.

@jeramysoucy jeramysoucy added Feature:Dashboard Dashboard related features Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas t// labels Feb 26, 2026
@jeramysoucy jeramysoucy marked this pull request as ready for review March 10, 2026 08:59
@jeramysoucy jeramysoucy requested review from a team and kibanamachine as code owners March 10, 2026 08:59
@elasticmachine
Copy link
Copy Markdown
Contributor

Pinging @elastic/kibana-presentation (Team:Presentation)

@jeramysoucy jeramysoucy changed the title [POC] [Write-restricted dashboards] Update user profile retrieval for getShouldAddAccessControl [Write-restricted dashboards] Update user profile retrieval for getShouldAddAccessControl Mar 10, 2026
@jeramysoucy jeramysoucy self-assigned this Mar 10, 2026
Copy link
Copy Markdown
Contributor

@dmlemeshko dmlemeshko left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

src/platform/packages/shared/kbn-scout/src/servers/configs/config_sets/anonymous_authc/stateful/classic.stateful.config.ts LGTM

@jeramysoucy jeramysoucy added v9.4.0 release_note:fix backport:version Backport to applied version labels v9.3.2 Team:Security Platform Security: Auth, Users, Roles, Spaces, Audit Logging, etc t// and removed Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas t// labels Mar 10, 2026
@kibanamachine kibanamachine added the Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas t// label Mar 10, 2026
@elasticmachine
Copy link
Copy Markdown
Contributor

Pinging @elastic/kibana-security (Team:Security)

@jeramysoucy jeramysoucy removed the Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas t// label Mar 10, 2026
@kibanamachine kibanamachine added the Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas t// label Mar 10, 2026
@jeramysoucy jeramysoucy removed the Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas t// label Mar 10, 2026
@kibanamachine kibanamachine added the Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas t// label Mar 10, 2026
@jeramysoucy jeramysoucy added loe:small Small Level of Effort impact:low Addressing this issue will have a low level of impact on the quality/strength of our product. labels Mar 10, 2026
@elastic-vault-github-plugin-prod elastic-vault-github-plugin-prod bot requested a review from a team as a code owner March 10, 2026 10:14
Copy link
Copy Markdown
Contributor

@nreese nreese left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

kibana-presentation changes LGTM
code review only

@elasticmachine
Copy link
Copy Markdown
Contributor

elasticmachine commented Mar 10, 2026

💔 Build Failed

Failed CI Steps

Test Failures

  • [job] [logs] FTR Configs #8 / @ess @serverless @skipInServerlessMKI Install prebuilt rules from EPR should install prebuilt rules from the package storage
  • [job] [logs] FTR Configs #8 / @ess @serverless @skipInServerlessMKI Install prebuilt rules from EPR should install prebuilt rules from the package storage
  • [job] [logs] Scout: [ observability / synthetics ] plugin / local-stateful-classic - DefaultStatusAlert - creates default alert, triggers on down status, and recovers

Metrics [docs]

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
dashboard 838.3KB 838.3KB +21.0B

History

cc @jeramysoucy

@jeramysoucy jeramysoucy merged commit 009aea1 into elastic:main Mar 11, 2026
18 checks passed
@kibanamachine
Copy link
Copy Markdown
Contributor

Starting backport for target branches: 9.3

https://github.com/elastic/kibana/actions/runs/22943864384

kibanamachine added a commit to kibanamachine/kibana that referenced this pull request Mar 11, 2026
…ouldAddAccessControl (elastic#255065)

## Summary

This PR changes how the dashboard save modal determines if access
control metadata should be added to a dashboard. Previously it used the
user profile service, however, since
elastic#249839, the getCurrent function
now attempts to retrieve the user profile when the incoming request is
authenticated via Basic or API key. This resulted in adding the access
control metadata when authenticated to the UI via a proxy or the
anonymous authc provider.

The Saved Object Repository does not use the user profiles service to
determine the current user, but rather the authentication service, which
does not retrieve the user profile when authenticated via API key. This
caused errors when creating dashboards in the UI when authenticated via
a proxy or the anonymous authc provider - the UI would add the access
control meta data and the SO repository would reject the operation due
to lacking a profile ID for the owner field.

This PR implements a short term solution by switching to the
authentication service in the dashboard save modal - matching the
mechanism of checking for an active profile ID in the SO repository.

A longer-term solution might be different, should we want to support
creating dashboards with access control via API key. In this case, we
would need to modify the SO repository code (actually, the security
extension), if feasible, to use the user profile service. However, his
may introduce too much overhead.

### Testing

The easiest way to test this fix is to configure the anonymous
authentication provider. When users are authenticated anonymously they
do not activate a user profile.

### Checklist

Check the PR satisfies following conditions.

Reviewers should verify this PR satisfies this list as well.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [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
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] 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)
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

### Identify risks

Does this PR introduce any risks? For example, consider risks like hard
to test bugs, performance regression, potential of data loss.

Describe the risk, its severity, and mitigation for each identified
risk. Invite stakeholders and evaluate how to proceed before merging.

- [ ] [See some risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)
- [ ] ...

## Release note
Fixes an issue where saving a dashboard included access control features
when a user profile, which is required for access control, was not
available.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
(cherry picked from commit 009aea1)
@kibanamachine
Copy link
Copy Markdown
Contributor

💚 All backports created successfully

Status Branch Result
9.3

Note: Successful backport PRs will be merged automatically after passing CI.

Questions ?

Please refer to the Backport tool documentation

kibanamachine added a commit that referenced this pull request Mar 11, 2026
… getShouldAddAccessControl (#255065) (#257050)

# Backport

This will backport the following commits from `main` to `9.3`:
- [[Write-restricted dashboards] Update user profile retrieval for
getShouldAddAccessControl
(#255065)](#255065)

<!--- 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":"2026-03-11T08:37:12Z","message":"[Write-restricted
dashboards] Update user profile retrieval for getShouldAddAccessControl
(#255065)\n\n## Summary\n\nThis PR changes how the dashboard save modal
determines if access\ncontrol metadata should be added to a dashboard.
Previously it used the\nuser profile service, however,
since\nhttps://github.com//pull/249839, the getCurrent
function\nnow attempts to retrieve the user profile when the incoming
request is\nauthenticated via Basic or API key. This resulted in adding
the access\ncontrol metadata when authenticated to the UI via a proxy or
the\nanonymous authc provider.\n\nThe Saved Object Repository does not
use the user profiles service to\ndetermine the current user, but rather
the authentication service, which\ndoes not retrieve the user profile
when authenticated via API key. This\ncaused errors when creating
dashboards in the UI when authenticated via\na proxy or the anonymous
authc provider - the UI would add the access\ncontrol meta data and the
SO repository would reject the operation due\nto lacking a profile ID
for the owner field.\n\nThis PR implements a short term solution by
switching to the\nauthentication service in the dashboard save modal -
matching the\nmechanism of checking for an active profile ID in the SO
repository.\n\nA longer-term solution might be different, should we want
to support\ncreating dashboards with access control via API key. In this
case, we\nwould need to modify the SO repository code (actually, the
security\nextension), if feasible, to use the user profile service.
However, his\nmay introduce too much overhead.\n\n### Testing\n\nThe
easiest way to test this fix is to configure the
anonymous\nauthentication provider. When users are authenticated
anonymously they\ndo not activate a user profile.\n\n\n###
Checklist\n\nCheck the PR satisfies following conditions. \n\nReviewers
should verify this PR satisfies this list as well.\n\n- [ ] Any text
added follows [EUI's
writing\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\nsentence case text and includes
[i18n\nsupport](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)\n-
[
]\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\nwas
added for features that require explanation or tutorials\n- [X] [Unit or
functional\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\nwere
updated or added to match the most common scenarios\n- [ ] If a plugin
configuration key changed, check if it needs to be\nallowlisted in the
cloud and added to the
[docker\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\n-
[ ] This was checked for breaking HTTP API changes, and any
breaking\nchanges have been approved by the breaking-change committee.
The\n`release_note:breaking` label should be applied in these
situations.\n- [ ] [Flaky
Test\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\nused on any tests changed\n- [ ] The PR description includes the
appropriate Release Notes section,\nand the correct `release_note:*`
label is applied per
the\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\n-
[ ] Review the
[backport\nguidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)\nand
apply applicable `backport:*` labels.\n\n### Identify risks\n\nDoes this
PR introduce any risks? For example, consider risks like hard\nto test
bugs, performance regression, potential of data loss.\n\nDescribe the
risk, its severity, and mitigation for each identified\nrisk. Invite
stakeholders and evaluate how to proceed before merging.\n\n- [ ] [See
some
risk\nexamples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)\n-
[ ] ...\n\n## Release note\nFixes an issue where saving a dashboard
included access control features\nwhen a user profile, which is required
for access control, was not\navailable.\n\n---------\n\nCo-authored-by:
kibanamachine
<42973632+kibanamachine@users.noreply.github.com>","sha":"009aea16e601c1dad4a3f1b55754bd239fb4b65d","branchLabelMapping":{"^v9.4.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["Feature:Dashboard","release_note:fix","Team:Security","Team:Presentation","loe:small","impact:low","backport:version","v9.4.0","v9.3.2"],"title":"[Write-restricted
dashboards] Update user profile retrieval for
getShouldAddAccessControl","number":255065,"url":"https://github.com/elastic/kibana/pull/255065","mergeCommit":{"message":"[Write-restricted
dashboards] Update user profile retrieval for getShouldAddAccessControl
(#255065)\n\n## Summary\n\nThis PR changes how the dashboard save modal
determines if access\ncontrol metadata should be added to a dashboard.
Previously it used the\nuser profile service, however,
since\nhttps://github.com//pull/249839, the getCurrent
function\nnow attempts to retrieve the user profile when the incoming
request is\nauthenticated via Basic or API key. This resulted in adding
the access\ncontrol metadata when authenticated to the UI via a proxy or
the\nanonymous authc provider.\n\nThe Saved Object Repository does not
use the user profiles service to\ndetermine the current user, but rather
the authentication service, which\ndoes not retrieve the user profile
when authenticated via API key. This\ncaused errors when creating
dashboards in the UI when authenticated via\na proxy or the anonymous
authc provider - the UI would add the access\ncontrol meta data and the
SO repository would reject the operation due\nto lacking a profile ID
for the owner field.\n\nThis PR implements a short term solution by
switching to the\nauthentication service in the dashboard save modal -
matching the\nmechanism of checking for an active profile ID in the SO
repository.\n\nA longer-term solution might be different, should we want
to support\ncreating dashboards with access control via API key. In this
case, we\nwould need to modify the SO repository code (actually, the
security\nextension), if feasible, to use the user profile service.
However, his\nmay introduce too much overhead.\n\n### Testing\n\nThe
easiest way to test this fix is to configure the
anonymous\nauthentication provider. When users are authenticated
anonymously they\ndo not activate a user profile.\n\n\n###
Checklist\n\nCheck the PR satisfies following conditions. \n\nReviewers
should verify this PR satisfies this list as well.\n\n- [ ] Any text
added follows [EUI's
writing\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\nsentence case text and includes
[i18n\nsupport](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)\n-
[
]\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\nwas
added for features that require explanation or tutorials\n- [X] [Unit or
functional\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\nwere
updated or added to match the most common scenarios\n- [ ] If a plugin
configuration key changed, check if it needs to be\nallowlisted in the
cloud and added to the
[docker\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\n-
[ ] This was checked for breaking HTTP API changes, and any
breaking\nchanges have been approved by the breaking-change committee.
The\n`release_note:breaking` label should be applied in these
situations.\n- [ ] [Flaky
Test\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\nused on any tests changed\n- [ ] The PR description includes the
appropriate Release Notes section,\nand the correct `release_note:*`
label is applied per
the\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\n-
[ ] Review the
[backport\nguidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)\nand
apply applicable `backport:*` labels.\n\n### Identify risks\n\nDoes this
PR introduce any risks? For example, consider risks like hard\nto test
bugs, performance regression, potential of data loss.\n\nDescribe the
risk, its severity, and mitigation for each identified\nrisk. Invite
stakeholders and evaluate how to proceed before merging.\n\n- [ ] [See
some
risk\nexamples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)\n-
[ ] ...\n\n## Release note\nFixes an issue where saving a dashboard
included access control features\nwhen a user profile, which is required
for access control, was not\navailable.\n\n---------\n\nCo-authored-by:
kibanamachine
<42973632+kibanamachine@users.noreply.github.com>","sha":"009aea16e601c1dad4a3f1b55754bd239fb4b65d"}},"sourceBranch":"main","suggestedTargetBranches":["9.3"],"targetPullRequestStates":[{"branch":"main","label":"v9.4.0","branchLabelMappingKey":"^v9.4.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/255065","number":255065,"mergeCommit":{"message":"[Write-restricted
dashboards] Update user profile retrieval for getShouldAddAccessControl
(#255065)\n\n## Summary\n\nThis PR changes how the dashboard save modal
determines if access\ncontrol metadata should be added to a dashboard.
Previously it used the\nuser profile service, however,
since\nhttps://github.com//pull/249839, the getCurrent
function\nnow attempts to retrieve the user profile when the incoming
request is\nauthenticated via Basic or API key. This resulted in adding
the access\ncontrol metadata when authenticated to the UI via a proxy or
the\nanonymous authc provider.\n\nThe Saved Object Repository does not
use the user profiles service to\ndetermine the current user, but rather
the authentication service, which\ndoes not retrieve the user profile
when authenticated via API key. This\ncaused errors when creating
dashboards in the UI when authenticated via\na proxy or the anonymous
authc provider - the UI would add the access\ncontrol meta data and the
SO repository would reject the operation due\nto lacking a profile ID
for the owner field.\n\nThis PR implements a short term solution by
switching to the\nauthentication service in the dashboard save modal -
matching the\nmechanism of checking for an active profile ID in the SO
repository.\n\nA longer-term solution might be different, should we want
to support\ncreating dashboards with access control via API key. In this
case, we\nwould need to modify the SO repository code (actually, the
security\nextension), if feasible, to use the user profile service.
However, his\nmay introduce too much overhead.\n\n### Testing\n\nThe
easiest way to test this fix is to configure the
anonymous\nauthentication provider. When users are authenticated
anonymously they\ndo not activate a user profile.\n\n\n###
Checklist\n\nCheck the PR satisfies following conditions. \n\nReviewers
should verify this PR satisfies this list as well.\n\n- [ ] Any text
added follows [EUI's
writing\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\nsentence case text and includes
[i18n\nsupport](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)\n-
[
]\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\nwas
added for features that require explanation or tutorials\n- [X] [Unit or
functional\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\nwere
updated or added to match the most common scenarios\n- [ ] If a plugin
configuration key changed, check if it needs to be\nallowlisted in the
cloud and added to the
[docker\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\n-
[ ] This was checked for breaking HTTP API changes, and any
breaking\nchanges have been approved by the breaking-change committee.
The\n`release_note:breaking` label should be applied in these
situations.\n- [ ] [Flaky
Test\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\nused on any tests changed\n- [ ] The PR description includes the
appropriate Release Notes section,\nand the correct `release_note:*`
label is applied per
the\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\n-
[ ] Review the
[backport\nguidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)\nand
apply applicable `backport:*` labels.\n\n### Identify risks\n\nDoes this
PR introduce any risks? For example, consider risks like hard\nto test
bugs, performance regression, potential of data loss.\n\nDescribe the
risk, its severity, and mitigation for each identified\nrisk. Invite
stakeholders and evaluate how to proceed before merging.\n\n- [ ] [See
some
risk\nexamples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)\n-
[ ] ...\n\n## Release note\nFixes an issue where saving a dashboard
included access control features\nwhen a user profile, which is required
for access control, was not\navailable.\n\n---------\n\nCo-authored-by:
kibanamachine
<42973632+kibanamachine@users.noreply.github.com>","sha":"009aea16e601c1dad4a3f1b55754bd239fb4b65d"}},{"branch":"9.3","label":"v9.3.2","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"}]}]
BACKPORT-->

---------

Co-authored-by: Jeramy Soucy <jeramy.soucy@elastic.co>
mbondyra added a commit to mbondyra/kibana that referenced this pull request Mar 11, 2026
…e_fix

* commit '565f7545c422192218b803874fbdf93e8d8f08ee': (27 commits)
  [Lens API] ESQL schema for XY separately for Agent and some small token optimizations (elastic#256885)
  Fix "Accessing resource attributes before async attributes settled" telemetry error (elastic#256880)
  [Security Solution][Attacks/Alerts][Attacks page][Table section] Preserver "Sort by" state on Attacks page (elastic#256717) (elastic#256795)
  [APM] Improve redirect with default date range guard (elastic#256887)
  [Security Solution][Attacks/Alerts][Attacks page][Table section] Add assignees avatars to the group component (elastic#250126) (elastic#256901)
  [Docs] add xpack.alerting.rules.maxScheduledPerMinute setting description (elastic#257041)
  [SO] Fix non-deterministic ordering in nested find API integration tests (elastic#256447)
  [Write-restricted dashboards] Update user profile retrieval for getShouldAddAccessControl (elastic#255065)
  [One Workflow] Add Scout API test scaffold and execution tests (elastic#256300)
  [Fleet] add use_apm if dynamic_signal_types are enabled (elastic#256429)
  [Fleet] ignore data streams starting with `.` in Fleet API (elastic#256625)
  [ES|QL] METRICS_INFO support: columns_after & summary (elastic#256758)
  [Agent Builder] Agent plugins: initial installation support (elastic#256478)
  [Streams] Add field descriptions and documentation-only field overrides (elastic#255136)
  [api-docs] 2026-03-11 Daily api_docs build (elastic#257023)
  [Security Solution] fix alerts page infinite loading state due to data view error (elastic#256983)
  [Logging] Add `service.*` global fields (elastic#256878)
  [Canvas] Apply embeddable transforms to embeddable elements (elastic#252191)
  [table_list_view_table] stabilize jest test (elastic#254991)
  [Obs AI] get_index_info: add unit tests (elastic#256802)
  ...
sorenlouv pushed a commit that referenced this pull request Mar 17, 2026
…ouldAddAccessControl (#255065)

## Summary

This PR changes how the dashboard save modal determines if access
control metadata should be added to a dashboard. Previously it used the
user profile service, however, since
#249839, the getCurrent function
now attempts to retrieve the user profile when the incoming request is
authenticated via Basic or API key. This resulted in adding the access
control metadata when authenticated to the UI via a proxy or the
anonymous authc provider.

The Saved Object Repository does not use the user profiles service to
determine the current user, but rather the authentication service, which
does not retrieve the user profile when authenticated via API key. This
caused errors when creating dashboards in the UI when authenticated via
a proxy or the anonymous authc provider - the UI would add the access
control meta data and the SO repository would reject the operation due
to lacking a profile ID for the owner field.

This PR implements a short term solution by switching to the
authentication service in the dashboard save modal - matching the
mechanism of checking for an active profile ID in the SO repository.

A longer-term solution might be different, should we want to support
creating dashboards with access control via API key. In this case, we
would need to modify the SO repository code (actually, the security
extension), if feasible, to use the user profile service. However, his
may introduce too much overhead.

### Testing

The easiest way to test this fix is to configure the anonymous
authentication provider. When users are authenticated anonymously they
do not activate a user profile.


### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [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
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] 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)
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

### Identify risks

Does this PR introduce any risks? For example, consider risks like hard
to test bugs, performance regression, potential of data loss.

Describe the risk, its severity, and mitigation for each identified
risk. Invite stakeholders and evaluate how to proceed before merging.

- [ ] [See some risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)
- [ ] ...

## Release note
Fixes an issue where saving a dashboard included access control features
when a user profile, which is required for access control, was not
available.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport:version Backport to applied version labels Feature:Dashboard Dashboard related features impact:low Addressing this issue will have a low level of impact on the quality/strength of our product. loe:small Small Level of Effort release_note:fix Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas t// Team:Security Platform Security: Auth, Users, Roles, Spaces, Audit Logging, etc t// v9.3.2 v9.4.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants