You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KeyCloak单个Realm中实现2个完全隔离租户的最佳方案咨询(已试Client+Group未成功)

在KeyCloak单Realm内实现多租户完全隔离的最佳方案

核心实现思路:分组绑定+细粒度权限限制

不用复杂的多Realm架构,通过分组(Group)+ 租户专属角色+权限范围锁定就能实现单Realm内的租户完全隔离,解决你之前Client+Group方案失效的问题,具体步骤如下:

1. 搭建租户专属分组结构

  • 为每个租户创建独立顶级分组,比如tenant-A、tenant-B,所有该租户的用户必须归属于对应分组(可通过注册流程自动分配,或手动批量添加)。
  • 给每个分组创建专属的管理员角色,比如tenant-A-admin、tenant-B-admin,并将这些角色设置为分组级角色(仅在对应分组下生效)。

2. 锁定管理员角色的权限范围

  • 不要使用KeyCloak默认的realm-admin全局角色,而是为每个租户管理员角色配置细粒度权限:
    1. 进入Realm的Roles页面,选中tenant-A-admin角色,切换到Permissions标签。
    2. 添加User类型的权限,设置过滤条件为group: /tenant-A,确保该角色仅能操作tenant-A分组下的用户。
    3. 对tenant-B-admin重复上述操作,过滤条件设为group: /tenant-B。
    4. 若需要限制客户端、角色等资源的访问,同样添加对应类型的权限并绑定分组范围。

3. 配置管理控制台的权限过滤

  • 给租户管理员分配view-users、manage-users等必要权限,但必须绑定到对应分组:
    1. 在Clients中找到admin-cli和account客户端,确保租户管理员的角色拥有这些客户端的对应权限,但权限范围限定在所属分组。
    2. 进入租户管理员用户的Role Mappings页面,仅分配对应租户的管理员角色,绝对不要分配全局realm-admin角色。

4. 排查之前Client+Group方案失效的常见原因

如果之前的方案没生效,大概率是以下问题:

  • 未给管理员角色设置分组级权限过滤,导致角色仍拥有全局操作权限。
  • 错误使用了全局客户端角色,而非分组绑定的角色。
  • 未限制管理控制台的权限范围,导致管理员能看到所有租户的用户列表。

5. 验证隔离效果

用tenant-A-admin账号登录管理控制台,确认只能看到tenant-A分组下的用户,尝试操作tenant-B的用户时会提示权限不足,反之亦然。

内容的提问来源于stack exchange,提问作者ankit patil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 18:57:07