-
Notifications
You must be signed in to change notification settings - Fork 8.3k
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
[SLO] [R&D] Test strategy for "properly" creating dot-prefixed SLO indices without user permissions #200953
Comments
Pinging @elastic/obs-ux-management-team (Team:obs-ux-management) |
I've conducted some initial research here's a table showing the expected credentials from our assumptions versus the actual credentials after testing
Because of this, the initial plan to utilize the system user simply to install the ingest pipeline is untenable. Here are some solutions we've looked into to overcome this 1. Transitioning to ILM based approachedWe explored using ILM to manage the SLO rollup index and rollover the data to a new write index every 30 days or when primary shard size is greater than 50GB. No change would be made to the summary index. Here is the migration path we would take.
This way, older SLOs on versions v.3.3 would continue using the ingest pipeline based rollover until updated. Eventually, this would require the SLOs to manually be reset. Pros:
2. Handling index rollover in task managerWe are currently exploring using task manager to manually rollover the index after the index is more than 30 days old or when primary shard size is greater than 50GB. Here is the migration path we would take:
Pros:
Moving forwardWe will continue to investigate option #2, but at this point I think it's fair to say revisiting the conversation with the ES team about tweaking secondary auth may be valuable. Option 1 is untenable because of severless, and option 2 is less ideal than desired. A solution at the ES level may be more elegant than moving forward with option 2. |
Do we have a full, clear understanding of exactly why the ingest pipelines can't be made to use the system user for creating the new rollover indices? I assume they are just using the transform user specification, so the fact that we are telling the transform to "run" using the user credentials is passing that along to the ingest pipeline, and there's no way to separately control the ingest pipeline's auth choices? I just want to make sure we have that clearly understood and documented as we consider other options.
I agree. The overlap of choices we've made at the platform level has created an untenable situation with transforms + dot-prefix indices + serverless + ILM, and I don't think adding to task manager's capacity to recreate ILM in serverless is what we want to spend time on doing and/or maintaining. To be honest, I think we may prefer to continue with the "allowlist" solution rather than introducing task manager based ILM. I think it's valuable to understand what that option looks like, but I can't see us pushing it to production. |
To close this out for now, I'd like to (a) get an answer to this: "Do we have a full, clear understanding of exactly why the ingest pipelines can't be made to use the system user for creating the new rollover indices?", and (b) create an issue for the ES team (or comment on an existing issue if one is already there) to start exploring changes to secondary auth, again. None of this is urgent for v9 so we don't need to push on it right this minute, but having those things in place will help for whenever we need to address this again next year. |
Following on from a longer conversation happening in #196340
Problem context
When a user creates an SLO, they need permission to read data from the selected source indices, e.g. logs for an SLO based on log data, etc. The user does NOT need permissions to create or manage transforms or ingest pipelines, even though an SLO is made up of these Elasticsearch primitives. We achieve this split authorization by using an ES feature called "secondary authorization". The transform APIs and the ingest pipeline APIs both support this authorization model. We made this change in August of this past year.
Using secondary auth, the following actions and credentials are used during the life of an SLO:
This solves the problem of users being able to create and manage SLOs without needing privileges to create and manage all transforms and ingest pipelines. However, a recent change has been introduced to Elasticsearch which blocks the creation of dot-prefixed indices for user credentials. As seen above in the rows marked by ❌ , this blocks actions [3] and [7], and required us to allow-list our SLO index patterns to get around this restriction.
Proposed solution
Looking into this, it seems to me that only action [2], denoted by 🔒 , requires user privileges (to prevent users from creating SLOs that read from data that they do not have access to). If that's true, I'm proposing the following solution:
In other words, we would end up with a table like this:
Run transform: create new dest indexThe goal of this issue is for engineers to test these assumptions with a POC, and to make sure the above understanding and assumptions sound correct to other stakeholders.
The text was updated successfully, but these errors were encountered: