Sun Java System Directory Server Enterprise Edition 6.3 管理指南

第 5 章 目录服务器条目

本章讨论如何管理目录中的数据条目。此外,还介绍如何设置引用以及如何加密属性值。

规划目录部署时,您需要根据特性对目录将包含的数据类型进行分类。在创建条目和修改默认模式之前,请先阅读《Sun Java System Directory Server Enterprise Edition 6.3 Deployment Planning Guide》中的相关章节。

除非定义了相应的访问控制指令 (Access Control Instruction, ACI),否则将无法修改目录。有关详细信息,请参见第 7 章,目录服务器访问控制

本章包含以下主题:

管理条目

管理条目的最佳方式取决于环境:

使用 DSCC 管理条目

DSCC允许您查看条目的所有可读的未加密属性以及编辑其可写属性。此外,您还可以添加和删除属性、设置多值属性,以及管理条目的对象类。有关如何使用 DSCC 管理条目的详细信息,请参见 DSCC 联机帮助。有关 DSCC 的一般详细信息,请参见目录服务控制中心界面

使用目录编辑器管理条目

目录编辑器是一种易于使用的目录编辑工具,允许管理员和最终用户搜索、创建和编辑数据。此数据采用用户、组和容器的形式。

使用 ldapmodify ldapdelete 管理条目

ldapmodifyldapdelete 命令行实用程序提供了用于添加、编辑和删除目录内容的完整功能。可以使用这些实用程序管理服务器的配置条目和用户条目中的数据。还可以使用这些实用程序编写脚本,以便对一个或多个目录执行批量管理。

本书中的过程几乎都使用了 ldapmodifyldapdelete 命令。以下部分介绍执行这些过程所需的基本操作。有关 ldapmodifyldapdelete 命令的详细信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》

命令行实用程序的输入始终采用 LDIF 格式,可以直接从命令行或通过输入文件提供此输入。以下部分提供了与 LDIF 输入有关的信息,后续部分将介绍适用于每种修改类型的 LDIF 输入。

有关正确设置 LDIF 输入格式的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Guidelines for Providing LDIF Input”

以下部分介绍这些基本操作:

使用 ldapmodify 添加条目

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

可以使用 ldapmodify-a 选项向目录中添加一个或多个条目。以下示例将创建包含用户的结构条目,然后再创建用户条目:


$ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: ou=People,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: People
description: Container for user entries

dn: uid=bjensen,ou=People,dc=example,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetorgPerson
uid: bjensen
givenName: Barbara
sn: Jensen
cn: Babs Jensen
telephoneNumber: (408) 555-3922
facsimileTelephoneNumber: (408) 555-4000
mail: bjensen@example.com
userPassword: secret

-D-w 选项分别提供用户的绑定 DN 和密码(该用户具有创建这些条目的权限)。-a 选项表示将添加 LDIF 中的所有条目。然后将按 DN 和属性值列出每个条目,各条目之间以空行分隔。ldapmodify 实用程序将在输入每个条目后创建该条目,并会报告任何错误。

    按照约定,条目的 LDIF 将列出以下属性:

  1. 条目 DN。

  2. 对象类列表。

  3. 一个或多个命名属性。此属性是 DN 中使用的属性,它不一定属于必需属性。

  4. 所有对象类的必需属性列表。

  5. 要包含的所有允许的属性。

键入 userPassword 属性值时,请提供明文形式的密码。服务器将对此值进行加密,并且只存储加密的值。请务必限制读取权限以保护 LDIF 文件中出现的明文密码。

还可以使用另一种形式的 LDIF,它不要求在命令行中使用 -a 选项。此形式的优点是可以合并条目添加语句和条目修改语句,如以下示例所示。


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password: 
dn: ou=People,dc=example,dc=com
changetype: add
objectclass: top
objectclass: organizationalUnit
ou: People
description: Container for user entries

dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: add
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetorgPerson
uid: bjensen
givenName: Barbara
sn: Jensen
cn: Barbara Jensen
telephoneNumber: (408) 555-3922
facsimileTelephoneNumber: (408) 555-4000
mail: bjensen@example.com
userPassword: secret

