Skip to content

Fix error message when changing the password for a user in the file realm #127621

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

ankit--sethi
Copy link
Contributor

@ankit--sethi ankit--sethi commented May 1, 2025

This PR addresses #113535 - a confusing error message when the user attempts to update the password for the elastic superuser in a cloud deployment.

At the heart of the issue is the difference in how the elastic superuser is implemented on self-hosted deployments vs. managed cloud deployments. Elasticsearch has two distinct security realms: file and native. On a self-hosted deployment, the elastic superuser is represented as a document in the .security index (placing it in the native realm), whereas in a cloud deployment elastic is defined in the ES_PATH_CONF/users and ES_PATH_CONF/user_roles files installed on each node in the cluster (placing it in the file realm).

The TransportChangePasswordAction impl is designed to update the password for users in the native realm specifically, and on cloud an attempt to change the password for elastic using the Change Password API fails with the error that the user does not exist. This is misleading since the user exists but is simply coming from the file realm.

The solution here leverages fileUserPasswdStore.userExists to do a low cost check on whether the request username belongs to the file realm and will exit early with an informative error message if that is the case.

… user attempts to update the password for the `elastic` superuser in a cloud deployment.

At the heart of the issue is the difference in how the `elastic` superuser is implemented on self-hosted deployments vs. managed cloud deployments. Elasticsearch has two distinct security realms: `file` and `native`. On a self-hosted deployment, the `elastic` superuser is represented as a document in the `.security` index, whereas in a cloud deployment `elastic` is defined in the `ES_PATH_CONF/users` and `ES_PATH_CONF/user_roles` files placed on each node in the cluster.

The TransportChangePasswordAction impl is designed to update the password for users in the `native` realm specifically, and a failure on cloud to change the password for `elastic` using the Change Password API fails with the error that the user does not exist.

The solution here leverages `fileUserPasswdStore.userExists` to do a low cost check on whether the request username belongs to the `file` realm and will exit early with an informative error message if that is the case.
@ankit--sethi ankit--sethi added >bug :Security/Security Security issues without another label auto-backport Automatically create backport pull requests when merged v8.19.0 v8.17.7 v8.18.2 v9.0.2 labels May 1, 2025
@elasticsearchmachine elasticsearchmachine added v9.1.0 Team:Security Meta label for security team labels May 1, 2025
@elasticsearchmachine
Copy link
Collaborator

Hi @ankit--sethi, I've created a changelog YAML for you.

@elasticsearchmachine
Copy link
Collaborator

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
auto-backport Automatically create backport pull requests when merged >bug :Security/Security Security issues without another label Team:Security Meta label for security team v8.17.7 v8.18.2 v8.19.0 v9.0.2 v9.1.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants