管理用户和角色
Keycloak 提供了全面的用户生命周期管理和细粒度的基于角色的访问控制(RBAC)。用户、角色和组均按 Realm 进行管理。
目录
用户管理创建用户重置用户密码角色管理创建 Realm 角色为用户分配角色组管理创建组将用户添加到组复合角色管理员访问控制主节点 Realm 与特定 Realm 管理员细粒度管理员角色权限边界创建委派管理员用户管理
创建用户
- 登录到 Keycloak Admin Console,并选择目标 Realm。
- 在左侧导航栏中单击 Users。
- 单击 Create new user。
- 填写必填字段:
- 单击 Create。
- 转到 Credentials 选项卡以设置初始密码。
重置用户密码
- 在 Admin Console 中,转到 Users 并选择目标用户。
- 单击 Credentials 选项卡。
- 单击 Reset password。
- 输入新密码,并在希望用户在下次登录时修改密码时切换 Temporary。
- 单击 Save password。
角色管理
Keycloak 支持两种类型的角色:
创建 Realm 角色
- 在 Admin Console 中,转到 Realm Roles。
- 单击 Create role。
- 输入 Role name 和可选的 Description。
- 单击 Save。
为用户分配角色
- 转到 Users 并选择目标用户。
- 单击 Role mapping 选项卡。
- 单击 Assign role。
- 选择要分配的角色,然后单击 Assign。
组管理
Groups 允许您一次性管理多个用户的角色分配。向组分配角色后,所有组成员都会自动继承这些角色。
创建组
- 在 Admin Console 中,转到 Groups。
- 单击 Create group。
- 输入 Name 并单击 Create。
- 在该组的 Role Mapping 选项卡中,分配所需的 Realm 或客户端角色。
将用户添加到组
- 转到 Users 并选择目标用户。
- 单击 Groups 选项卡。
- 单击 Join Group,选择组,然后单击 Join。
复合角色
Composite Role 是一个包含其他角色的角色。当用户被分配到复合角色时,他们会继承其中包含的所有角色。这简化了复杂角色层次结构下的权限管理。
创建复合角色:
- 创建一个 Realm 角色。
- 在该角色的详细视图中,启用 Composite role。
- 在 Associated roles 选项卡中,添加子角色。
管理员访问控制
Keycloak 提供细粒度控制,用于管理哪些人可以管理各个 Realm,以及他们可以执行哪些操作。
主节点 Realm 与特定 Realm 管理员
细粒度管理员角色
每个 Realm 中的 realm-management client 提供了粒度更细的管理员角色。角色遵循 view-* / manage-* 模式——view-* 授予只读访问权限,manage-* 授予完整的 CRUD 访问权限,并且会隐式包含对应的 view-* 权限。
Query 与 View 角色
query-* 角色仅提供 Admin Console 导航所需的最小列表/搜索访问权限,而不会授予资源详情的完整读取权限。创建委派管理员账户时,请将 query-* 角色与特定的 manage-* 或 view-* 角色一起分配,这样管理员才能正确浏览控制台。
权限边界
细粒度管理员权限具有以下边界:
- 委派管理员不能授予自己不具备的角色。拥有
manage-users但没有manage-clients的用户不能分配客户端角色。 - 委派管理员不能访问其他 Realm,除非他们在那些 Realm 中也具有相应角色。
realm-admin复合角色包含所有单独的管理员角色。仅当需要完整的 Realm 管理权限时才分配它。
创建委派管理员
要创建一个只能管理特定 Realm 中用户的管理员用户:
- 在目标 Realm 中创建一个用户。
- 转到该用户的 Role mapping 选项卡。
- 单击 Assign role > Filter by clients。
- 搜索
realm-management。 - 分配
view-users、manage-users、query-users和query-realms角色。 - 该用户现在可以使用
https://<keycloak-host>/admin/<realm>/console访问 Admin Console,并且权限受限。
专用 Admin Console
每个 Realm 都有一个专用的 Admin Console URL:https://<keycloak-host>/admin/<realm>/console。委派管理员应使用此 URL,而不是全局 admin console。