搜索

3.5. 维护一致性架构

download PDF
目录服务器中的一致性模式可帮助 LDAP 客户端应用程序查找目录条目。使用不一致的 schema 将很难在目录树中高效地查找信息。
不一致的 schema 使用不同的属性或格式来存储相同的信息。通过以下方法维护 schema 一致性:
  • 使用 schema 检查来确保属性和对象类符合 schema 规则。
  • 使用语法验证,以确保属性值与所需属性语法匹配。
  • 选择并应用一致的数据格式。

3.5.1. Schema 检查

架构检查可确保所有新的或修改的目录条目均符合 schema 规则。当违反规则时,目录会拒绝请求的更改。
注意
架构检查仅检查是否存在正确的属性。要验证属性值是否正确语法,请使用语法验证,如 第 3.5.2 节 “语法验证” 所述。
默认情况下,目录启用 schema 检查。红帽建议不要禁用此功能。有关启用和禁用模式检查的详情,请参考 红帽目录服务器管理指南
启用架构检查后,对于对象类定义的必需属性不利。对象类定义通常至少包含一个必需属性以及一个或多个可选属性。可选属性是可以是的属性,但不需要添加到目录条目中。尝试向条目的对象类定义没有必要或允许的条目中添加属性会导致 Directory 服务器返回对象类违反消息。
例如,如果将一个条目定义为使用 organizationalPerson 对象类,则该条目需要通用名称(cn)和 surname (sn)属性。也就是说,创建条目时必须设置这些属性的值。另外,还有可在条目上使用的属性列表,包括 telephoneNumberuidstreetAddressuserPassword 等描述性属性。

3.5.2. 语法验证

语法验证 意味着 Directory 服务器检查属性值是否与该属性的所需语法匹配。例如,语法验证将确认一个新的 telephoneNumber 属性实际具有其值的有效电话号码。

3.5.2.1. 语法验证概述

默认情况下启用语法验证。这是最基本的语法验证。与架构检查一样,这将验证任何目录修改并拒绝违反语法规则的更改。可以选择性地配置其他设置,使语法验证可以记录关于语法违规消息,然后拒绝修改或允许修改过程成功。
语法验证会检查添加新属性值的 LDAP 操作,因为添加了新的属性或因为属性值已更改。语法验证不会处理通过像复制一样通过数据库操作添加的现有属性或属性。可以使用特殊脚本 syntax-validate.pl 验证现有属性。
这个功能会验证所有属性语法,但二进制语法(无法验证)和非标准语法(没有定义所需的格式)和非标准语法除外。语法是根据 RFC 4514 ( DN 之外)进行验证,该语法针对不太严格的 RFC 1779RFC 2253 进行验证。(可以配置多个 DN 验证。)

3.5.2.2. 语法验证和其他目录服务器操作

语法验证对于标准 LDAP 操作主要相关,如创建条目(添加)或编辑属性(修改)。验证属性语法可能会影响其他目录服务器操作。

数据库加密

对于普通的 LDAP 操作,属性仅在值写入数据库之前加密。这意味着,加密会在验证属性语法进行。

可以导出并导入加密的数据库(如 第 9.8 节 “加密数据库”所述)。通常,强烈建议使用 db2ldifldif2db-E 标志完成这些导出和导入操作,这允许导入操作正常进行。但是,如果加密数据库在没有使用 -E 标志(不支持)的情况下导出,那么会创建一个带有加密值的 LDIF。当导入此 LDIF 后,无法验证加密的属性,则会记录警告,并在导入的条目中跳过属性验证。

同步

对于 Windows Active Directory 条目和 Red Hat Directory Server 条目中的属性,允许或拒绝语法存在区别。在这种情况下,Active Directory 值无法正确同步,因为语法验证会在 Directory Server 条目中强制实施 RFC 标准。

复制

如果 Directory Server 11.0 实例是一个将更改复制到消费者的供应商,则使用语法验证没有问题。但是,如果复制中的供应商是旧版本的目录服务器或已禁用语法验证,则 11.0 消费者上不应使用语法验证,因为目录服务器 11.0 使用者可能会拒绝供应商允许的属性值。

3.5.3. 选择一致性数据格式

LDAP 模式允许任何数据放置在任何属性值中。但是,务必要通过选择适合 LDAP 客户端应用程序和目录用户的格式,将数据存储在目录树中。
使用 LDAP 协议和目录服务器时,数据必须使用 RFC 2252 中指定的数据格式表示。例如,两个 ITU-T 建议中定义了正确的 LDAP 格式用于电话号码:
  • ITU-T 建议 E.123.国家和国际电话号码表示法。
  • ITU-T 建议 E.163.国际电话服务的数字计划。例如,美国电话号码格式化为 +1 555 222 1717
再如,postalAddress 属性需要一个以多行字符串形式的属性值,该形式使用美元符号($)作为行分隔符。正确格式化的目录条目如下:
postalAddress: 1206 Directory Drive$Pleasant View, MN$34200
属性可以要求字符串、二进制输入、整数和其他格式。允许的格式在属性的 schema 定义中设置。

3.5.4. 维护复制架构

在编辑目录架构时,更改会记录在 changelog 中。在复制过程中,对更改进行扫描后,会复制任何更改。在复制模式下保持一致性,复制可以平稳进行。考虑在复制环境中保持一致的模式:
  • 不要修改只读副本中的 schema。
    在只读副本中修改 schema 在 schema 中引入了不一致的问题,并导致复制失败。
  • 不要创建具有相同名称的属性,它们使用不同的语法。
    如果在读写副本中创建属性,其名称与供应商副本上的属性相同,但与供应商的属性不同,复制将失败。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.