第 3 章 分配和管理唯一的数字属性值
有些条目属性值需要唯一的数字,如 uidNumber 和 gidNumber。使用分布式数字分配(DNA)插件,您可以将目录服务器配置为自动从配置的数量生成并分配唯一数字到指定属性。
DNA 插件不能保证 属性唯一性。如果您从插件管理的范围内手动分配了一个值,则插件不会检查该值是否是唯一的。
使用 DNA 插件,您可以通过为供应商上的不同本地 DNA 插件实例设置不同的范围来有效地避免复制冲突。例如,供应商 A 可以从 1 到 1000 分配数字,供应商 B 可将数字从 1001 分配给 2000。这样可确保每个供应商都使用真正唯一的数字集。
3.1. 关于动态数字分配 复制链接链接已复制到粘贴板!
DNA 插件分配实例可以发布的可用数字范围。两个属性定义范围定义:服务器下一个可用数字(范围的 botton 值)及其最大值( 范围的上限)。在配置插件时,您可以设置初始底部值。之后,插件会更新这个底部值。
通过将可用数字分解为每个副本上的独立范围,服务器可以持续分配数字,而不会相互重叠。
3.1.1. 过滤器、搜索和目标条目 复制链接链接已复制到粘贴板!
服务器在内部执行排序的搜索,以验证其他服务器是否已采用下一个指定范围,要求 managed 属性具有具有正确顺序匹配规则的平等索引。
DNA 插件始终应用到目录树的特定区域( 范围 )以及该子树中的特定条目类型( 过滤器)。
DNA 插件 仅适用于单个 数据库,无法管理多个数据库的编号分配。DNA 插件使用 sort 控制来检查在 DNA 插件之外是否手动分配值。但是,这种验证使用 sort 控件仅适用于单个数据库。
3.1.2. 使用 dnaMagicRegen分配唯一数字 复制链接链接已复制到粘贴板!
使用 magic 值(dnaMagicRegen)作为 DNA 插件管理的属性的模板值。这个魔法值是服务器范围之外的内容、数字甚至一个单词。当使用 magic 值添加条目且该条目位于 DNA 插件的配置范围和过滤器中时,magic 值会自动触发插件来生成新的唯一值。
例如,您可以使用 ldapmodify 工具将零(0)添加为一个 magic 值:
使用配置的 dnaMagicRegen,DNA 插件只针对在添加条目时值等于 magic 值的属性生成唯一的值。如果您没有为 DNA 插件设置 magic 值,则插件会覆盖受管属性的任何值。
- 备注
- 在这种情形中,DNA 插件仅管理一个属性,并且添加的条目不包含 managed 属性,则 add 操作会触发 DNA 插件来添加此属性并为它生成唯一值。
3.1.3. 同一范围内的多个属性 复制链接链接已复制到粘贴板!
DNA 插件可以从单个唯一数字中分配唯一数字到单个或多个属性类型。
这为为属性分配唯一数字的多个选项:
- 来自唯一范围内的单个属性类型的单个数字。
- 个条目中两个属性的唯一数字相同。
- 分配了两个不同的属性,与相同范围的唯一数字不同。
在很多情况下,为每个属性类型分配唯一数字就足够了。例如,当将 employeeID 分配给新员工条目时,务必要确保每个员工条目收到唯一的 employeeID。
但是,您可以将同一范围内的唯一数字分配给多个属性。例如,当将 uidNumber 和 gidNumber 分配给 posixAccount 条目时,DNA 插件可以为这两个属性分配相同的数字。要做到这一点,将受管属性传递给修改操作,并使用 ldapmodify 工具指定 magic 值(0):
当 DNA 插件处理多个属性时,它只能在对象类只允许一个属性时为一个属性分配唯一的值。例如,posixGroup 对象类允许 gidNumber,但不能 uidNumber。如果 DNA 插件管理 uidNumber 和 ,它会在创建 gidNumber posixGroup 条目时为 uidNumber 和 gidNumber 属性范围分配一个唯一数字。为所有受管属性共享池可确保统一分配唯一数字,从而防止在不同条目上的 uidNumber 和 gidNumber 冲突,与单独的范围相同。
如果 DNA 插件管理多个属性,它会在单个修改操作中为所有这些属性分配相同的值。但是,如果条目不允许为范围定义的每种属性,或者条目允许所有定义的属性类型,但只有属性的子集需要唯一值,您必须通过执行单独的修改操作来从同一范围分配 不同 数量。例如:
例 3.1. 示例。DNA 和唯一银行客户号码
示例银行希望将相同的唯一数字用于客户的 primaryAccount 和 customerID 属性。Example bank 管理员配置了 DNA 插件,为同一范围内的两个属性分配唯一的值。
此外,银行希望为来自客户 ID 和主要帐户编号的二级账户分配号,但这些数字不能与主要帐户号相同。Example bank 管理员配置 DNA 插件也会管理 属性,但仅在创建条目并分配 secondaryAccount primaryAccount 和 customerID 属性 后,将 secondaryAccount 属性添加到条目中。这可确保 primaryAccount 和 customerID 共享相同的唯一数字,并且任何 secondAccount 号码都完全唯一,但仍来自同一范围的数字。