3.2. 在目录服务器中使用角色
您可以使用角色对目录服务器条目进行分组。角色同时充当静态和动态组。角色比组更容易使用,因为它们在实施过程中更灵活。例如,应用可以通过查询条目本身而不是选择组来获取条目所属的角色列表,并浏览多个组的成员列表。
3.2.1. 目录服务器中的角色 复制链接链接已复制到粘贴板!
角色的行为与静态和动态组类似,类似于混合组:
- 对于组,Directory 服务器作为成员在组条目中添加条目。
- 使用角色时,Directory 服务器会向条目添加 role 属性,然后使用此属性自动识别角色条目中的成员。
角色成员是拥有角色的条目。您可以根据角色类型显式或动态指定角色的成员。目录服务器支持以下类型的角色:
受管角色
受管角色具有明确的成员列表。您可以使用受管角色来执行使用静态组执行的相同任务。
过滤的角色
您可以使用过滤的角色过滤角色成员,类似于使用动态组进行过滤。目录服务器根据条目是否具有角色中定义的特定属性,为过滤的角色分配条目。
嵌套角色
嵌套角色可以包含受管和过滤的角色。
当您创建角色时,请确定用户是否可以从角色中添加或删除自己。如需了解更多详细信息,请参阅 第 3.2.2 节 “在目录服务器中使用角色”。
与评估组相比,评估角色对目录服务器的资源密集型,因为服务器能够为客户端应用工作。使用角色时,客户端应用程序可以通过搜索 nsRole 属性来检查角色成员资格。nsRole 属性是一个计算属性,用于标识条目所属的角色。目录服务器不存储 nsRole 属性。从客户端应用程序视图中,检查成员资格的方法统一并在服务器端执行。
有关在目录服务器中使用角色的注意事项,请参阅 规划和设计目录服务器 文档中的 组和角色之间的声明。
3.2.2. 在目录服务器中使用角色 复制链接链接已复制到粘贴板!
在创建新角色时,请考虑用户是否可以轻松地向角色添加或删除自己。例如,您可以允许 Mountain Biking interest group 角色的用户轻松地添加或删除自己。但是,不得允许分配 marketing 角色的用户从角色中添加或移除自己。
一个潜在的安全风险是通过取消激活角色来取消激活用户帐户。Inactive 角色为后缀定义了特殊的访问控制指令(ACI)。如果管理员允许用户自由地添加或删除自己,则这些用户可以从不活动的角色中删除自己,以解锁其帐户。
例如,用户被分配了一个受管角色。当目录服务器通过使用 account inactivation 锁定此受管角色时,用户无法绑定到服务器,因为 Directory 服务器为该用户计算 nsAccountLock 属性为 true。但是,如果用户已经绑定到 Directory Server,且现在通过受管角色锁定,如果用户可以从其条目中删除 nsRoleDN 属性,并在未指定限制 ACI 时将其解锁自己。
要防止用户删除 nsRoleDN 属性,请根据角色类型使用以下 ACI:
受管角色。对于作为受管角色成员的条目,请使用以下 ACI:
aci: (targetattr="nsRoleDN") (targattrfilters= add=nsRoleDN:(!(nsRoleDN=cn=AdministratorRole,dc=example,dc=com)), del=nsRoleDN:(!(nsRoleDN=cn=nsManagedDisabledRole,dc=example,dc=com))) (version3.0;acl "allow mod of nsRoleDN by self but not to critical values"; allow(write) userdn=ldap:///self;)
aci: (targetattr="nsRoleDN") (targattrfilters= add=nsRoleDN:(!(nsRoleDN=cn=AdministratorRole,dc=example,dc=com)), del=nsRoleDN:(!(nsRoleDN=cn=nsManagedDisabledRole,dc=example,dc=com))) (version3.0;acl "allow mod of nsRoleDN by self but not to critical values"; allow(write) userdn=ldap:///self;)Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
过滤的角色。保护作为过滤器一部分的属性(
nsRoleFilter)。不允许用户添加、删除或修改过滤角色使用的属性。如果目录服务器计算 filter 属性的值,您必须保护所有可以修改此过滤器属性值的属性。 - 嵌套角色。嵌套角色可以包含过滤和受管角色。因此,您必须为嵌套角色包含的角色的每个属性限制在 ACI 中修改操作。
3.2.3. 使用命令行管理目录服务器中的角色 复制链接链接已复制到粘贴板!
您可以使用命令行查看、创建和删除角色。
3.2.3.1. 在目录服务器中创建受管角色 复制链接链接已复制到粘贴板!
受管角色是具有显式枚举成员列表的角色。您可以使用 ldapmodify 工具创建受管角色。以下示例为市场营销团队创建一个受管角色。
前提条件
-
Directory Server 中存在
ou=people,dc=example,dc=com父条目。 -
Directory Server 中存在
cn=Bob Jones,ou=people,dc=example,dc=com用户条目。
流程
使用带有
-a选项的ldapmodify命令创建cn=Marketingmanaged role 条目:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 受管角色条目必须包含以下对象类:
-
ldapsubentry -
nsRoleDefinition -
nsSimpleRoleDefinition -
nsManagedRoleDefinition
-
通过将
nsRoleDN属性添加到此用户条目,将cn=Marketing,ou=people,dc=example,dc=com受管角色分配给cn=Bob Jones,ou=people,dc=example,dc=com用户条目:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:为
userRoot数据库中的nsRoleDN属性配置 equality 索引,以避免出现未索引的搜索:dsconf <instance_name> backend index add --index-type eq --attr nsroleDN --reindex userRoot
# dsconf <instance_name> backend index add --index-type eq --attr nsroleDN --reindex userRootCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出现在属于
cn=Marketing,ou=people,dc=example,dc=com受管角色的用户条目:ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b "dc=example,dc=com" "(nsRole=cn=Marketing,ou=people,dc=example,dc=com)" dn
# ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b "dc=example,dc=com" "(nsRole=cn=Marketing,ou=people,dc=example,dc=com)" dn dn: cn=Bob Jones,ou=people,dc=example,dc=com dn: cn=Tom Devis,ou=people,dc=example,dc=comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.3.2. 在目录服务器中创建过滤的角色 复制链接链接已复制到粘贴板!
如果条目在角色中定义的特定属性,则目录服务器会将条目分配给过滤的角色。角色定义指定 nsRoleFilter LDAP 过滤器。与过滤器匹配的条目是角色的成员。
您可以使用 ldapmodify 工具创建过滤的角色。以下示例为销售部门经理创建了过滤的角色。
前提条件
-
Directory Server 中存在
ou=people,dc=example,dc=com父条目。
流程
使用带有
-a选项的ldapmodify命令创建cn=SalesManagerFilter过滤的角色条目:Copy to Clipboard Copied! Toggle word wrap Toggle overflow cn=SalesManagerFilter过滤的角色条目具有角色的o=sales manager过滤器。具有o属性且值为sales managers的所有用户条目都是过滤角色的成员。现在是过滤角色的成员的用户条目示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 过滤的角色条目必须具有以下对象类:
-
ldapsubentry -
nsRoleDefinition -
nsComplexRoleDefinition -
nsFilteredRoleDefinition
-
可选:为
nsRoleFilter角色过滤器中使用的属性配置 相等 索引,以避免未索引的搜索。在给定示例中,该角色使用o=sales managers作为过滤器。因此,索引o属性以提高搜索性能:dsconf <instance_name> backend index add --index-type eq --attr o --reindex userRoot
# dsconf <instance_name> backend index add --index-type eq --attr o --reindex userRootCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出现在属于
cn=SalesManagerFilter,ou=people,dc=example,dc=com过滤角色的用户条目:ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b "dc=example,dc=com" "(nsRole=cn=SalesManagerFilter,ou=people,dc=example,dc=com)" dn
# ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b "dc=example,dc=com" "(nsRole=cn=SalesManagerFilter,ou=people,dc=example,dc=com)" dn dn: cn=Jess Mor,ou=people,dc=example,dc=com dn: cn=Pat Smith,ou=people,dc=example,dc=comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.3.3. 在目录服务器中创建嵌套角色 复制链接链接已复制到粘贴板!
嵌套角色可以包含受管和过滤的角色。嵌套角色条目需要 nsRoleDN 属性来标识要嵌套的角色。
您可以使用 ldapmodify 工具创建嵌套角色。以下示例创建一个嵌套角色,其中包含在 Directory Server 中创建 受管角色和在 Directory Server 中创建受管角色 时创建的 过滤角色。
前提条件
-
Directory Server 中存在
ou=people,dc=example,dc=com父条目。
流程
使用带有
-a选项的ldapmodify命令,创建cn=MarketingSales嵌套角色条目,其中包含cn=SalesManagerFilter过滤的角色和cn=Marketingmanaged 角色:Copy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)角色可以具有
description属性。嵌套角色条目必须具有以下对象类:
-
ldapsubentry -
nsRoleDefinition -
nsComplexRoleDefinition -
nsNestedRoleDefinition
-
验证
列出现在属于
cn=MarketingSales嵌套角色的用户条目:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.3.4. 查看条目的角色 复制链接链接已复制到粘贴板!
要查看条目的角色,请使用带有明确指定 nsRole 虚拟属性的 ldapsearch 命令。
前提条件
- 角色条目存在。
-
将角色分配给
uid=user_name用户条目。
流程
使用指定的
nsRolevirtual 属性搜索uid=user_name条目:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令检索
uid=user_name用户所属的所有角色。
3.2.3.5. 删除目录服务器中的角色 复制链接链接已复制到粘贴板!
要删除目录服务器中的角色,您可以使用 ldapmodify 命令。
以下是从 Directory Server 中删除 cn=Marketing managed 角色的示例。
流程
要删除
cn=Marketingmanaged role 条目,请输入:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意当您删除角色时,Directory 服务器只删除角色条目,不会删除每个角色成员的
nsRoleDN属性。要删除每个角色成员的nsRoleDN属性,请启用 Referential Integrity 插件并配置此插件来管理nsRoleDN属性。有关 referential Integrity 插件的更多信息,请参阅使用参考完整性来维护条目之间的关系。
3.2.4. 使用 Web 控制台管理目录服务器中的角色 复制链接链接已复制到粘贴板!
您可以在 web 控制台中使用 LDAP 浏览器 来查看、创建和删除角色。
3.2.4.1. 在 LDAP 浏览器中创建角色 复制链接链接已复制到粘贴板!
您可以使用 web 控制台中的 LDAP 浏览器 向导为 Red Hat Directory Server 条目创建角色。
前提条件
- 访问 Web 控制台。
- 目录服务器中存在父条目。
流程
- 登录 Web 控制台并点 Red Hat Directory Server。
- 在 Web 控制台加载 Red Hat Directory Server 界面后,打开 LDAP 浏览器。
- 选择一个 LDAP 条目,并打开 Options 菜单(alsa)。
- 从下拉菜单中选择 New,再单击 Create a new role。
- 按照向导中的步骤操作,并在完成每个步骤后点 按钮。
- 要创建角色,请查看 Create Role 步骤中的角色设置,然后单击 按钮。您可以单击 按钮来修改角色设置,或者单击 按钮以取消角色创建。
- 要关闭向导窗口,点 按钮。
验证
- 展开 LDAP 条目,并验证新角色显示在条目参数中。
3.2.4.2. 在 LDAP 浏览器中删除角色 复制链接链接已复制到粘贴板!
您可以使用 Web 控制台中的 LDAP 浏览器 从 Red Hat Directory Server 条目中删除角色。
前提条件
- 访问 Web 控制台。
- 目录服务器中存在父条目。
流程
- 登录 Web 控制台并点 Red Hat Directory Server。
- 在 Web 控制台加载 Red Hat Directory Server 界面后,点 LDAP 浏览器。
- 展开 LDAP 条目,选择您要删除的角色。
- 打开 Options 菜单(3.3.0),然后选择 Delete。
- 验证您要删除的角色的数据,然后点 按钮,直到您到达 删除 步骤。
- 将开关切换为 Yes,我确定 位置,然后点 按钮。
- 要关闭向导窗口,点 按钮。
验证
- 展开 LDAP 条目,并验证角色不再是条目参数的一部分。
3.2.4.3. 在 LDAP 浏览器中修改角色 复制链接链接已复制到粘贴板!
您可以使用 Web 控制台中的 LDAP 浏览器 来修改 Red Hat Directory Server 条目的角色参数。
前提条件
- 访问 Web 控制台。
- 目录服务器中存在父条目。
流程
- 登录 Web 控制台并点 Red Hat Directory Server。
- Web 控制台加载 红帽目录服务器 界面后,单击 LDAP 浏览器。
- 展开 LDAP 条目,再选择您要修改的角色。
- 点 Options 菜单(swig)并选择 Edit 来修改角色或 Rename 的参数来重命名角色。
- 在向导窗口中,修改必要的参数,并在每个步骤后点 ,直到您观察 LDIF Statements 步骤。
- 检查更新的参数,然后单击 或 。
- 要关闭向导窗口,点 按钮。
验证
- 展开 LDAP 条目,并验证角色是否列出了更新的参数。