changetype: add 关键字表示应该使用所有后续属性创建具有给定 DN 的条目。所有其他选项和 LDIF 约定都与本部分前面的叙述相同。

在这两个示例中,都可以使用 -f filename 选项从文件(而非终端输入)中读取 LDIF。LDIF 文件所包含的格式必须与终端输入使用的格式相同,这取决于您是否使用 -a 选项。

使用 ldapmodify 修改条目

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

可以使用 changetype: modify 关键字在现有条目中添加、替换或删除属性及属性值。指定 changetype: modify 时,还必须提供一个或多个更改操作,以表明将如何修改条目。以下示例中显示了三种可能的 LDIF 更改操作:


dn: entryDN
changetype: modify
add: attribute 
attribute: value...
-
replace: attribute 
attribute: newValue...
-
delete: attribute 
[attribute: value]
...

可以使用独占一行的连字符 (-) 分隔相同条目上的操作,并可使用空行来分隔不同条目上的操作组。还可以为每个操作提供多个 attribute: value 对。

添加属性值

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

以下示例显示如何使用相同的 add LDIF 语法向现有多值属性和尚未存在的属性中添加值:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
add: cn
cn: Babs Jensen
-
add: mobile
mobile: (408) 555-7844

如果存在以下任一情况,则此操作可能会失败,并且服务器将返回错误:

使用二进制属性子类型

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

attribute;binary 子类型表示属性值必须作为二进制数据通过 LDAP 进行传输,而不考虑属性值的实际语法。此子类型适用于没有 LDAP 字符串表示的复杂语法,如 userCertificate。不应将二进制子类型用于其他目的。

ldapmodify 命令中使用时,可以将相应的子类型添加到任何 LDIF 语句的属性名称中。

要输入二进制值,可以在 LDIF 文本中直接键入或从其他文件读取。以下示例显示了用于从文件读取二进制值的 LDIF 语法:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
version: 1
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
add: userCertificate;binary
userCertificate;binary:< file:///local/cert-file

要使用 :< 语法指定文件名,必须将 version: 1 行作为 LDIF 语句的开头。当 ldapmodify 处理此语句时,它会将属性设置为从给定文件的全部内容中读取的值。

添加具有语言子类型的属性

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

属性的语言和发音子类型可指定本地化的值。为属性指定语言子类型时,该子类型将添加到属性名称中,如下所示:


attribute;lang-CC

其中 attribute 是现有属性类型,而 cc 是用于指定语言的双字母国家/地区代码。您还可以将发音子类型添加到语言子类型中,以便为本地化的值指定一个语音值。在本案例中,属性名称如下所示:


attribute;lang-CC;phonetic

要对具有子类型的属性执行操作,必须明确匹配其子类型。例如,如果要修改具有 lang-fr 语言子类型的属性值,则必须在修改操作中包含 lang-fr,如下所示:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
add: homePostalAddress;lang-fr
homePostalAddress;lang-fr: 34, rue de la Paix

注 –

如果属性值包含非 ASCII 字符,则这些字符必须为 UTF-8 编码的字符。


修改属性值

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

以下示例说明如何通过使用 LDIF 中的 replace 语法更改属性值:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
replace: sn
sn: Morris
-
replace: cn
cn: Barbara Morris
cn: Babs Morris

将删除指定属性的所有当前值,并添加所有给定值。

更改属性值之后,您可以使用 ldapsearch 命令验证此更改。

属性值中的结尾空格

修改属性值时,请勿不小心在值的末尾包含空格。结尾空格可能会导致值以 base-64 编码格式显示(如 34xy57eg)。

如果属性值的末尾是空格,则此空格将作为属性值的一部分进行编码。在使用 DSCC 或 ldapsearch 命令验证更改时,所显示的值可能是纯文本,也可能是 base-64 编码的文本。这取决于您所使用的目录服务器客户端。

