4.3. 分组目录条目

创建所需条目后,对其进行分组以便便于管理。Directory 服务器支持多种分组条目的方法:
  • 使用组
  • 使用角色

4.3.1. 关于组

组(如名称所示)只是用户集合。Directory 服务器中有几个不同类型的组,它反映了允许的成员资格类型,如证书组、URL 组和唯一组(每个成员都必须是唯一的)。每种组类型都由对象类(如 groupOfUniqueNames)和对应的 member 属性(如 uniqueMember)定义。
组的类型标识成员的类型。组的配置取决于这些成员如何添加到组中。目录服务器有两种组:
  • 静态组 有有限且定义的成员列表,这些成员被手动添加到组条目中。
  • 动态组使用过滤器来识别哪些条目是组的成员,因此当与组过滤器更改的条目时,组成员资格将不断改变。
组是目录服务器中组织条目的最简单形式。它们主要是手动配置的,除组织方法之外没有功能或行为。(通常,组“不会”对目录条目进行任何操作,尽管组可以被 LDAP 客户端使用来执行操作。)

4.3.1.1. 列出用户条目中的组成员资格

组本质上就是用户 DN 的列表。默认情况下,组成员资格只会反映在组条目本身中,而不反映在用户条目中。但是,MemberOf 插件使用组成员条目动态更新 用户条目,以反映用户所属的组。MemberOf 插件自动扫描具有指定 member 属性的组条目,跟踪所有用户 DN,并在用户条目上创建对应的 memberOf 属性,其名称为组的名称。
组成员资格由组条目上的 member 属性 决定,但用户的所有组的组成员资格 反映在 memberOf 属性中的用户条目中。用户所属的每个组的名称列为 memberOf 属性。这些 memberOf 属性的值由 Directory 服务器管理。
注意
第 6.2.1 节 “关于使用多个数据库” 中所述,可以将不同的后缀存储在不同的数据库中。
默认情况下,MemberOf 插件只查找与组相同的数据库中的用户的潜在成员。如果用户存储在与组不同的数据库中,则不会使用 memberOf 属性更新用户条目,因为插件无法确定它们之间的关系。
MemberOf 插件可以通过启用 memberOfAllBackends 属性配置为搜索所有配置的数据库。
在插件条目中设置 multi-valued memberofgroupattr,可以将 MemberOf 插件的单一实例配置为识别多个成员属性,以便 MemberOf 插件可以管理多种类型的组。

4.3.1.2. 自动添加新条目到组

组管理是管理目录数据的一个关键因素,特别是对于使用 Directory Server 数据和机构或者组将功能应用到条目的客户端。组可以更轻松地在目录中一致、可靠地应用策略。密码策略、访问控制列表和其他规则都可以基于组成员资格。
能够在创建帐户时自动将新条目分配给组,确保适当的策略和功能会立即应用到这些条目 - 无需管理员干预。
Automembership 插件 本质上允许静态组充当动态组。它使用一组规则(基于条目属性、目录位置和正则表达式)将用户自动分配给指定组。
根据某些其他属性的值,可能存在与 LDAP 搜索过滤器匹配的实例条目。例如,可能需要根据机器的 IP 地址或物理位置将计算机添加到不同的组中;用户可能需要根据员工的 ID 号而位于不同的组中。
automember 定义是一组嵌套条目,以及 Auto Membership 插件容器,然后自动成员定义,然后是该定义的任何正则表达式条件。

图 4.13. 正则表达式条件

正则表达式条件
注意
只有在将某个条目添加到目录服务器时,才会自动进行自动分配。
对于为满足自动成员规则而编辑的现有条目或条目,有一个可运行的修复任务来分配正确的组成员资格。

4.3.2. 关于角色

