搜索

第 39 章 从 LDAP 目录迁移到 IdM

download PDF
作为管理员,您之前为身份验证和身份查找部署了 LDAP 服务器,现在您要将后端迁移到身份管理。您需要使用 IdM 迁移工具来传输用户帐户,包括密码和组,而不丢失数据。此外,您还想避免对客户端进行昂贵的配置更新。
此处描述的迁移过程假定一个简单的部署场景,在 LDAP 和 IdM 中有一个名字空间的简单部署场景。对于更复杂的环境,如多个命名空间或自定义模式,请联系红帽支持服务。

39.1. LDAP 到 IdM 迁移概述

从 LDAP 服务器迁移到身份管理的实际迁移部分 - 将数据从一个服务器移动到另一台服务器的过程比较简单。此过程很简单:移动数据、移动密码和移动客户端。
迁移的最昂贵的部分是决定如何将客户端配置为使用身份管理。对于基础架构中的每个客户端,您需要决定正在使用哪些服务(如 Kerberos 和 SSSD),以及最终 IdM 部署中可以使用哪些服务。
辅助但重要的考虑是计划如何迁移密码。除了密码外,身份管理还需要每个用户帐户的 Kerberos 哈希。第 39.1.2 节 “计划密码迁移” 中介绍了密码的一些注意事项和迁移路径。

39.1.1. 规划客户端配置

身份管理可以支持多种不同的客户端配置,具有不同功能、灵活性和安全性。根据 每个客户端的操作系统、功能区域(如开发计算机、生产服务器或用户笔记本电脑)和 IT 维护优先事项,确定最适合每个 客户端的配置。
重要
不同的客户端配置 不是相互排斥的。大多数环境都混合有客户端用于连接 IdM 域的不同方法。管理员必须决定哪种方案最适合每个客户端。

39.1.1.1. 初始客户端配置(预迁移)

在决定您要在身份管理中使用客户端配置的位置前,首先在迁移前确定您在哪里。
要迁移的所有 LDAP 部署的初始状态是存在提供身份和身份验证服务的 LDAP 服务。

图 39.1. 基本 LDAP 目录和客户端配置

基本 LDAP 目录和客户端配置
Linux 和 Unix 客户端使用 PAM_LDAP 和 NSS_LDAP 库直接连接到 LDAP 服务。这些库允许客户端从 LDAP 目录检索用户信息,就像数据存储在 /etc/ passwd 或 / etc /shadow 中一样(在现实环境中,如果客户端使用 LDAP 进行身份查找,并且使用 Kerberos 进行身份验证或其他配置,则基础架构可能更为复杂。)
LDAP 目录和 IdM 服务器之间存在结构性差异,特别是在模式支持和目录树的结构方面。(有关这些差异的更多背景信息,请参阅 第 1.1.2 节 “将身份管理与标准 LDAP 目录进行比较”。) 虽然这些差异可能会影响数据(特别是目录树,这会影响条目名称),但它们对客户端配置的影响很少,因此它对将客户端迁移到身份管理的影响很少。

39.1.1.2. 推荐的 Red Hat Enterprise Linux 客户端的配置

Red Hat Enterprise Linux 有一个名为 系统安全服务守护进程 (SSSD)的服务。SSSD 使用特殊的 PAM 和 NSS 库(pam_sssnss_sss ),允许 SSSD 与身份管理紧密集成,并利用身份管理中的完整身份验证和身份功能。SSSD 具有许多有用的功能,如缓存身份信息,因此即使在中央服务器丢失了连接的情况下,用户也可以登录;这些内容在 系统级身份验证指南中 描述。
与通用 LDAP 目录服务(使用 pam_ldapnss_ldap)不同,SSSD 通过定义 在身份和身份验证信息之间建立关系。SSSD 中的域定义四个后端功能:身份验证、身份查找、访问和密码更改。然后,SSSD 域配置为使用 供应商 为这四个功能中的任何一个(或全部)提供信息。域配置中始终需要一个身份提供程序。其他三个提供程序是可选的;如果未定义身份验证、访问或密码提供程序,则将身份提供程序用于该功能。
SSSD 可以对所有后端功能使用身份管理。这是理想的配置,因为它提供了完整的身份管理功能,这与通用 LDAP 身份提供程序或 Kerberos 身份验证不同。例如,在日常操作过程中,SSSD 在身份管理中强制执行基于主机的访问控制规则和安全功能。
注意
在迁移过程中,从 LDAP 目录到身份管理,SSSD 可以无缝地迁移用户密码,而无需额外的用户交互。

