用于多级安全模型的LDAP设置

时间:2013-07-19 13:12:07

标签: ldap

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

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

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

我需要能够对一个用户进行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(访问控制指令)可以为某些用户提供对某些对象的访问权限。也许这可以用某种方式来提供我需要的东西?

1 个答案:

答案 0 :(得分:0)

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

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

在你的情况下,我可以建议一个不寻常的想法。

不要利用复杂的DIT(你可以称之为'关系'术语中的数据库或表),而是考虑利用CUSTOM SCHEMA。

你可以想象创造一种称为AUXILIARY OBJECTCLASS的东西。我更喜欢使用OBJECTCLASSES,因为它们是静态的(不是可填充的属性,而是某种方式的“标签”)。

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

  • objectClass:companyA
  • objectClass:companyB
  • objectClass:projectA
  • objectClass:projectB
  • objectClass:roleA
  • objectClass:roleB

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

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

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

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

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

我希望这会有所帮助。如果您有疑问,请告诉我。

最高