4.5. 自定义从 LDAP 到 IdM 的迁移

您可以使用 ipa migrate-ds 命令将身份验证和授权服务从 LDAP 服务器迁移到身份管理(IdM)。如果没有附加选项,命令会获取目录的 LDAP URL,来根据常见的默认设置迁移和导出数据。

您可以使用不同的 ipa migrate-ds 命令选项来自定义迁移过程,以及数据如何被识别和导出。如果您的 LDAP 目录树具有唯一的结构,或者您知道必须排除某些条目或条目中的某些属性,则可以自定义迁移。

4.5.1. 从 LDAP 迁移到 IdM 的过程中自定义绑定 DN 和基本 DN 的示例

使用 ipa migrate-ds 命令来从 LDAP 迁移到身份管理(IdM)。如果没有附加选项,命令会获取目录的 LDAP URL,来根据常见的默认设置迁移和导出数据。以下是修改默认设置的示例:

# ipa migrate-ds ldap://ldap.example.com:389
自定义绑定 DN

默认情况下,DN "cn=Directory Manager" 用于绑定到远程 LDAP 目录。使用 --bind-dn 选项来指定自定义绑定 DN:

# ipa migrate-ds ldap://ldap.example.com:389 --bind-dn=cn=Manager,dc=example,dc=com
自定义命名上下文

如果 LDAP 服务器命名上下文与 IdM 中使用的不同,对象的基本 DN 会被转换。例如: uid=user,ou=Person,dc=ldap,dc=example,dc=com 被迁移到 uid=user,ou=Person,dc=idm,dc=example,dc=com。使用 --base-dn 选项,您可以更改容器子树的目标,因此设置远程 LDAP 服务器上用于迁移的基本 DN:

# ipa migrate-ds --base-dn="ou=people,dc=example,dc=com" ldap://ldap.example.com:389

其他资源

  • ipa migrate-ds --help

4.5.2. 特定子树的迁移

默认目录结构将人员条目置于 ou=People 子树中,并将组条目置于 ou=Groups 子树中。这些子树是这些不同类型的目录数据的容器条目。如果您不将任何选项用于 migrate-ds 命令,则 工具假定给定的 LDAP 目录使用 ou=Peopleou=Groups 结构。

许多部署可能具有完全不同的目录结构,或者您可能只想导出原始目录树的某些部分。作为管理员,您可以使用以下选项来指定源 LDAP 服务器上不同用户或组子树的 RDN:

  • --user-container
  • --group-container
注意

在这两种情况下,子树都必须是相对区分名称(RDN),并且必须相对于基本 DN。例如,您可以使用 --user-container=ou=Employees 迁移 >ou=Employees,dc=example,dc=com 目录树。

例如:

[ipaserver ~]# ipa migrate-ds --user-container=ou=employees \
--group-container="ou=employee groups" ldap://ldap.example.com:389

另外,还可在 ipa migrate-ds 命令中添加 --scope 选项来设置范围:

  • onelevel :默认的。仅迁移指定容器中的条目。
  • subtree :指定容器中的条目以及所有子容器都被迁移。
  • base :仅迁移指定的对象本身。

4.5.3. 条目的包含和排除

默认情况下,ipa migrate-ds 脚本导入具有 person 对象类的每个用户条目,以及具有 groupOfUniqueNamesgroupOfNames 对象类的每个组条目。

在某些迁移路径中,可能需要导出特定类型的用户和组,或者需要排除特定的用户和组。您可以通过在查找用户或组条目时设置要搜索的对象类来选择要包括哪个用户和组 类型

当您对不同的 用户 类型使用自定义对象类时,此选项特别有用。例如,以下命令仅迁移具有自定义 fullTimeEmployee 对象类的用户:

[root@ipaserver ~]# ipa migrate-ds --user-objectclass=fullTimeEmployee ldap://ldap.example.com:389

由于不同类型的组,这对于仅迁移某些类型的 (如用户组),同时排除其他类型的组(如证书组)也非常有用,。例如:

[root@ipaserver ~]# ipa migrate-ds --group-objectclass=groupOfNames --group-objectclass=groupOfUniqueNames ldap://ldap.example.com:389

根据对象类指定要迁移的用户和组条目,可以隐式地将所有其他用户和组从迁移中排除。

或者,除了少量条目之外,迁移所有用户和组条目也很有用。您可以在迁移该类型的所有其他用户或组帐户时排除特定的用户或组帐户。例如,这仅排除一个 hobbies 组和两个用户:

[root@ipaserver ~]# ipa migrate-ds --exclude-groups="Golfers Group" --exclude-users=idmuser101 --exclude-users=idmuser102 ldap://ldap.example.com:389

exclude 语句应用到与 uid 中模式匹配的用户,以及在 cn 属性中与其匹配的组。

您可以迁移常规对象类,但排除该类的特定条目。例如,这特别包括具有 fullTimeEmployee 对象类的用户,但排除了三个管理者:

[root@ipaserver ~]# ipa migrate-ds --user-objectclass=fullTimeEmployee --exclude-users=jsmith --exclude-users=bjensen --exclude-users=mreynolds ldap://ldap.example.com:389

4.5.4. 条目属性的排除

默认情况下,用户或组条目的每个属性和对象类都将被迁移。在某些场景中,由于带宽和网络的约束,或者由于属性数据不再相关,这可能不太现实。例如,如果在用户在加入身份管理(IdM)域时为其分配了新用户证书,那么迁移 userCertificate 属性就毫无用处。

您可以通过在 migrate-ds 命令中使用以下选项来忽略特定的对象类和属性:

  • --user-ignore-objectclass
  • --user-ignore-attribute
  • --group-ignore-objectclass
  • --group-ignore-attribute

例如,要为用户排除 userCertificate 属性和 strongAuthenticationUse 对象类,为组排除 groupOfCertificate 对象类:

[root@ipaserver ~]# ipa migrate-ds --user-ignore-attribute=userCertificate --user-ignore-objectclass=strongAuthenticationUser --group-ignore-objectclass=groupOfCertificates ldap://ldap.example.com:389
注意

确保不要忽略任何必需的属性。另外,在排除对象类时,请确保排除该对象类只支持的任何属性。

4.5.5. 从 LDAP 迁移到 IdM 时使用的模式和模式兼容特性

身份管理(IdM)使用 RFC2307bis 模式来定义用户、主机、主机组和其他网络身份。但是,如果用作迁移源的 LDAP 服务器使用 RFC2307 模式,请在使用 ipa migrate-ds 命令时指定 --schema 选项:

[root@ipaserver ~]# ipa migrate-ds --schema=RFC2307 ldap://ldap.example.com:389

另外,IdM 具有内置 模式兼容特性,其允许 IdM 为不支持 RFC2307bis 的系统重新格式化数据。兼容插件默认为启用,这意味着目录服务器会计算用户和组的替代视图,并在 cn=users,cn=compat,dc=example,dc=com 容器条目中提供此视图。它通过在启动时预先计算其条目内容来实现,并根据需要刷新其条目。

建议在迁移过程中禁用此特性,以减少系统开销。