图 39.2. 客户端和带有 IdM 后端的 SSSD

客户端和带有 IdM 后端的 SSSD
ipa-client-install 脚本会自动将 SSSD 配置为对所有四个后端服务使用 IdM,因此默认使用推荐的配置设置 Red Hat Enterprise Linux 客户端。
注意
此客户端配置只支持 Red Hat Enterprise Linux 6.1 及更新的版本和 Red Hat Enterprise Linux 5.7,它支持 SSSD 和 ipa-client 的最新版本。可以配置旧版本的 Red Hat Enterprise Linux,如 第 39.1.1.3 节 “备用支持的配置” 所述。

39.1.1.3. 备用支持的配置

UNIX 和 Linux 系统,如 Mac、Solaris、HP-UX、OSPX 和 Scientific Linux 支持 IdM 管理的所有服务,但不使用 SSSD。同样,旧的 Red Hat Enterprise Linux 版本(6.1 和 5.6)支持 SSSD,但有一个旧版本,它不支持 IdM 作为身份提供程序。
当无法在系统上使用 SSSD 的现代版本时,可以将客户端配置为连接到 IdM 服务器,就像它是身份查找的 LDAP 目录服务(使用 nss_ldap),以及 IdM (就像使用 pam_krb5)一样。

图 39.3. 客户端与带有 LDAP 和 Kerberos 的 IdM

客户端与带有 LDAP 和 Kerberos 的 IdM
如果 Red Hat Enterprise Linux 客户端使用旧版本的 SSSD,则 SSSD 仍可配置为使用 IdM 服务器作为其身份提供者及其 Kerberos 身份验证域;这在 系统级身份验证指南 的 SSSD 配置部分中进行了描述。
任何 IdM 域客户端都可以使用 nss_ldappam_krb5 连接到 IdM 服务器。对于某些维护情况和 IT 结构,可能需要将 LDAP 用于身份和验证(nss_ldappam_ldap)。但是,通常最好将最安全的配置用于客户端。这意味着 SSSD 或 LDAP 用于身份和 Kerberos(用于身份验证)。

39.1.2. 计划密码迁移

很可能影响 LDAP 到身份管理迁移的最可见问题是迁移用户密码。
身份管理(默认)使用 Kerberos 进行身份验证,并且要求每个用户除标准用户密码外,每个用户还有存储在身份管理目录服务器中的 Kerberos 哈希。要生成这些哈希,用户需要以明文形式对 IdM 服务器提供用户密码。当您创建用户时,密码会在哈希化并存储在身份管理之前以明文形式提供。但是,当用户从 LDAP 目录迁移时,相关的用户密码已被哈希处理,因此无法生成对应的 Kerberos 密钥。
重要
用户无法对 IdM 域进行身份验证或访问 IdM 资源,直到它们有 Kerberos 哈希。
如果用户没有 Kerberos 哈希[6],即使他有用户帐户,该用户也无法登录 IdM 域。迁移密码有三个选项:强制更改密码、使用 Web 页面和使用 SSSD。
从现有系统迁移用户会提供更畅的过渡,但还需要在迁移和转换过程中并行管理 LDAP 目录和 IdM。如果您不保留密码,可以更快地执行迁移,但需要管理员和用户进行更多手动操作。

39.1.2.1. 方法 1:使用临时密码和要求更改

当在身份管理中更改密码时,将使用适当的 Kerberos 哈希创建它们。因此,管理员的一种替代方案是在迁移用户帐户时重置所有用户帐户,从而强制用户更改其密码。新用户被分配一个临时密码,在第一次登录时更改密码。没有迁移密码。

39.1.2.2. 方法 2:使用 Migration Web 页面

当它以迁移模式运行时,身份管理在其 Web UI 中有一个特殊的网页,它将捕获明文密码并创建适当的 Kerberos 哈希。
https://ipaserver.example.com/ipa/migration
管理员可以告诉用户对此网页进行身份验证一次,该页面将使用密码和相应的 Kerberos 哈希正确更新其用户帐户,而无需更改密码。

