Realm 与多租户
什么是 Realm
Realm 是 Keycloak 中的基础隔离单元。每个 Realm 独立管理其自己的用户、凭据、角色、组、客户端和认证策略,彼此之间互不共享。Realm 不共享用户数据库或配置,是 Keycloak 实现多租户的主要机制。
可以将 Realm 理解为一个专用的身份域——类似于多租户 SaaS 应用中的租户。
master Realm
每个 Keycloak 安装都包含一个内置的 Realm,称为 master。master Realm 是顶层的管理域,专门用于:
- 管理其他 Realm(创建、配置和删除)
- 管理 Keycloak 服务器级别的设置
- 托管 Keycloak 管理控制台
安全建议
不要使用 master Realm 来管理应用用户或托管应用客户端。应为每个应用或租户创建专用的 Realm,以保持适当的隔离。
Realm 隔离
每个 Realm 在以下维度上提供完全隔离:
多租户模式
Keycloak 支持两种常见的多租户模式:
每租户一个 Realm(推荐)
每个租户拥有自己的专用 Realm。此方式提供最强的隔离,允许每个租户拥有完全独立的用户、角色、客户端和认证配置。
- 优点:数据完全隔离,配置独立,无跨租户数据泄露风险。
- 缺点:随着 Realm 数量增加,管理开销增大;每个租户需单独配置 Realm 级别设置。
共享 Realm + 组
多个租户共享一个 Realm,租户通过 Keycloak 组 或用户上的自定义属性进行区分。
- 优点:运维开销较低,规模化管理更简单。
- 缺点:隔离性较弱;需严格访问控制以防止跨租户数据访问。不适合严格合规场景。
通过 KeycloakRealmImport 配置 Realm
在 Alauda Build 版本的 Keycloak 中,可以使用 KeycloakRealmImport 自定义资源以声明式方式管理 Realm 配置,实现 GitOps 风格的 Realm 定义管理。
完整 API 参考见 KeycloakRealmImport API。