Closed kozbo closed 4 years ago
As an admin, I woud like to restrict public access to a resource (project/bundle/file).
As an admin, I would like to explicitly grant permission to access a resource (project/bundle/file) to a principal (user/group).
As an admin, I would like to be able to grant specific principal (user/group) access to all versions of a resource.
OPTIONAL: DISCUSS
As an admin, I would like to be able to grant specific principal (user/group) access to a particular version of a resource (project/bundle/file), while leaving other versions protected.
As a user, I would like to be able to access any data that is public.
As a user, I would like to be granted access to data I have permission to access.
As a user, I would like to be denied access to data I do not have permission to access.
To digest this into an MVP, the FLAC mechanism should do the following:
Should allow admins to specify what resource to protect, by specifying a UUID (and optionally a version - DISCUSS)
Should take at least three, possibly more, arguments:
To discuss at next standup:
should we provide FLAC using UUID only (easier/less time-consuming) or should access control include version numbers/FQID too (more comprehensive/more time-consuming)
can we use UUIDs to identify groups/users, and if not, how to grant permission to groups vs users
is this ticket ready to close so we can start working on implementation
yes, let's discuss. Is there a priority to these use cases?
@kozbo IMO - yes, there is, the top priority should be providing FLAC based on UUIDs only. This keeps the FLAC implementation as simple as possible.
Version-specific FLAC would be a little more complicated to implement, and we don't have a specific customer asking for that requirement. Since any new customers would force us to revisit auth anyway, we can expand the FLAC system as needed at that time.
Based on discussion at 2020-02-14 architecture meeting, here are the amendments we made to the above user stories:
Create:
Read:
Update:
Delete:
API endpoints that we are protecting (from swagger_auth.py
script):
default_auth = {"/files/{uuid}": ["put"],
"/subscriptions": ["get", "put"],
"/subscriptions/{uuid}": ["get", "delete"],
"/collections": ["get", "put"],
"/collections/{uuid}": ["get", "patch", "delete"],
"/bundles/{uuid}": ["put", "patch", "delete"]
}
Investigate
As an admin I would like to restrict access to files and or bundles or projects to a particular group or individual As a user I would expect to be able to access data that I have permission to, and not data that I am restricted from