角色(role)是一组混合组,可作为静态和动态组。在使用组时,条目作为成员添加到组条目中。通过角色,role 属性添加到条目中,然后使用该属性自动识别角色条目中的成员。
角色 以多种不同方式有效且自动 组织用户:
  • 明确列出角色成员。查看角色将显示该角色的完整列表。角色本身可以查询以检查成员资格(无法通过动态组)。
  • 显示条目所属角色。因为角色成员资格由条目上的属性决定,只需查看条目即可显示它所属的所有角色。这和组的 memberOf 属性类似,只需要启用或配置插件实例才能正常工作。它是自动的。
  • 分配适当的角色。角色成员资格通过条目(entry)进行分配,而不是通过角色分配,因此单个步骤中可以通过编辑条目轻松地分配和移除用户所属的角色。
受管角色可以执行通常可通过静态组完成的所有操作。角色成员可以使用过滤的角色过滤,与使用动态组的过滤类似。角色比组更容易使用,在实施中更灵活,并降低客户端复杂性。
角色 成员 是拥有角色的条目。成员可以显式指定或动态指定。指定角色成员资格的方式取决于角色的类型。目录服务器支持三种类型的角色:
  • 受管角色 具有明确的 enumerated 列表。
  • 根据 每个条目包含的属性(在 LDAP 过滤器中指定),过滤 过滤角色将条目分配给角色。与过滤器匹配的条目拥有角色。
  • 嵌套角色是包含其他角色的角色。
角色。通过激活/取消激活角色的概念,允许激活整个组或者仅激活一个操作。例如,可以通过取消激活角色所属的角色来暂时禁用角色。
当某个角色处于不激活状态时,这并不表示用户无法绑定到使用那个角色条目的服务器。inactivated 角色的含义是,用户无法使用属于该角色的任何条目绑定到服务器;属于 inactivated 角色的条目会将 nsAccountLock 属性设置为 true
当嵌套角色处于激活时,如果用户在嵌套角色内是任何角色的成员,则无法绑定到服务器。所有属于直接或间接属于角色的条目都是嵌套角色的成员,将 nsAccountLock 设置为 true。可以有多个嵌套角色层,并在嵌套的任意点上激活嵌套角色,则会在它下面的所有角色和用户中激活。

4.3.3. 确定角色和组之间的选择

角色和组群可以完成相同的目标。受管角色可以执行静态组可以执行的操作,而过滤后的角色也可过滤和将成员识别为动态组执行的操作。角色和组都各有优缺点。决定使用角色或组(或混合)依赖于平衡客户端需求和服务器资源。
角色可以降低客户端的复杂性,这是他们的关键优势。使用角色时,客户端应用程序可以通过搜索条目上的 nsRole 操作属性来检查角色成员资格;此多值属性标识条目所属的每个角色。从客户端应用程序视图中,检查成员资格的方法统一并在服务器端执行。
然而,对于客户端而言,这种易用性会增加服务器复杂性。 与评估组相比,评估角色对目录服务器的资源密集型,因为服务器能够为客户端应用工作。
虽然组对于服务器更容易,但它们需要更智能、更复杂的客户端来有效地使用它们。例如,从应用程序角度而言,动态组不提供服务器中的支持,以提供组成员列表。相反,应用会检索组定义,然后运行过滤器。只有在配置了适当的插件时,组成员资格才会反映在用户条目中。最终,决定组成员资格无法统一或可预测的方法。
注意
可平衡组成员资格管理组成员的一个方面是 MemberOf 插件。使用 memberOf strikes a nice 平衡,使客户端使用且对服务器进行计算效率。
当用户添加到组中时,MemberOf 插件会在用户条目上动态创建 memberOf 属性。客户端可以在组条目上运行单个搜索,以获取其所有成员的列表,或者在用户条目上搜索单个搜索来获取它所属的所有组的完整列表。
只有修改成员资格时,服务器才会有维护开销。由于指定的成员(group)和 memberOf (user)属性都存储在数据库中,因此不需要额外的处理来搜索,从而使从客户端搜索非常高效。