4.6. 将 LDAP 服务器迁移到 IdM
您可以使用 ipa migrate-ds
命令将身份验证和授权服务从 LDAP 服务器迁移到身份管理(IdM)。
这是一个通用的迁移流程,可能在每个环境中不一定能正常工作。
强烈建议您在尝试迁移真实的 LDAP 环境前设置测试 LDAP 环境并测试迁移过程。在测试环境时,请执行以下操作:
- 在 IdM 中创建测试用户,并将迁移的用户的输出与测试用户的输出进行比较。
- 将迁移的用户的输出(如 IdM 上所示)与源用户进行比较,如原始 LDAP 服务器上所示。
有关更多的指导,请参见下面的 验证 部分。
先决条件
- 有 LDAP 目录的管理员特权。
- 如果已安装 IdM,则您有 IdM 的管理员权限。
-
您以
root
身份登录到要在其上执行以下流程的 RHEL 系统。 您已阅读并理解了以下章节:
步骤
如果 IdM 尚未安装:在安装了现有 LDAP 目录的不同机器上安装 IdM 服务器,包括任何自定义 LDAP 目录模式。详情请参阅 安装身份管理。
注意自定义用户或组模式在 IdM 中的支持有限。它们可能会在迁移过程中导致问题,因为对象定义不兼容。
出于性能考虑,禁用兼容插件:
# ipa-compat-manage disable
有关模式兼容特性以及为迁移禁用它的好处的更多信息,请参阅 从 LDAP 迁移到 IdM 时的模式和模式兼容功能。
重启 IdM 目录服务器实例:
# systemctl restart dirsrv.target
配置 IdM 服务器来允许迁移:
# ipa config-mod --enable-migration=TRUE
通过将
--enable-migration
设为 TRUE,您可以执行以下操作:- 在 LDAP 添加操作过程中允许预哈希密码。
- 如果初始 Kerberos 身份验证失败,则将 SSSD 配置为尝试密码迁移序列。如需更多信息,请参阅 将密码从 LDAP 迁移到 IdM 时的使用 SSSD 中的工作流部分。
运行 IdM 迁移脚本
ipa migrate-ds
以及与您的用例相关的选项。如需更多信息,请参阅 自定义从 LDAP 到 IdM 的迁移。# ipa migrate-ds --your-options ldap://ldap.example.com:389
注意如果您没有在前面的步骤中禁用兼容插件,请将
--with-compat
选项添加到ipa migrate-ds
:# ipa migrate-ds --your-options --with-compat ldap://ldap.example.com:389
重新启用兼容插件:
# ipa-compat-manage enable
重启 IdM 目录服务器:
# systemctl restart dirsrv.target
当所有用户已迁移密码后,禁用迁移模式:
# ipa config-mod --enable-migration=FALSE
-
[可选] 当所有用户都已迁移后,重新配置非 SSSD 客户端以使用 Kerberos 身份验证,即
pam_krb5
,而不是 LDAP 身份验证,即pam_ldap
。如需更多信息,请参阅 RHEL 7 系统级身份验证指南中的配置 Kerberos 客户端。 让用户生成哈希的 Kerberos 密码。选择 从 LDAP 迁移到 IdM 时规划密码迁移 中描述的方法之一。
如果您决定使用 SSSD 方法 :
将已安装 SSSD 的客户端从 LDAP 目录移到 IdM 目录,并将它们注册为 IdM 的客户端。这会下载所需的密钥和证书。
在 Red Hat Enterprise Linux 客户端上,可以使用
ipa-client-install
命令来实现。例如:# ipa-client-install --enable-dns-update
如果您决定使用 IdM 迁移 web 页面 方法:
指示用户使用迁移网页登录到 IdM:
https://ipaserver.example.com/ipa/migration
要监控用户迁移过程,请查询现有的 LDAP 目录,以查看哪些用户帐户拥有密码,但还没有 Kerberos 主体键。
$ ldapsearch -LL -x -D 'cn=Directory Manager' -w secret -b 'cn=users,cn=accounts,dc=example,dc=com' '(&(!(krbprincipalkey=))(userpassword=))' uid
注意在过滤器两边包含单引号,以便 shell 不会对其进行解释。
- 当所有客户端和用户的迁移完成后,请停用 LDAP 目录。
验证
使用
ipa user-add
命令来在 IdM 中创建测试用户。将迁移的用户的输出与测试用户的输出进行比较。确保迁移的用户包含测试用户上存在的最小属性和对象类集合。例如:$ ipa user-show --all testing_user dn: uid=testing_user,cn=users,cn=accounts,dc=idm,dc=example,dc=com User login: testing_user First name: testing Last name: user Full name: testing user Display name: testing user Initials: tu Home directory: /home/testing_user GECOS: testing user Login shell: /bin/sh Principal name: testing_user@IDM.EXAMPLE.COM Principal alias: testing_user@IDM.EXAMPLE.COM Email address: testing_user@idm.example.com UID: 1689700012 GID: 1689700012 Account disabled: False Preserved user: False Password: False Member of groups: ipausers Kerberos keys available: False ipauniqueid: 843b1ac8-6e38-11ec-8dfe-5254005aad3e mepmanagedentry: cn=testing_user,cn=groups,cn=accounts,dc=idm,dc=example,dc=com objectclass: top, person, organizationalperson, inetorgperson, inetuser, posixaccount, krbprincipalaux, krbticketpolicyaux, ipaobject, ipasshuser, ipaSshGroupOfPubKeys, mepOriginEntry
- 将迁移的用户的输出(如 IdM 上所示)与源用户进行比较,如原始 LDAP 服务器上所示。确保导入的属性不会复制两次,并且它们具有正确的值。