39.1.2.3. 方法 3:使用 SSSD(推荐)

SSSD 可以与 IdM 一起使用,通过生成所需的用户密钥来缓解用户对迁移的影响。对于具有大量用户或用户不应使用密码更改负担的部署,这是最佳方案。
  1. 用户使用 SSSD 登录到机器。
  2. SSSD 尝试对 IdM 服务器执行 Kerberos 身份验证。
  3. 尽管用户存在于系统中,但 不支持错误密钥类型的身份验证会失败,因为 Kerberos 哈希尚不存在。
  4. 然后 SSSD 对安全连接执行纯文本 LDAP 绑定。
  5. IdM 截获此绑定请求。如果用户有 Kerberos 主体,但没有 Kerberos 哈希,则 IdM 身份提供者会生成哈希,并将其存储在用户条目中。
  6. 如果身份验证成功,SSSD 会断开与 IdM 的连接,并再次尝试 Kerberos 身份验证。这一次,请求会成功,因为条目中存在哈希。
整个进程对用户完全透明;就用户所知,他们只需登录客户端服务即可正常工作。

39.1.2.4. 迁移 Cleartext LDAP 密码

尽管大多数部署中 LDAP 密码都存储有加密方式,但可能存在某些用户或某些环境对用户条目使用明文密码。
当用户从 LDAP 服务器迁移到 IdM 服务器时,他们的明文密码不会迁移。身份管理不允许明文密码。相反,会为用户创建 Kerberos 主体,而 keytab 设置为 true,密码设置为过期。这意味着身份管理要求用户在下次登录时重置密码。
注意
如果对密码进行哈希处理,密码将通过 SSSD 和迁移网页成功迁移,如 第 39.1.2.2 节 “方法 2:使用 Migration Web 页面”第 39.1.2.3 节 “方法 3:使用 SSSD(推荐)” 中所示。

39.1.2.5. 自动重置密码,但无需满足要求

如果原始目录中的用户密码不符合身份管理中定义的密码策略,则必须在迁移后重置密码。
当用户第一次尝试 kinit 到 IdM 域时,会自动重置密码。
[jsmith@server ~]$ kinit
Password for jsmith@EXAMPLE.COM:
Password expired.  You must change it now.
Enter new password:
Enter it again:

39.1.3. 迁移注意事项和要求

当您计划从 LDAP 服务器迁移到身份管理时,请确保您的 LDAP 环境能够使用身份管理迁移脚本。

39.1.3.1. 支持迁移的 LDAP 服务器

从 LDAP 服务器到身份管理的迁移过程使用特殊的脚本 ipa migrate-ds 来执行迁移。此脚本对 LDAP 目录和 LDAP 条目的结构有一定的预期,以便能工作。仅支持 LDAPv3 兼容目录服务的迁移,其中包括几个通用目录:
  • Sun ONE 目录服务器
  • Apache 目录服务器
  • OpenLDAP
从 LDAP 服务器迁移到身份管理已使用红帽目录服务器和 OpenLDAP 进行了测试。
注意
Microsoft Active Directory 不支持使用 迁移脚本进行迁移,因为它不是符合 LDAPv3 的目录。如需从 Active Directory 迁移的帮助,请联系红帽专业服务。

39.1.3.2. 迁移环境要求

Red Hat Directory Server 和 Identity Management 有很多不同的配置场景,其中任何一种情况可能会影响迁移过程。对于本章中的迁移过程示例,以下是有关环境的假设:

39.1.3.3. 迁移 - IdM 系统要求

对于中等大小的目录(大约 10,000 个用户和 10 个组),需要具有足够强大的目标系统(IdM 系统)来允许迁移继续进行。迁移的最低要求是:
  • 4 个内核
  • 4GB RAM
  • 30GB 磁盘空间
  • 2MB 的 SASL 缓冲大小(IdM 服务器的默认)
    如果出现迁移错误,请增大缓冲大小:
    [root@ipaserver ~]# ldapmodify -x -D 'cn=directory manager' -w password -h ipaserver.example.com -p 389
    
    dn: cn=config
    changetype: modify
    replace: nsslapd-sasl-max-buffer-size
    nsslapd-sasl-max-buffer-size: 4194304
    
    modifying entry "cn=config"
    设置 nsslapd-sasl-max-buffer-size 值(以字节为单位)。

39.1.3.4. 关于 Sudo 规则的注意事项

如果您已在 LDAP 中使用 sudo,则必须手动迁移存储在 LDAP 中的 sudo 规则。红帽建议在 IdM 中重新创建 netgroups 作为 hostgroups。IdM 为不使用 SSSD sudo 提供者的 sudo 配置自动将 hostgroups 显示为传统的 netgroups。

39.1.3.5. 迁移工具

身份管理使用特定命令 ipa migrate-ds 驱动迁移过程,以便 LDAP 目录数据被正确格式化并导入到 IdM 服务器中。使用 ipa migrate-ds 时,远程系统用户(由 --bind-dn 选项指定)需要具有对 userPassword 属性的读取访问权限,否则不会迁移密码。
身份管理服务器必须配置为在迁移模式下运行,然后可以使用迁移脚本。详情请查看 第 39.3 节 “将 LDAP 服务器迁移到身份管理”

39.1.3.6. 提高迁移性能

LDAP 迁移基本上是 IdM 服务器中 389 目录服务器实例的专用导入操作。调整 389 目录服务器实例以获得更好的导入操作性能,有助于提高整体迁移性能。
有两个参数会直接影响导入性能:
  • nsslapd-cachememsize 属性定义条目缓存允许的大小。这是一个缓冲区,自动设置为总缓存内存大小的 80%。对于大型导入操作,可以增大此参数(或许内存缓存本身),以便更有效地处理大量条目或具有更大属性的条目。
    有关如何使用 ldapmodify 修改属性的详情,请参阅 Red Hat Directory Server 10 性能调节指南中的设置 条目缓存大小。https://access.redhat.com/documentation/zh-cn/red_hat_directory_server/11/html-single/performance_tuning_guide/index#tuning-entry-cache
  • 系统 ulimit 配置选项设置系统用户允许的最大进程数。处理大型数据库可能会超过限制。如果发生这种情况,增加值:
    [root@server ~]# ulimit -u 4096
如需更多信息,请参阅红帽目录服务器 性能调优指南,网址为 https://access.redhat.com/documentation/zh-cn/red_hat_directory_server/11/html-single/performance_tuning_guide/index

39.1.3.7. 迁移序列

迁移到身份管理时有四个主要步骤,但顺序略有不同,具体取决于您要首先迁移服务器还是客户端。
使用基于客户端的迁移时,SSSD 用于在配置 IdM 服务器时更改客户端配置:
  1. 部署 SSSD.
  2. 重新配置客户端以连接到当前的 LDAP 服务器,然后故障转移到 IdM。
  3. 安装 IdM 服务器。
  4. 使用 IdM ipa migrate-ds 脚本迁移用户数据。这会从 LDAP 目录导出数据、IdM 模式的格式,然后将它导入到 IdM。
  5. 使 LDAP 服务器离线,并允许客户端透明地切换到身份管理。
通过服务器迁移,LDAP 到身份管理迁移首先是:
  1. 安装 IdM 服务器。
  2. 使用 IdM ipa migrate-ds 脚本迁移用户数据。这会从 LDAP 目录导出数据,为 IdM 模式格式化数据,然后将其导入到 IdM 中。
  3. 可选。部署 SSSD.
  4. 重新配置客户端来连接到 IdM。无法简单地替换 LDAP 服务器。IdM 目录树 - 因此用户条目 DN - 与之前的目录树不同。
    虽然需要重新配置客户端,但不需要立即重新配置客户端。更新的客户端可以指向 IdM 服务器,而其他客户端则指向旧的 LDAP 目录,从而在数据迁移后可允许合理的测试和过渡阶段。
    注意
    不要长时间并行运行 LDAP 目录服务和 IdM 服务器。这增加了两个服务之间用户数据不一致的风险。
这两个进程都提供常规迁移过程,但可能并不在每个环境中都有效。在尝试迁移真实 LDAP 环境之前,设置测试 LDAP 环境并测试迁移过程。


[6] 可以在身份管理中使用 LDAP 身份验证,而不是 Kerberos 身份验证,这意味着用户不需要 Kerberos 哈希。但是,这限制了身份管理的功能,我们不推荐使用。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.