Grouper Training Developers and Architects How to Design Permissions Shilen Patel Duke University This work licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License. Contents • • • • • • • • • Introduction Permission definitions Permission names Actions Roles Permission assignments Limits Inheritance Application integration 2 Introduction Attributes Roles Role inheritance Permissions Attribute definition Permission definition Delegation model extends that for Groups 3 Permission Definitions • Type of attribute definition where the type of attribute is permission. • Typically have one definition for a set of permission names (resources) and actions. • Also contain security information. • Who can create permission assignments using a given definition? • Who can see permission assignments? 4 Permission Names • Permission names are the “resource” in the permission triple. • Typically have more than one per permission definition. 5 Actions • Each permission definition can have a set of actions that can be used to form permissions using that definition. • Actions are free form strings (e.g. “read”, “write”, “admin”) 6 Roles • Special type of groups. • Unlike regular groups, roles can be associated directly with permission assignments. • Roles can also have permission inheritance. 7 Permission Assignments • Contain the triple • Subject (role or a specific subject within a role) • Action • Resource (the permission name) • Start and end dates • Permission will start on a future date. • Permission will end on a future date. 8 Permission Assignments (continued) • Allowed versus disallowed permissions • Permission processor will resolve conflicts when performing permission queries (e.g. PermissionFinder.hasPermission()) • Direct assignments trump inherited assignments • A lower depth inherited assignment trumps a higher depth inherited assignment (on the directed graph of inheritance) • Inherited ALLOW assignments (of equal depth) trump inherited NOT_ALLOW assignments 9 Limits • Runtime constraints on permissions assignments. • There are many built-in limits (such as Weekday 9 to 5). • When querying permissions using the permission processor, you can supply limit values (e.g. current time). • Can only apply to permissions that are allowed (not disallowed). 10 Inheritance • Role inheritance – One role inherits permissions of another role (e.g. senior manager inherits permissions assigned to a manager.) • Resource inheritance – Permission on one resource implies permission on another. Useful in hierarchies (e.g. read access on the OIT resource within an application implies read access on OIT:IDM) 11 Inheritance (continued) • Action inheritance – One action implies another (e.g. admin implies read). • Group membership – Adding a group as a member of a role. 12 Application Integration • Using the Grouper change log to propagate permissions to an external application. • Change log events occur when permissions are added or dropped. • Change log will tell you which roles have permission changes. • Change log category is “permission” and change log action is “permissionChangeOnRole” 13 Application Integration (continued) • Application can look up permissions using Grouper Web Services. • Possible approach for custom applications. • Need to consider caching especially if permissions are fine-grained. • Can also send limit values in permission queries and simply get a boolean response for whether the user has the permission. 14 Application Integration (continued) • Grouper views • Useful for read-only queries when the permission processor is not needed. • grouper_perms_assigned_role_v – shows all permissions assigned to roles. • grouper_perms_role_v – shows all permissions assigned to users due to the users being in a role, and the role being assigned the permission. • grouper_perms_role_subject_v - shows all permissions assigned to users directly while in a role. • grouper_perms_all_v – Union of grouper_perms_role_v and grouper_perms_role_subject_v. • Grouper API 15 Quiz Click on the quiz link in the video description to reinforce your knowledge of this topic. 16 Thanks! Further information: • Infosheets, mailing lists, wiki, downloads, etc.: www.internet2.edu/grouper • Grouper demo server: grouperdemo.internet2.edu/ • Grouper Online Training Home: spaces.internet2.edu/x/IIGfAQ This work licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License. 17