-
Notifications
You must be signed in to change notification settings - Fork 8.2k
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
Object Level Security, Phase 1 #82725
Comments
Pinging @elastic/kibana-security (Team:Security) |
Pinging @elastic/kibana-platform (Team:Platform) |
I'm unsure about the owner for this one. I would ideally be performing that in core, but we currently have no way to compute this information from A possible solution would be to let core return
We already discussed about it, but for the record, what do we exactly want here?
kibana/src/core/server/saved_objects/service/lib/repository.ts Lines 784 to 785 in d4b2a51
For spaces, the decision was to keep the actual query logic into core. Are we in the same situation here or not. Note that solution 1 is probably way easier to implement (well, depending on the response of the next point)
As a side note, it would be amazing if this could actually be serialized to a string format. It would be a pain to have a mapping that depends on the authentication provider's principal format (not sure about the feasability tbh) |
I was thinking we'd end up with something like this. My justification was that
I'm favoring the first option right now. I think that'll be somewhat easier to reason about.
I think a string representation would be easy enough to do. I'm not sure yet if we'll need to query against the fields that make up the serialized id, so we may need to include both representations. Something like: {
"owner": {
"id": serialize(realmType, realmName, username),
"realmName": "saml1",
"realmType": "saml",
"username": "sally"
}
} Querying against the single
We don't need to support these complex queries initially, but we should keep them in mind when designing the interface here. |
Will this require us to make changes so that the security plugin doesn't replace the base SavedObjectsClient with kibana/x-pack/plugins/security/server/saved_objects/index.ts Lines 39 to 48 in 4dba10c
|
I don't believe so, but the fact that you're asking makes me think you have a scenario in mind that I haven't considered yet. The SOC and repository created by the security plugin are still owned by core. Security's wrapper is in a good position to replace the default flags set by |
For some reason, I have it stuck in my head that because the security plugin is replacing the base SavedObjectsClient that we shouldn't be implementing too much logic there. I thought this was the reason for us having to implement so much of the saved-objects logic with in the repository itself, as opposed to the SavedObjectsClient. However, you're right that we're just constructing a new instance of the SavedObjectsClient which is owned by |
I don't see any usage yet, but as long as these additional fields do not depends on the user's realm and can be defined as a static mappings, it should be alright. Ideally we would limit the new OLS-related
Looking at the proposal in #39259, it should be fine. This will be some really fun queries to write (and to test), but nothing impossible here. {
"owner": 123456789,
"read": {
"users": [ { id: 123456789, can_share: true } ],
"roles": [ { id: "role_one", can_share: false } ]
},
"write": {
"users": [ { id: 123456789, can_share: true } ],
"roles": [ { id: "role_one", can_share: false } ]
}
} |
@lukasolson @lizozom, will Background Sessions be taking advantage of OLS phase 1 for these background sessions to be user-specific? Have we ensured that there won't be any licensing conflicts here? |
So... Almost 4 years, uh? I wonder, at this point, should we just close this @legrego? Or is there still the slightest chance we ever get back to this? |
@pgayvallet it's probably safe to close this. @azasypkin will soon be starting designs for Private Saved Objects, which I view as a successor to this. |
Object Level Security, Phase 1
RFC: #93115
Blocked by: elastic/elasticsearch#65277
This issue describes the first phase of Object Level Security ("OLS") #39259.
The goal of Phase 1 is to deliver enough functionality to support user-specific settings and preferences. What follows is a summary of a conversation I had with @pgayvallet.
Scope
For the first phase of OLS will introduce support for Saved Object ownership. This will be described with metadata attached to the root level of each Saved Object consistent with the ACL specified in #39259:
Explicitly out of scope:
Tasks
These are the high level tasks that we've identified so far.
acl
propertyoptions
for each operation to accept an optionalacl
propertyHigh-level authorization flow
The text was updated successfully, but these errors were encountered: