Groups Projects Ownership and Permissions Specification » History » Version 3
Peter Amstutz, 08/06/2014 09:50 PM
1 | 1 | Peter Amstutz | h1. Groups, Projects, Ownership and Permissions Specification |
---|---|---|---|
2 | |||
3 | 3 | Peter Amstutz | h2. Permissions |
4 | |||
5 | 2 | Peter Amstutz | * There are three levels of permission, *can_read*, *can_write*, and *can_manage*. |
6 | ** *can_read* grants read-only access to the record |
||
7 | ** *can_write* permits changes to content (but not metadata) fields of the record. *can_write* also implies *can_read* |
||
8 | ** *can_manage* permits the user to create permission links with @head_uuid@ set to this object. *can_manage* also implies *can_write* and *can_read* |
||
9 | 3 | Peter Amstutz | |
10 | h2. Ownership |
||
11 | |||
12 | 1 | Peter Amstutz | * All Arvados objects have an @owner_uuid@ field. Valid uuid types for @owner_uuid@ are "User" or "Group". |
13 | * If the @owner_uuid@ of an object is a User, that User has *can_manage* permission on that object. |
||
14 | 3 | Peter Amstutz | * If @owner_uuid@ of an object is a Group, then that object is a member of that group, and should be displayed as being contained within the owner Group. |
15 | ** A "Project" is a subtype of Group that indicates the group should be displayed in the "Projects" section of Workbench. |
||
16 | |||
17 | h2. Permission links |
||
18 | |||
19 | * A link object with @link_class@ "permission", @name@ one of *can_read*, *can_write* or *can_manage*, @head_uuid@ of some Arvados object, and @tail_uuid@ of an User or Group, grants the named permission for @head_uuid@ to @tail_uuid@. |
||
20 | |||
21 | h2. Transitive permissions |
||
22 | |||
23 | * If a User *can_read* Group A, and Group A *can_read* group B, then User *can_read* Group B. |
||
24 | * Permissions are narrowed. |
||
25 | ** If User *can_write* Group A, and Group A *can_read* Group B, then User *can_read* Group B. |
||
26 | ** If User *can_read* Group A, and Group A *can_write* Group B, then User *can_read* Group B. |