删除属性值

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

以下示例说明如何完整地删除属性,以及如何仅删除多值属性的一个值:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
delete: facsimileTelephoneNumber
-
delete: cn
cn: Babs Morris

使用 delete 语法时如果不指定 attribute: value 对,将删除该属性的所有值。如果指定 attribute: value 对,则只会删除该值。

修改多值属性的一个值

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

要使用 ldapmodify 命令修改多值属性的一个值,必须执行以下示例中显示的两个操作:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
delete: mobile
mobile: (408) 555-7845
-
add: mobile
mobile: (408) 555-5487

使用 ldapdelete 删除条目

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

可以使用 ldapdelete 命令行实用程序从目录中删除条目。此实用程序将绑定到目录服务器,并根据条目 DN 删除一个或多个条目。必须提供具有删除指定条目的权限的绑定 DN。

您无法删除具有子条目的条目。LDAP 协议不允许出现子条目不再具有父条目的情形。例如,您无法删除组织单位条目,除非先删除了属于该组织单位的所有条目。

以下示例仅显示组织单位的一个条目。可以先后删除此条目及其父条目。


$ ldapdelete -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password:
uid=bjensen,ou=People,dc=example,dc=com
ou=People,dc=example,dc=com

使用 ldapmodify 删除条目

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

使用 ldapmodify 实用程序时,还可以使用 changetype: delete 关键字删除条目。使用 ldapdelete 时的所有限制此时同样适用,如上一部分所述。使用 LDIF 语法删除条目的优点在于,您可以在单个 LDIF 文件中执行混合操作。

以下示例执行与上一示例相同的删除操作:


$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: delete

dn: ou=People,dc=example,dc=com
changetype: delete

使用 ldapsearch 搜索条目

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

可以使用 ldapsearch 命令行实用程序查找和检索目录条目。请注意,ldapsearch 实用程序不是 Solaris 平台提供的实用程序,而是 Directory Server Resource Kit 的一部分。

有关使用 ldapsearchldapsearch 常用选项、接受的格式以及示例的详细信息,请参阅《Sun Java System Directory Server Enterprise Edition 6.3 Reference》

Procedure使用 ldapmodify 移动或重命名条目

以下过程将使用修改 DN 操作。在开始此操作之前,请确保您已经熟悉使用修改 DN 操作的准则和限制部分的内容。

对于此过程的某些部分,可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。此过程的其他部分只能使用命令行完成。


注 –

在修改作为组 uniquemember 的条目 DN 时,必须启用引用完整性插件。引用完整性可确保在移动条目时调整组成员。有关如何启用和配置引用完整性插件的信息,请参见配置引用完整性插件


  1. 如果要将条目从一个父条目移动到另一个父条目中,请在这些父条目上扩展 ACI 权限。

    • 在要移动的条目的当前父条目上,确保 ACI 允许通过使用语法 allow (export ...) 执行导出操作

    • 在要移动的条目的将来父条目上,确保 ACI 允许通过使用语法 allow (import ...) 执行导入操作

    有关使用 ACI 的信息,请参见第 7 章,目录服务器访问控制

  2. 确保全局启用修改 DN 操作,或至少为将受移动操作影响的后缀启用该操作。

    为了确保与以前的目录服务器发行版兼容,默认情况下不启用修改 DN 操作。

    如果以前启用了修改 DN 操作,请转至下一步。

    要为服务器全局启用修改 DN 操作,请使用以下命令:


    $ dsconf set-server-prop -h host -p port moddn-enabled:on
  3. 运行 ldapmodify 命令。

    此步骤将使用修改 DN 操作。执行以下任一操作:

    • 移动条目。

      例如,以下命令可将条目uid=bjensen 从承包商的子树 ou=Contractors,dc=example,dc=com 移动到员工的子树 ou=People,dc=example,dc=com 中:


      $ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
      Enter bind password:
      dn: uid=bjensen,ou=Contractors,dc=example,dc=com
      changetype: modrdn
      newrdn: uid=bjensen
      deleteoldrdn: 0
      newsuperior: ou=People,dc=example,dc=com
    • 重命名条目。

      例如,以下命令可将条目 uid=bbjensen 重命名为 uid=bjensen


      $ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
      Enter bind password:
      dn: uid=bbjensen,ou=People,dc=example,dc=com
      changetype: modrdn
      newrdn: uid=bjensen
      deleteoldrdn: 1

    编写 LDIF 语句时请注意以下属性:

    • dn - 指定要重命名或移动的条目。

    • changetype: modrdn - 指定要使用的修改 DN 操作。

    • newrdn - 提供新的命名属性。

    • deleteoldrdn - 表示是否应该从条目中删除以前的命名属性(1 表示是,0 表示否)。

      请注意,如果命名属性是条目定义中必需的属性,则无法从条目中删除此属性。

    • newsuperior - 指定条目的新上级属性。

    有关 ldapmodify 命令及其选项的信息,请参见 ldapmodify(1) 手册页。

  4. 如果在移动或重命名包含大量条目的子树时遇到资源限制错误,请增加数据库可以使用的锁定数。


    $ dsconf set-server-prop -h host -p port db-lock-count:value
    

    如果修改此属性,则必须重新启动服务器以使更改生效。

