0

我是 LDAP 新手,并试图找到实现多级安全模型的最佳设置。我需要 LDAP,因为同一用户使用了多个应用程序,并且我想集中用户管理。

对于多级安全模型,我的意思如下。我有公司、项目、用户和角色。

我想为公司、项目和用户的每个组合分配角色。因此,组合 companyA、projectA 和 userA 具有 RoleA,但组合 companyA、projectB 和 userA 没有。

我需要能够对用户进行 ldap 搜索,该用户返回适用的每个组合公司、项目和角色的“记录”。

我知道我在 ldap 服务器中创建了一个“对象树”,例如这样设置

companyA
   |
   +---- project A
   |       |
   |       +----- roleA
   |               |
   |               +---- (attribute) member=userA
   |               +---- (attribute) member=userB
   |
   +---- project B
           |
           +----- roleB
                   |
                   +---- (attribute) member=userA
                   +---- (attribute) member=userB

但这将包含大量重复的对象,这对我来说似乎效率低下。

我宁愿有 4 个数据、公司、项目、角色和用户的“列表”,以及另一个包含这些条目组合的列表。对关系数据库有更多经验,这感觉更合乎逻辑。但我知道这种设置在 ldap 环境中根本不合逻辑。

我读到 ldap 能够提供访问控制。使用 ACI(访问控制指令)可以让某些用户访问某些对象。也许可以以某种方式利用它来提供我需要的东西?

4

1 回答 1

0

虽然我对这种设置的“原因”没有清晰的实际理解,但我仍然可以提供一些指示。请记住,您应该与他人审查和讨论这些想法,并确保您了解其中的含义。

确实,如果您有重叠的用户(例如:userA 涉及项目 A 和项目 B),则会出现您提到的数据重复。此外,这可能会导致不良的用户体验:如果用户 A 有两个帐户,他/她也有两个密码,必须以某种方式对其进行管理。除非您的组织需要这样的极端,否则用户肯定不会喜欢它。另外,你说你想集中你的用户管理,而不是进一步破坏它。;-)

在你的情况下,我可以提出一个有点不寻常的想法。

与其利用复杂的 DIT(您可以用“关系”术语将其称为数据库或表),不如考虑利用 CUSTOM SCHEMA。

您可以想象创建一个称为辅助对象类的东西。我更喜欢使用 OBJECTCLASSES 因为它们是静态的(不是可填充的属性,而在某种程度上只是一个“标签”)。

例如,在您的情况下,您可以创建一些 AUX OC:

  • 对象类:公司A
  • 对象类别:公司 B
  • 对象类:项目A
  • 对象类:projectB
  • 对象类:角色A
  • 对象类:角色B

一个人可能拥有任意数量的这些 OC(零个、一个或全部)。

结果是用户的 SINGLE 帐户(因此是 SINGLE 密码)。这些用户中的每一个都可以拥有您认为合适的任何 OC 组合,然后您可以配置所有客户端(例如:使用 LDAP 服务器的系统和软件)以根据需要利用自定义过滤器(查询) .

这样做的缺点是(通常)模式数据不像实际 DATA 那样被复制。因此,如果您有 3 台 LDAP 服务器,则需要将此模式数据加载到 3 台 LDAP 服务器上。较新版本的 OpenLDAP 支持动态配置,并且通过非常具体的设置,可以复制 CONFIGURATION 引擎设置,但这是一种罕见的设置,除了理论文档之外,我从未真正见过任何人这样做。本着这种精神,我将假设这不是你的选择。如果我错了,请纠正我。

关于您的 ACI 想法,我并没有真正看到使用它们的好处。ACI 的文档记录和实验性较差(也可能不会编译到您正在使用的任何 LDAP 服务器的构建中)。

您想要的是 ACL(访问控制列表)。您可以控制特定人员和/或组对特定对象的访问。ACL 有更好的文档记录,而不是实验性的。

我希望这有帮助。如果您有任何问题等,请告诉我。

最大限度

于 2013-07-20T22:30:27.877 回答