Skip to content

Proposed Fix to: Loss of Access with lower level ACL (Effective ACL Resource Algorithm)Β #102

@gibsonf1

Description

@gibsonf1

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions