[keycloak-dev] modeling map role fine grain permissions

Stian Thorgersen sthorger at redhat.com
Tue Apr 4 09:53:51 EDT 2017


Can you gives us the high level, non-authz services, specific version? ;)

On 4 April 2017 at 14:59, Bill Burke <bburke at redhat.com> wrote:

> You have to understand the Authz service.  Sorry.  This email was as much
> for me as for review.
>
> On 4/4/17 3:15 AM, Stian Thorgersen wrote:
>
> That should have come with a long email warning ;)
>
> I'm a bit lost. I read this twice without being able to wrap my head
> around it. I'll try to read it again later today or tomorrow.
>
>
> On 3 April 2017 at 16:58, Bill Burke <bburke at redhat.com> wrote:
>
>> Here's how I am going to model role mapping with fine grain permissions
>> in Authz service.  The goal of this is to be able to limit or expand on
>> who can map specific roles.  While we want to have a default that any
>> admin that has the "manage-users" role can map a role, we also want to
>> be able to do things like saying that an admin can map a specific role
>> if they belong to a group instead.
>>
>> DEFAULT PERMISSIONS
>>
>> * "permit all" policy.  Just grants it.
>>
>> * "Default Role Mapping Policy" Policy.  This is an aggregate policy
>> that includes the "permit all" policy.
>>
>> * "map-role" scope
>>
>> * "Roles" resource.  Associated scope is "map-role"
>>
>> * "Default Role Mapping Permission" - scope permission that binds
>> "Roles" resource and "map-role" scope.  The associated policy will be
>> "Default Role Mapping Policy".
>>
>>
>> * "manage-users" scope
>>
>> * "Users" resource.  Associated scope is "manage-users"
>>
>> * "manage-users" policy that checks that "manage-users" role is present
>>
>> * "Default Manage Users Policy".  This is an aggregate policy that
>> includes the "manage-users" policy.
>>
>> * "Default Manage Users Permission".  scope permission that binds
>> "Users" resource and "manage-users" scope.  The associated policy will
>> be "Default Manage Users Policy".
>>
>>
>> The above defines the default policy for mapping all roles.  In the
>> admin console "Roles" section, there will be a "Default Admin
>> Permissions" tab.  Here the user will be able to modify the "Default
>> Role Mapping Permission".  The will be able to create and add new
>> policies for this permission.  They will not be able to create any other
>> permission.  In the "Users" section of the admin console, there will be
>> a "Default Admin Permissions" tab.  Here the admin will be able to
>> modify the "Default Manage Users Permission"
>>
>> FINE GRAIN PERMISSION
>>
>> For more fine grain permissions, there will be a resource created per
>> role on demand.  The admin will go to the role's console page and there
>> will be a "Admin Permissions" tab.  The admin will say they want to add
>> a fine grain permission for that role and this will trigger these actions:
>>
>> * A resource will be created specifically for that role with an
>> associated scope of "map-role"
>>
>> * A scope permission will be created for that role resource and the
>> "map-role" scope.  The "Default Role Mapping Policy" will be added
>> automatically to this permission.
>>
>> THere will also be a "Admin Permissions" tab for each Group.  The admin
>> will say they want to add a fine grain permission for that group and
>> this will trigger these actions:
>>
>> * A resource will be created specifically for that group with an
>> associated scope of "manage-users"
>>
>> * A scope permission will be created for that group resource and the
>> "manage-users" scope.  The "Default Manage User Policy" will be added
>> automatically to this permission.
>>
>> EVALUATION
>>
>> When evaluating whether or not a role is allowed to be mapped by a
>> particular admin, this will be the algorithm:
>>
>> 1. If there is a resource for that specific role, evaluate that the
>> admin can use the "map-role" scope with that role's resource
>>
>> 2. If there is not a resource for that specific role, then evaluate that
>> teh admin can use the "map-role" scope with the "Roles" resource.
>>
>> 3. Evaluate if the admin can perform the "manage-users" scope on the
>> "Users" resource.
>>
>> 4. If Step #3 fails, then for each group see if the admin has the
>> "manage-users" scope for that group.
>>
>> DEFAULT PERMISSIONS FOR ADMIN ROLES
>>
>> By default, each admin role in the system "manage-users",
>> "manage-realm", etc... will have a resource ad scope permission created
>> for it as articulated above.  The scope permission will be UNANIMOUS and
>> will also associate a role policy of that role in addition to the
>> "Default Role Mapping Policy".  This additional role policy is basically
>> saying "Admins with 'manage-users' role and the admin must have this
>> role mapping as well".  So, somebody with 'manage-users' role can't map
>> 'manage-realm' unless they have that role themselves.
>>
>> MORE FINE GRAIN PERMISSIONS
>>
>> We also want to solve the case of allowing an admin to be able to map
>> specific roles for members of a specific group.  To do this we'll add
>> another policy type called "Has Permission".  Here you'll be able to
>> link a permission to a policy.  So, to solve the use case for specific
>> roles for members of a specific group, we can edit the "map-role"
>> permission for a specific role and add a "Has Permission" that links to
>> the permission that the admin has "manage-users" scope for a specific
>> group.  Hope I'm making sense on this one.
>>
>>
>> _______________________________________________
>> keycloak-dev mailing list
>> keycloak-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/keycloak-dev
>>
>
>
>


More information about the keycloak-dev mailing list