搜索

11.3. 精细的管理权限

download PDF
注意

精细管理权限 是技术预览,不被完全支持。此功能默认为禁用。

使用 -Dkeycloak.profile=preview-Dkeycloak.profile.feature.admin_fine_grained_authz=enabled 来启用服务器。如需了解更多详细信息,请参阅 配置文件

有时,management-realmmanage-users 等角色过于起见,而且您希望创建具有更细化权限的受限 admin 帐户。Red Hat Single Sign-On 允许您定义和分配用于管理域的受限访问策略。比如:

  • 管理一个特定客户端
  • 管理属于特定组的用户
  • 管理组成员资格
  • 有限的用户管理。
  • 精细模拟控制
  • 可以为用户分配一组特定的受限角色。
  • 能够将特定的受限角色集合分配给复合角色。
  • 能够将特定的受限角色集合分配给客户端的范围。
  • 用于查看和管理用户、组、角色和客户端的新常规策略。

请注意有关精细的 admin 权限的一些重要事项:

  • 细致的管理权限是在授权服务之上 实施。强烈建议您先读取这些功能,然后再进入相关权限。
  • 精细的权限仅在 专用 管理控制台和那些域中定义的管理员中可用。您无法定义跨域细调权限。
  • 细粒度权限用于授予额外权限。您无法覆盖在 admin 角色中构建的默认行为。

11.3.1. 管理一个特定客户端

首先,让我们看一个管理员仅管理一个客户端和一个客户端。在我们的示例中,我们有一个名为 test 的域,以及名为 sales-application 的客户端。在域测试中,我们将为该域权限授予用户,以便仅管理该应用程序。

重要

您不能进行跨域细致权限。master 域中的管理员仅限于前面章节中定义的预定义 admin 角色。

11.3.1.1. 权限设置

我们首先必须登录 Admin Console,以便我们能够为该客户端设置权限。我们导航到客户端的管理部分,为.

客户端管理

fine grain client

您应看到一个名为 Permissions 的选项卡菜单项。点击该选项卡。

客户端权限选项卡

fine grain client permissions tab off

默认情况下,每个客户端都未启用才能进行细化权限。因此,将 Permissions Enabled 切换到 on 以初始化权限。

重要

如果将 Permissions Enabled 切换为 off,它将删除任何权限以及您为这个客户端定义的所有权限。

客户端权限选项卡

fine grain client permissions tab on

当您将 Permissions Enabled 切换到 on 时,它会使用授权服务 初始化幕后的各种权限对象。https://access.redhat.com/documentation/zh-cn/red_hat_single_sign-on/7.6/html-single/authorization_services_guide/在本示例中,我们对客户端 的管理权限 感兴趣。单击该按钮,将您重定向到处理客户端 管理权限 的权限。所有授权对象都包含在 realm-management 客户端的 Authorization 选项卡中。

客户端管理权限

fine grain client manage permissions

当第一次初始化时,管理权限没有关联任何策略。您将需要创建一个策略选项卡。若要快速获取,可单击以上镜像中显示的 授权 链接。然后点击 policy 选项卡。

本页中有一个名为 Create policy 的下拉菜单。您可以定义多个策略。您可以定义与角色或组关联的策略,或者在 JavaScript 中定义规则。对于这个简单示例,我们将 创建用户策略

用户策略

fine grain client user policy

此策略将与用户数据库中硬编码的用户匹配。在本例中,它是 sales-admin 用户。然后,我们必须返回 sales-application 客户端的管理权限页面,并将策略分配给权限对象。

分配用户策略

fine grain client assign user policy

sales-admin 用户现在可以有管理 sales-application 客户端的权限。

我们还需要做得再做。前往 Role Mappings 选项卡,并将 query-clients 角色分配给 sales-admin

分配查询客户端

fine grain assign query clients

您为何要执行此操作?此角色告知 Admin Console 哪个菜单项目在 sales-admin 访问管理控制台时要呈现出来。query-clients 角色告知 Admin Console,它应该为 sales-admin 用户呈现客户端菜单。

重要信息如果没有设置 query-clients 角色,则 sales-admin 等受限管理员不会在用户登录管理控制台时看到任何菜单选项

11.3.1.2. 测试它

接下来,我们从 master 域注销,并使用 Sales - admin 作为用户名重新登录到 测试 域的专用 管理控制台。它位于 /auth/admin/test/console 下。

销售管理员登录

fine grain sales admin login

此管理员现在可以管理这个一个客户端。

11.3.2. 限制用户角色映射

您想要做的另一个操作是限制管理员被允许分配给用户的一组角色。继续我们的最后一个示例,让我们扩展"销售管理员"用户的权限集,以便他还能够控制允许哪些用户访问此应用程序。通过精细的权限,我们可以启用它,以便 sales-admin 只能分配授予对 销售应用程序 特定访问权限的角色。我们还可以限制它,使得管理员只能映射角色,而不执行任何其他用户管理类型。

sales-application 定义了三个不同的客户端角色。

销售应用程序角色

fine grain sales application roles

我们希望 sales-admin 用户能够将这些角色映射到系统中的任何用户。执行此操作的第一步是允许 admin 映射角色。如果点击 viewLeads 角色,您会看到此角色的 Permissions 选项卡。

查看领导角色权限选项卡

fine grain view leads role tab

如果我们单击该选项卡并开启了" 权限"启用,您会看到我们可以将策略应用于多个操作。

查看领导权限

fine grain view leads permissions

我们感兴趣的其中一项是 映射角色。单击此权限,再添加在先前示例中创建的同一用户策略。

map-roles 权限

fine grain map roles permission

