Realm 与多租户
什么是 Realm
Realm 是 Keycloak 中基础的隔离单元。每个 Realm 独立管理自己的一组用户、凭据、角色、组、客户端和身份验证策略,与其他 Realm 互不影响。Realm 不共享用户数据库或配置,因此是 Keycloak 中实现多租户的主要机制。
可以将 Realm 理解为专用的身份域——类似于多租户 SaaS 应用中的租户。
主节点 Realm
每个 Keycloak 安装都包含一个名为 master 的内置 Realm。master Realm 是顶级管理域,仅用于:
- 管理其他 Realm(创建、配置和删除)
- 管理 Keycloak 服务器级别的设置
- 托管 Keycloak Admin Console
安全建议
不要使用 master Realm 管理应用用户或托管应用客户端。请为每个应用或租户创建专用 Realm,以保持适当的隔离。
Realm 隔离
每个 Realm 在以下维度提供完全隔离:
多租户模式
Keycloak 支持两种常见的多租户模式:
每个租户一个 Realm(推荐)
每个租户都有自己的专用 Realm。这种方式可提供最强的隔离,使每个租户都拥有完全独立的用户、角色、客户端和身份验证配置。
- 优点:完全的数据隔离、独立的配置,不存在跨租户数据泄露的风险。
- 缺点:Realm 数量越多,管理开销越大;必须为每个租户分别配置 Realm 级别的设置。
通过 Groups 共享 Realm
多个租户共享一个 Realm,并使用 Keycloak Groups 或用户的自定义属性来区分租户。
- 优点:运营开销较低,便于大规模管理。
- 缺点:隔离性较弱;需要谨慎配置访问控制,以防止跨租户访问数据。不建议用于具有严格合规要求的场景。
通过 KeycloakRealmImport 配置 Realm
在 Alauda Application Services Identity Management E1 中,可以使用 KeycloakRealmImport Custom Resource 以声明方式管理 Realm 配置。这支持以 GitOps 风格管理 Realm 定义。
如需查看完整的 API 参考,请参阅 KeycloakRealmImport API。