使用修改 DN 操作的准则和限制

使用修改 DN 操作时(如上一部分所述),请遵循以下部分介绍的准则。

使用修改 DN 操作的一般准则

协同使用修改 DN 操作和复制时的准则


注意 – 注意 –

使用修改 DN 操作时如果不符合以下要求,可能会中断复制并破坏目录服务。


设置引用

可以使用引用通知客户端应用程序应该联系哪个服务器(如果无法在本地获取此信息)。引用是指向远程后缀或条目的指针,目录服务器将其代替结果返回给客户端。然后,客户端必须在引用中所指定的远程服务器上再次执行操作。

在以下三种情况下将发生重定向:

在任何情况下,引用都是一个 LDAP URL,其中包含主机名、端口号以及其他服务器上的 DN(可选)。例如 ldap://east.example.com:389

有关如何在目录部署中使用引用的概念性信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Deployment Planning Guide》

以下部分介绍设置目录默认引用以及创建和定义智能引用的过程。

设置默认引用

客户端应用程序在某个 DN 上提交操作时,如果由目录服务器维护的任何后缀都不包含该 DN,则会将默认引用返回给该客户端应用程序。服务器将返回定义的所有引用,但不会定义返回引用的顺序。

Procedure设置默认引用

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 使用 dsconf 命令行实用程序设置一个或多个默认引用。


    $ dsconf set-server-prop -h host -p port suffix-DN referral-url:referral-URL
    

    例如:


    $ dsconf set-server-prop -h host1 -p 1389 dc=example,dc=com \
     referral-url:ldap://east.example.com:1389

设置智能引用

智能引用允许您将目录条目或目录树映射到特定的 LDAP URL。使用智能引用时,可以将客户端应用程序引用到特定服务器或特定服务器上的特定条目。

智能引用通常指向另一个服务器上具有相同 DN 的实际条目。但是,您可以将智能引用定义为指向相同服务器或不同服务器上的任何条目。例如,您可以将具有以下 DN 的条目定义为智能引用:


uid=bjensen,ou=People,dc=example,dc=com

该智能引用指向服务器 east.example.com 上的另一个条目:


cn=Babs Jensen,ou=Sales,o=east,dc=example,dc=com

