4.2. 设计目录树
- 选择包含数据的后缀。
- 确定数据条目之间的分层关系。
- 命名目录树层次结构中的条目。
4.2.1. 选择 Suffix 复制链接链接已复制到粘贴板!
4.2.1.1. 后缀命名 复制链接链接已复制到粘贴板!
- 全局唯一。
- 静态,因此很少会在发生改变的情况下。
- 简而言之,这样,在屏幕上更轻松地阅读条目。
- 易于输入并记住。
dc 属性通过将域名拆分到其组件部分来代表后缀。
dc定义域名的组件。c包含代表国家名称的双位代码,由 ISO 定义。l标识条目所在的数目、城市或其他地理位置,或者与该条目相关联。st识别条目所在的状态或省去。o标识条目所属组织的名称。
4.2.1.2. 命名多个 Suffixes 复制链接链接已复制到粘贴板!
图 4.1. 在数据库中包含多个目录树
4.2.2. 创建目录树结构 复制链接链接已复制到粘贴板!
4.2.2.1. 对目录进行分支 复制链接链接已复制到粘贴板!
- 将树分支,仅代表企业中最大的组织细分。所有这些分支点应限制在部门(如公司信息服务、客户支持、销售与工程)。确保用于分支目录树的部门具有稳定的;如果企业经常重新组织,则不执行此类分支。
- 对分支点使用功能或通用名称而不是实际的机构名称。名称更改。虽然子树可以重命名,但它是具有许多子条目的大型后缀的很长和资源密集型过程。使用代表机构功能的通用名称(例如,使用 Engineering 而不是 Widget Research 和 Development)使得在机构或项目更改后需要重命名子树的几率要小。
- 如果有多个机构执行类似的功能,请尝试为该功能创建单个分支点,而不是基于划分行进行分支。例如,即使有多个营销机构,每个营销机构都负责特定的产品行,请创建一个 ou=Marketing 子树。然后,所有营销条目都属于该树。
Enterprise 环境中的分支
如果目录树结构基于可能更改的信息,可以避免名称更改。例如,对树中的对象类型而非组织,对对象类型的结构为基础。这有助于避免在组织单元之间影响一个条目,这需要修改可分辨名称 (DN),这是代价昂贵的操作。
- ou=people
- ou=groups
- ou=services
图 4.2. Environment Directory 树示例
主机环境中的分支
对于托管环境,创建一个树,其中包含对象类 组织 (o)的两个条目,以及对象类 organizationalUnit (ou)下的一个条目。例如,ISP 分支其目录示例,如下所示。
图 4.3. 主机目录树示例
4.2.2.2. 识别分支点 复制链接链接已复制到粘贴板!
图 4.4. 示例 Corp 的 Directory 树。
图 4.5. 示例 ISP 的目录树
- 保持一致。如果区分名称 (DN) 格式在目录树中不一致,则一些 LDAP 客户端应用程序可能会混淆。也就是说,如果
l属于目录树的一个部分的ou,请确保在目录服务的所有其他部分的l从属为ou。 - 尝试只使用传统属性(在 第 4.2.2.2 节 “识别分支点”中显示)。使用传统属性会增加保留与第三方 LDAP 客户端应用程序的兼容性的可能性。使用传统属性还意味着它们对默认目录架构所知,这有助于为分支 DN 构建条目。
| 属性 | 定义 |
|---|---|
dc | 域名的一个元素,如 dc=example ;这经常在对中指定,甚至更长,具体取决于域,如 dc=example,dc=com 或 dc=mtv,dc=example,dc=com。 |
c | 国家/地区名称。 |
o | 机构名称。此属性通常用于代表一个大的分部分支,如公司部门、学术线(人类、科学)、子公司,或者企业内的其他主要分支,如 第 4.2.1.1 节 “后缀命名”。 |
ou | 组织单元。此属性通常用来代表比组织较小的部门分支。组织单元一般与上述机构从属。 |
st | 状态或省名称。 |
l 或 locality | 本地性,如城市、国家、办公室或设备名称。 |
4.2.2.3. 复制注意事项 复制链接链接已复制到粘贴板!
图 4.6. 示例公司的 Directory 树的初始分支。
图 4.7. 为示例公司扩展分支.
图 4.8. 示例 ISP 的目录分支
图 4.9. 用于示例 ISP 的扩展分支
4.2.2.4. 访问控制注意事项 复制链接链接已复制到粘贴板!
4.2.3. 命名条目 复制链接链接已复制到粘贴板!
- 为命名选择的属性应不太可能改变。
- 该名称在目录中必须是唯一的。唯一名称可确保 DN 在 目录中最多可以看到一个条目。
l 来代表一个机构,或者 c 代表组织单元。
4.2.3.1. 命名角色条目 复制链接链接已复制到粘贴板!
commonName 或 cn 属性来命名其个人条目。也就是说,名为 Babs Jensen 的个人可能具有可区分名称 cn=Babs Jensen,dc=example,dc=com 的条目。
cn 以外的某些属性的 person 条目。考虑使用以下属性之一:
uid使用uid属性指定个人的一些唯一值。可能包括用户登录 ID 或员工号码。托管环境中的订阅者应该由uid属性识别。mailmail属性包含个人的电子邮件地址,该地址始终是唯一的。这个选项可能会导致包含重复属性值(如 mail=bjensen@example.com,dc=example,dc=com)的 awkward DNs,因此仅在没有与uid属性一起使用的其他唯一值时才使用这个选项。例如,如果企业没有为临时或合同员工分配员工数量或用户 ID,则使用mail属性而不是uid属性。employeeNumber对于 inetOrgPerson 对象类的员工,请考虑使用人员分配的属性值,如employeeNumber。
uid 和 cn 属性使用人类可读的名称。
在托管环境中为 Person 条目的注意事项
如果一个人是服务的订阅者,则条目应该是对象类 inetUser,条目应包含 uid 属性。在客户子树中,属性必须是唯一的。
将 Person Entries 放置到 DIT 中
以下是将人员条目放入目录树的一些准则:
- 企业中的人员应位于组织条目下的目录树中。
- 对托管机构的订阅者需要低于托管机构的 ou=people 分支。
4.2.3.2. 命名组条目 复制链接链接已复制到粘贴板!
- 静态组 显式定义是成员。groupOfNames 或 groupOfUniqueNames 对象类包含命名组成员的值。静态组适合具有几个成员的组,如目录管理员组。静态组不适用于具有数千个成员的组。静态组条目必须包含 uniqueMember 属性值,因为 uniqueMember 是 groupOfUniqueNames 对象的强制属性。此对象类需要
cn属性,它可用于组成组条目的 DN。 - 动态组 使用一个代表搜索过滤器和子树的组的条目。与过滤器匹配的条目是组的成员。
- 角色 统一了静态和动态组概念。如需更多信息,请参阅 第 4.3 节 “分组目录条目”。
4.2.3.3. 命名机构条目 复制链接链接已复制到粘贴板!
organization (o)属性作为 naming 属性。
4.2.3.4. 命名其他 Entries 的 Kind 复制链接链接已复制到粘贴板!
cn 属性(如果可能)。然后,为命名组条目,将其命名为 cn=administrators,dc=example,dc=com 等内容。
commonName 属性。反之,使用条目对象类支持的属性。
4.2.4. 重命名条目和子树 复制链接链接已复制到粘贴板!
例 4.1. building Entry DNs
dc=example,dc=com => root suffix
ou=People,dc=example,dc=com => org unit
st=California,ou=People,dc=example,dc=com => state/province
l=Mountain View,st=California,ou=People,dc=example,dc=com => city
ou=Engineering,l=Mountain View,st=California,ou=People,dc=example,dc=com => org unit
uid=jsmith,ou=Engineering,l=Mountain View,st=California,ou=People,dc=example,dc=com => leaf entry
图 4.10. Leaf Entry 的 modrdn Operations
图 4.11. 子树条目的 modrdn 操作
newsuperior 属性,它将条目从一个父项移到另一个父项。
图 4.12. 对一个新父项的 modrdn 操作
entryrdn.db 索引中。每个条目都由其自己的键(一个 self-link)标识,然后是一个子键来标识其父项( 父链接)和任何子项。这是一个层次结构目录树的格式,它将父项和子项视为条目的属性,每个条目都由唯一 ID 及其 RDN 描述,而不是完整的 DN 进行标识。
numeric_id:RDN => self link
ID: #; RDN: "rdn"; NRDN: normalized_rdn
P#:RDN => parent link
ID: #; RDN: "rdn"; NRDN: normalized_rdn
C#:RDN => child link
ID: #; RDN: "rdn"; NRDN: normalized_rdn
4:ou=people
ID: 4; RDN: "ou=People"; NRDN: "ou=people"
P4:ou=people
ID: 1; RDN: "dc=example,dc=com"; NRDN: "dc=example,dc=com"
C4:ou=people
ID: 10; RDN: "uid=jsmith"; NRDN: "uid=jsmith"
- 您无法重命名 root 后缀。
- 子树重命名操作对复制的影响最少。复制协议会应用于整个数据库,而不是数据库中的子树,因此子树重命名操作不需要重新配置复制协议。子树重命名操作之后的所有名称都会正常进行复制。
- 重命名子树 可能需要 重新配置任何同步协议。同步协议在后缀或子树级别上设置,因此重命名子树可能会破坏同步。
- 重命名子树 要求 手动重新配置子树级 ACI,以及为子树子条目设置的任何条目级 ACI。
- 您可以将子树重命名为子树,但您无法删除子树。
- 尝试更改子树的组件,如从
ou移到dc,可能会因为 schema 违反而失败。例如,organizationalUnit 对象类需要ou属性。如果该属性作为重命名子树的一部分被删除,则操作将失败。