将 Red Hat Single Sign-On 迁移到 Keycloak
本指南介绍如何将运行在 OpenShift 上的 Red Hat Single Sign-On (RH-SSO) 7.x 中的身份数据迁移到运行在 Kubernetes 上的 Alauda Application Services Identity Management E1。
概述
Red Hat Single Sign-On (RH-SSO) 7.x 是由 Red Hat 基于 Keycloak Community Edition 开发的商业发行版。两者在核心数据模型和存储结构方面完全兼容。
此次迁移使用官方推荐的导出/导入机制,可完整迁移以下数据:
- Realm 配置
- 用户(包括凭证和状态)
- Realm 角色和客户端角色
- 客户端及其权限映射
- 组合角色和内置管理权限
迁移流程
前提条件
- 具有在 OpenShift 上访问 RH-SSO Pod 的权限,并拥有
oc rsh权限。 - Kubernetes 上正在运行的 Alauda Application Services Identity Management E1 实例。
- 对目标 Kubernetes 集群具有
kubectl访问权限。 - 本地计算机上具有足够的磁盘空间,用于保存导出的 JSON 文件。
步骤 1:从 RH-SSO 导出数据
服务影响
导出命令会在偏移端口上启动一个辅助的独立服务器进程。它不会中断正在运行的 RH-SSO 服务,但应计划在低流量时段执行此操作,以最大程度地降低风险。
连接到 RH-SSO Pod 并运行导出命令:
等待导出完成。该进程会输出日志,然后退出。导出的文件将保存到 Pod 内的 /tmp/sso-export.json。
步骤 2:复制导出文件
将导出文件从 RH-SSO Pod 复制到本地计算机,然后再复制到 Keycloak Pod:
步骤 3:将数据导入 Keycloak
连接到 Keycloak Pod 并运行导入命令:
覆盖模式
--override true 标志会替换目标 Keycloak 实例中名称相同的现有 Realm。如果希望在存在冲突 Realm 时导入失败并保留当前数据,请移除此标志。
步骤 4:验证迁移
导入完成后,验证所有数据是否已正确迁移:
- 登录 Keycloak Admin Console。
- 确认导入的 Realm 出现在 Realm 下拉菜单中。
- 在每个导入的 Realm 中验证以下内容:
-
用户数量与源 RH-SSO 匹配
-
Client 配置完整
-
角色分配正确
-
Composite 角色和权限映射均已保留
-
注意事项
- 导入成功指示器:执行导入命令后,日志会打印
Realm '<realm-name>' imported,以确认导入成功。最后的ERROR: Address already in use消息表示导入过程中的端口冲突,不会影响数据导入结果。 - 凭证兼容性:RH-SSO 7.x 和 Keycloak 26.x 使用兼容的凭证存储格式。用户密码会被迁移,并在导入后保持有效。
- Client 密钥:Client 密钥包含在导出文件中。请验证导入后这些密钥是否已保留。
- 覆盖模式:
--override true标志会替换名称相同的现有 Realm。如果希望在存在冲突 Realm 时导入失败,请移除此标志。