-
Notifications
You must be signed in to change notification settings - Fork 25
Description
The current Effective ACL Resource Algorithm enables the following which would not be the intent of the users involved:
teamx has default read/write/control to a container which has a 5 level container hierarchy under it. teamx wants to collaborate with person1 and creates a non default read/write acl on a container 3 levels down. Unless teamx copies the top level acl when creating the person1 acl, they will lose access.
Magnitude of the problem example: Alice has a pod with 1000 containers and gives Bob default read/write access to the root. Alice then collaborates with 5 other people in various containers carefully copying the intent of giving Bob access to all these other containers. At one point Alice would like to remove Bob's access, and now there are 100 acls copied in those 1000 containers. What does she do now?
A very simple solution to this avoiding all the copying and systems needed to manage where the copies are etc, is to make a very small revision to the algorithm such that the requesting agent is taken into consideration and only applicable acls are returned:
Effective ACL Resource Algorithm
To determine the effective ACL resource of a resource, perform the following steps. Returns string (the URI of an ACL Resource).
Let resource be the resource.
Let agent be the requesting agent
Let aclResource be the ACL resource of resource.
If resource has an associated aclResource with a representation, and that aclResource applies to the agent, return aclResource.
Otherwise, repeat the steps using the container resource of resource.
This will perform in the exact same way as the original algorithm intent, but simplify the use of acls dramatically and avoid all of the many issues that arise with access when copying and deleting acls around is not done correctly based on the intent of users.