5.2. 基于角色的策略
您可以使用这类策略为允许一组一个或多个角色访问对象的权限定义条件。
默认情况下,根据需要指定添加到此策略的角色,如果授予了任何这些角色的用户,策略将授予访问权限。但是,如果要强制执行特定的角色,您可以根据需要指定一个特定的角色为 required。您还可以组合必需的角色和非必需角色,无论它们是 realm 还是客户端角色。
当您需要更多基于角色的访问控制(RBAC)时,角色策略很有用,其中必须强制执行特定的角色才能授予对象的访问权限。例如,您可以强制用户必须同意允许客户端应用程序(代表用户执行)才能访问用户的资源。您可以使用红帽构建的 Keycloak Client Scope Mapping 来启用同意页面,甚至强制客户端在从红帽构建的 Keycloak 服务器获取访问令牌时显式提供范围。
要创建新的基于角色的策略,请从策略类型列表中选择 Role。
添加角色策略
5.2.1. Configuration 复制链接链接已复制到粘贴板!
Name
描述该策略的人类可读和唯一字符串。最佳实践是使用与您的业务和安全要求紧密相关的名称,以便您可以更轻松地识别它们。
描述
包含此策略详情的字符串。
域角色
指定哪些 realm 角色被这个策略允许。
客户端角色
指定哪些 client 角色被这个策略允许。若要启用此字段,必须首先选择一个
客户端
。逻辑
评估其他条件后要应用此策略的逻辑。
5.2.2. 根据需要定义角色 复制链接链接已复制到粘贴板!
在创建基于角色的策略时,您可以根据 Required
指定特定的角色。当这样做时,只有在用户请求访问被授予了所有 required 角色时才会授予访问权限。域和客户端角色都可以配置,例如:
所需角色示例
要根据需要指定角色,请根据需要为您要配置的角色选择 Required
复选框。
当您的策略定义了多个角色,但仅强制使用角色的子集时,所需角色很有用。在这种情况下,您可以组合 realm 和 client 角色,为应用程序启用更为精细的基于角色的访问控制(RBAC)模型。例如,您可以拥有特定于客户端的策略,并且需要与该客户端关联的特定客户端角色。或者,您只能在存在特定域角色时授予该访问权限。您还可以组合同一策略中的这两种方法。