我们所执行的操作是,sales-admin 可以映射 viewLeads 角色。我们尚未执行的操作是什么,指定管理员也可以映射此角色的用户。为此,我们必须进入此域的管理控制台的 Users 部分。单击 Users left 菜单项可进入域的用户界面。您应看到一个 权限选项卡。点击这个窗口并启用它。

用户权限

fine grain users permissions

我们感兴趣的权限是 map-roles。这是限制性策略,其仅允许管理员将角色映射到用户。如果我们单击 map-roles 权限并再次添加我们为此创建的 User Policy,则 sales-admin 将可以将角色映射到任何用户。

我们要做的最后一件事是将 view-users 角色添加到 sales-admin。这样,管理员可以查看 realm 中的用户,希望将 sales-application 角色添加到其中。

添加 view-users

fine grain add view users

11.3.2.1. 测试它

接下来,我们从 master 域注销,并使用 Sales - admin 作为用户名重新登录到 测试 域的专用 管理控制台。它位于 /auth/admin/test/console 下。

您将看到 sales-admin 可以查看系统中的用户。如果您选择了其中一个用户,您将看到每个用户详情页面都是只读的,但 Role Mappings 选项卡除外。转至此选项卡,您会发现 admin 没有可用的 角色来 映射到用户,除非浏览 sales-application 角色时除外。

添加 viewleads

fine grain add view leads

我们仅指定 sales-admin 可以映射 viewLeads 角色。

11.3.2.2. 每个客户端映射 -roles 快捷方式

如果我们需要对发布5发布的每个客户端角色执行此操作,这非常繁琐。为了方便事情,指定管理员可以映射客户端所定义的任何角色。如果我们重新登录到我们的主域管理员管理员并返回 sales-application 权限页,您将看到 map-roles 权限。

client map-roles 权限

fine grain client permissions tab on

如果授予管理员对此特定权限的访问权限,则 admin 能够映射客户端定义的任何角色。

11.3.3. 权限完整列表

除了管理特定客户端或客户端的特定角色外,您还可进行更细化的权限。本章定义域可以描述的完整权限类型列表。

11.3.3.1. 角色

当进入特定角色的 Permissions 选项卡时,您将看到列出的这些权限类型。

map-role
决定管理员是否可以将此角色映射到用户的策略。这些策略仅指定角色可以映射到用户,而 admin 则被允许执行用户角色映射任务。管理员还必须具有管理或角色映射权限。如需更多信息,请参阅 用户权限
map-role-composite
决定管理员是否可以将此角色映射为复合到另一个角色的策略。如果他必须管理该客户端的权限,则管理员可以定义角色,但是他将无法将复合添加到这些角色,除非他拥有要添加为复合的角色的 map-role-composite 特权。
map-role-client-scope
决定管理员是否可以将此角色应用到客户端范围的策略。即使管理员能够管理客户端,他将有权为该客户端创建包含此角色的令牌,除非授予了此特权。

11.3.3.2. 客户端

当进入特定客户端的 Permissions 选项卡时,您将看到列出的这些权限类型。

view
决定管理员能否查看客户端的配置的策略。
管理
决定管理员是否可以查看和管理客户端的配置的策略。在这种情形中,这可能会意外泄漏一些问题。例如,管理员可以定义一个协议映射程序来硬编码角色,即使管理员没有将角色映射到客户端的范围的权限。目前,协议映射程序的限制,因为它们没有向他们分配独立权限的方法,如角色的作用。
配置
减少管理客户端的特权集合。它与 管理 范围类似,但管理员不允许管理员定义协议映射程序、更改客户端模板或客户端的范围。
map-roles
决定管理员是否可以将客户端定义的任何角色映射到用户的策略。这是一个快捷方式、易于使用的功能,以避免为客户端定义每一个和每一个角色定义策略。
map-roles-composite
决定管理员是否可以将客户端定义为复合到另一个角色的策略。这是一个快捷方式、易于使用的功能,以避免为客户端定义每一个和每一个角色定义策略。
map-roles-client-scope
决定管理员是否可将客户端定义的任何角色映射到另一客户端的范围。这是一个快捷方式、易于使用的功能,以避免为客户端定义每一个和每一个角色定义策略。

11.3.3.3. 用户

进入所有用户的 权限选项卡 时,您将看到列出的这些权限类型。

view
决定管理员能否查看域中的所有用户的策略。
管理
决定管理员是否可以管理域中的所有用户的策略。此权限向 admin 授予执行用户角色映射的特权,但它不指定 admin 允许映射的角色。您需要为希望管理员进行映射的每个角色定义特权。
map-roles
这是 管理 范围授予的特权的子集。在这种情况下,管理员只能映射角色。admin 不允许执行任何其他用户管理操作。另外,如 管理,必须为每个角色指定 admin 应用的角色,或者在处理客户端角色时为每个角色指定每个角色。
manage-group-membership
map-roles 类似,但它与组成员资格相关:用户可以从中删除用户的组。这些策略仅授予管理组成员资格的 admin 权限,而不向管理员管理成员资格的组。您必须为每个组的 manage-members 权限指定策略。
模拟
决定管理员是否允许其他用户模拟策略。这些策略应用到管理员的属性和角色映射。
user-impersonated
决定哪些用户可以模拟的策略。这些策略将应用到被模拟的用户。例如,您可能希望定义一个策略来禁止任何人模拟具有管理员特权的用户。

11.3.3.4. 组

当进入特定组的 Permissions 选项卡时,您将看到列出的这些权限类型。

view
决定管理员能否查看该组的相关信息的策略。
管理
决定管理员是否可以管理该组的配置的策略。
view-members
决定管理员能否查看组成员的用户详情的策略。
manage-members
决定管理员是否可以管理属于此组的用户的策略。
manage-membership
决定管理员是否可以更改组成员资格的策略。添加或删除组中的成员。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.