目录使用智能引用的方式应符合 RFC 4511 (http://www.ietf.org/rfc/rfc4511.txt) 的 4.1.10 部分所指定的标准。

Procedure创建和修改智能引用

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 要创建智能引用,请使用 referralextensibleObject 对象类来创建条目。

    referral 对象类允许使用应包含 LDAP URL 的 ref 属性。extensibleObject 对象类允许您将任何模式属性用作命名属性,以便与目标条目相匹配。

    例如,要定义以下可返回智能引用(而不是条目 uid=bjensen)的条目,请使用如下命令:


    $ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
    Enter bind password:
    dn: uid=bjensen,ou=People,dc=example,dc=com
    objectclass: top
    objectclass: extensibleObject
    objectclass: referral
    uid: bjensen
    ref: ldap://east.example.com/cn=Babs%20Jensen,ou=Sales,o=east,dc=example,dc=com

    注 –

    服务器将忽略 LDAP URL 中位于空格后的所有信息。因此,在用作引用的任何 LDAP URL 中,都必须使用 %20 代替空格。其他特殊字符必须进行转义。


    定义智能引用之后,对 uid=bjensen 条目的修改实际上将在其他服务器的 cn=Babs Jensen 条目上执行。ldapmodify 命令将自动跟踪引用,例如:


    $ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
    Enter bind password:
    dn: uid=bjensen,ou=People,dc=example,dc=com
    changetype: replace
    replace: telephoneNumber
    telephoneNumber: (408) 555-1234
  2. (可选的)要修改智能引用条目,请使用 ldapmodify-M 选项:


    $ ldapmodify -M -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
    Enter bind password:
    dn: uid=bjensen,ou=People,dc=example,dc=com
    changetype: replace
    replace: ref
    ref: ldap://east.example.com/cn=Babs%20Jensen,ou=Marketing,o=east,dc=example,dc=com

检查有效的属性语法

只要执行以下操作,目录服务器都允许您检查属性的完整性:

检查可确保属性值符合 IETF 建议。所有不符合的属性都将被拒绝并记录到错误日志中。日志消息包含连接和操作 ID(如果适用)。

默认情况下,服务器不会自动检查上述操作的语法。如果要启用语法检查,请使用以下过程。


注 –

语法检查与模式检查有所不同。有关模式检查的信息,请参见管理模式检查


Procedure启用自动语法检查

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 要启用自动语法检查,请使用以下命令:


    $ dsconf set-server-prop -h host -p port check-syntax-enabled:on

跟踪对目录条目的修改

默认情况下,服务器会为新创建或已修改的条目维护一些特殊属性,如 LDAP v3 规范中所指定的那样。这些特殊属性存储在后缀中的条目上,其中包括:

Procedure关闭条目修改跟踪

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。


注意 – 注意 –

关闭条目修改跟踪会导致不兼容的数据。由于许多应用程序都依赖于这些属性,并且禁用此功能只会使性能略为提高,因此建议您不要关闭条目修改跟踪。


  1. 关闭服务器的条目修改跟踪。


    $ dsconf set-server-prop -h host -p port suffix-DN mod-tracking-enabled:off

加密属性值

属性加密可保护存储在目录中的敏感数据。属性加密允许您指定以加密格式存储条目的某些属性。这可防止读取存储在数据库文件、备份文件和导出的 LDIF 文件中的数据。

使用此功能,将属性值存储到目录服务器数据库之前会对其进行加密,并在返回给客户端之前解密回原始值。您必须使用访问控制来阻止没有权限的客户端访问此类属性,并在客户端和目录服务器之间传输属性值时使用 SSL 对属性值进行加密。有关一般情况下的数据安全性和特殊情况下的属性加密的结构性概述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》

只有在服务器上配置和启用 SSL 之后,属性加密才处于活动状态。但在默认情况下,任何属性都未加密。属性加密是在后缀级别上配置的,这意味着会在后缀包含该属性的每个条目中加密该属性。如果您要在整个目录中加密属性,则必须在每个后缀中为该属性启用加密。


注意 – 注意 –

属性加密将影响与后缀关联的所有数据和索引文件。如果修改现有后缀的加密配置,则必须先导出该后缀的内容,再更改配置,然后重新导入内容。DSCC 可以帮助您执行这些步骤。有关使用 DSCC 的详细信息,请参见目录服务控制中心界面

为了更加安全,在为任何属性启用加密时,都应手动删除可能仍包含未加密值的数据库缓存文件和数据库日志文件。配置属性加密中介绍了删除这些文件的过程。

在新后缀中装入或创建数据之前,应该启用所有加密属性。


如果选择加密被某些条目用作命名属性的属性,则 DN 中显示的值将不会被加密。存储在条目中的值将被加密。

即使可以在配置加密时选择 userPassword 属性,也不会实际提高安全性,除非需要以明文形式存储密码。DIGEST-MD5 SASL 验证就是这种情况。如果密码已在密码策略中定义了加密机制,则进一步加密只能使安全性略为提高,且反而会影响每个绑定操作的性能。

在存储时,加密的属性前会加上一个表示所用加密算法的密码标记。使用 DES 加密算法的加密属性将显示为如下形式:


{CKM_DES_CBC}3hakc&jla+=snda%

当您考虑到数据加密而联机导入数据时,就已经提供了用于通过服务器验证的密钥数据库密码,系统不会再出现此提示。如果要脱机导入数据,目录服务器会先提示您输入密码,然后才允许您加密要导入的数据。解密数据(此操作需要更高的安全性)时,无论联机还是脱机执行导出操作,目录服务器都会自动提示您输入密钥数据库密码。这可进一步提高安全性。


注 –

只要证书或私钥不发生更改,服务器将继续生成相同的密钥。因此,如果两个服务器实例使用相同的证书,则可以将数据从一个服务器实例传输到另一个服务器实例(先导出然后再导入)。


属性加密和性能

虽然属性加密提供了增强的数据安全性,但也会影响系统性能。请仔细考虑哪些属性需要加密,并且只加密您认为特别敏感的那些属性。

由于可以通过索引文件直接访问敏感数据,因此必须加密与加密属性相对应的索引键,以确保属性受到完整保护。如果索引已对目录服务器性能造成影响(尚未包括加密索引键所造成的影响),请在第一次将数据导入或添加到数据库之前配置属性加密。此过程可确保对加密属性的索引就像从头开始编制一样。

属性加密使用注意事项

执行属性加密功能时请考虑以下事项:

Procedure配置属性加密

可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 如果要配置属性加密的后缀中包含任何条目,都必须先将该后缀的内容导出到 LDIF 文件。

    如果后缀包含加密的属性,并且您计划使用导出的 LDIF 文件重新初始化该后缀,则可以使这些属性在导出的 LDIF 文件中保持加密状态。

  2. 要启用属性加密,请使用以下命令:


    $ dsconf create-encrypted-attr -h host -p port suffix-DN attr-name cipher-name
    

    其中 cipher-name 可为以下任一选项:

    • des - DES 块密码

    • des3 - 3DES 块密码

    • rc2 - RC2 块密码

    • rc4 - RC4 流密码

    例如:


    $ dsconf create-encrypted-attr -h host1 -p 1389 dc=example,dc=com uid rc4
  3. 要将加密的属性还原为原始状态,请使用以下命令:


    $ dsconf delete-encrypted-attr -h host -p port suffix-DN attr-name
    
  4. 如果更改了配置以加密一个或多个属性,并且在执行导入操作前这些属性已具有值,请清除数据库缓存并删除日志。

    在数据库缓存和数据库日志中不会显示任何未加密的值。


    注 –

    如果删除这些文件,将丢失某些跟踪信息。此外,在删除这些文件之后,服务器将处于恢复模式,可能需要很长时间才能重新启动。


    清除数据库缓存和删除日志:

    1. 停止目录服务器,如启动、停止和重新启动目录服务器实例所述。

    2. 以超级用户或具有管理员权限的用户身份从文件系统中删除数据库缓存文件。


      # rm instance-path/db/__db.*
    3. 从文件系统中删除数据库日志文件。


      # rm instance-path/db/log.0000000001
    4. 重新启动目录服务器。

      服务器将自动创建新的数据库缓存文件。在重新填充缓存之前,此后缀中的操作性能可能会略受影响。

  5. 使用 LDIF 文件初始化后缀,如初始化后缀所述。

    装入文件并创建相应索引之后,指定属性的所有值都将被加密。