11.3. 精细的管理权限
精细管理权限 是技术预览,不被完全支持。此功能默认为禁用。
使用 -Dkeycloak.profile=preview
或 -Dkeycloak.profile.feature.admin_fine_grained_authz=enabled
来启用服务器。如需了解更多详细信息,请参阅 配置文件。
有时,management-realm
或 manage-users
等角色过于起见,而且您希望创建具有更细化权限的受限 admin 帐户。Red Hat Single Sign-On 允许您定义和分配用于管理域的受限访问策略。比如:
- 管理一个特定客户端
- 管理属于特定组的用户
- 管理组成员资格
- 有限的用户管理。
- 精细模拟控制
- 可以为用户分配一组特定的受限角色。
- 能够将特定的受限角色集合分配给复合角色。
- 能够将特定的受限角色集合分配给客户端的范围。
- 用于查看和管理用户、组、角色和客户端的新常规策略。
请注意有关精细的 admin 权限的一些重要事项:
- 细致的管理权限是在授权服务之上 实施。强烈建议您先读取这些功能,然后再进入相关权限。
- 精细的权限只能在 专用 admin 控制台和 那些域中定义的管理员中可用。您无法定义跨域细调权限。
- 细粒度权限用于授予额外权限。您无法覆盖在 admin 角色中构建的默认行为。
11.3.1. 管理一个特定客户端 复制链接链接已复制到粘贴板!
首先,让我们看一个管理员仅管理一个客户端和一个客户端。在我们的示例中,我们有一个名为 test
的域,以及名为 sales-application
的客户端。在域测试中,我们将为该域权限授予用户,以便仅管理该应用程序。
您不能进行跨域细致权限。master
域中的管理员仅限于前面章节中定义的预定义 admin 角色。
11.3.1.1. 权限设置 复制链接链接已复制到粘贴板!
我们首先必须登录 Admin Console,以便我们能够为该客户端设置权限。我们导航到客户端的管理部分,为.
客户端管理
您应看到一个名为 Permissions
的选项卡菜单项。点击该选项卡。
客户端权限选项卡
默认情况下,每个客户端都未启用才能进行细化权限。因此,将 Permissions Enabled
切换到 on 以初始化权限。
如果将 Permissions Enabled
切换为 off,它将删除任何权限以及您为这个客户端定义的所有权限。
客户端权限选项卡
当您将 Permissions Enabled
切换到 on 时,它会使用授权服务 初始化幕后的各种权限对象。https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.5/html-single/authorization_services_guide/在本示例中,我们对客户端 的管理权限
感兴趣。单击该按钮,将您重定向到处理客户端 管理权限
的权限。所有授权对象都包含在 realm-management
客户端的 Authorization
选项卡中。
客户端管理权限
当第一次初始化时,管理权限没有关联任何策略。您将需要创建一个策略选项卡。若要快速获取,可单击以上镜像中显示的
授权
链接。然后点击 policy 选项卡。
本页中有一个名为 Create policy
的下拉菜单。您可以定义多个策略。您可以定义与角色或组关联的策略,或者在 JavaScript 中定义规则。对于这个简单示例,我们将 创建用户策略
。
用户策略
此策略将与用户数据库中硬编码的用户匹配。在本例中,它是 sales-admin
用户。然后,我们必须返回 sales-application
客户端的管理权限页面,并将策略分配给权限对象。
分配用户策略
sales-admin
用户现在可以有管理 sales-application
客户端的权限。
我们还需要做得再做。前往 Role Mappings
选项卡,并将 query-clients
角色分配给 sales-admin
。
分配查询客户端
您为何要执行此操作?此角色告知 Admin Console 哪个菜单项目在 sales-admin
访问管理控制台时要呈现出来。query-clients
角色告知 Admin Console,它应该为 sales-admin
用户呈现客户端菜单。
重要信息如果没有设置 query-clients
角色,则 sales-admin
等受限管理员不会在用户登录管理控制台时看到任何菜单选项
11.3.1.2. 测试它 复制链接链接已复制到粘贴板!
接下来,我们从 master 域注销,再使用 sales- admin 作为用户名重新登录
管理控制台。它位于 test
域的专用/auth/admin/test/console
下。
销售管理员登录
此管理员现在可以管理这个一个客户端。