Replies: 4 comments 1 reply
-
@robkooper suggested we introduce the concept of extractor owner/admins. Similar to superadmins or space admins, these are the people who have the final say in extractor permissions and can always see it in their lists, even if it is disabled globally and disabled in all spaces. USE CASES
All of this would work nicely with user group features as well. |
Beta Was this translation helpful? Give feedback.
-
To be clear, my approach unless there are other comments:
|
Beta Was this translation helpful? Give feedback.
-
Was chatting with Mike yesterday, what about the following:
In clowder now the owner can add additional people to the extractor, as either
If an extractor is added to a space, all users in that space can use that extractor. Finally the extractor will show up in the list of extractors, and on the extractor details page it shows the owner of the extractor (not the other admins). Finally, for the workbench, maybe we can add a second option |
Beta Was this translation helpful? Give feedback.
-
Questions from discussion with @lmarini - PrivateExtractor with it's own API endpoint, separate from current (space) extractors. When registered, it appends a unique ID to the end of the queue name that can have multiple users associated, but it can be instanced so multiple groups of users can have separate queues. |
Beta Was this translation helpful? Give feedback.
-
For several projects, there is interest in controlling who can see and trigger extractors. Consider two cases:
We have gone through several iterations/ideas. Originally we discussed adding new fields to extractor_info where users could define these things, but that would be potentially cumbersome to maintain (e.g. docker images for different permission sets) and introduced weird interactions with Clowder's existing per-space extractor system and registering the same extractor later when extractor_info has changed.
As per recent discussion, the current idea is to track a new piece of information for extractors separate from extractor_info that maps extractor IDs to permissions, with API endpoints to control them. For hiding extractors from global lists of extractors, a DISABLED category could control whether it is enabled by default on new/existing spaces (is this already there?)
Let's say we introduce a new collection in Mongo called extractor_permissions. I imagine a document that could look like one of these examples:
By separating these pieces, we allow the extractor version to be updated while maintaining permissions.
We could still support a permissions: {} object in extractor_info POST JSON that applies those settings to the extractor on startup, but we don't store it permanently with extractor_info in the database. It is only additive to the permissions list (if that makes sense?)
Things to consider:
if a space ID is given, then that implies two restrictions: resource must be in space, user must be in space.
When extractor_info is POSTed, permissions of the POSTing user could be applied. So if user A starts a new version of extractor that can only trigger in space M, but A is not in M, do we apply the permission and let the user lock themselves out? Or do we say no, you don't have permission to update this extractor_info?
Superadmin and spaceadmin. Super can do everything, but how about space admins? If extractor has user UUIDs listed, it should presumably be withheld from enable by space option... but what if the user is in the space they admin and has asked to turn it on? Can all space admins see all extractors?
if only a user UUID is provided, the user can submit any resource in any space they have access to? Meaning it needs to be enabled on any space the user is in? or does user permission bypass space check? How much control should spaceadmin have? I assume they should be able to block users from running any extractor they want on spaces they admin, but that could mean space admin sees 20 Workbench sidecar things to enable/disable. How should this work?
Beta Was this translation helpful? Give feedback.
All reactions