我是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(访问控制指令)可以为某些用户提供对某些对象的访问权限。也许这可以用某种方式来提供我需要的东西?
答案 0 :(得分:0)
虽然我对此设置的“原因”没有明确的实用理解,但我仍然可以提供一些指示。请记住,您应该与其他人一起审核并讨论这些想法,并确保您了解其含义。
如果你有重叠的用户(例如:userA涉及项目A和项目B),那么就会有你所提到的数据重复。此外,这可能会导致不良用户体验:如果用户A有两个帐户,他/她也有两个密码,必须以某种方式管理。除非您的组织需要这样的极限,否则用户肯定不会喜欢它。另外,您说您希望集中管理您的用户,而不是进一步破坏它。 ; - )
在你的情况下,我可以建议一个不寻常的想法。
不要利用复杂的DIT(你可以称之为'关系'术语中的数据库或表),而是考虑利用CUSTOM SCHEMA。
你可以想象创造一种称为AUXILIARY OBJECTCLASS的东西。我更喜欢使用OBJECTCLASSES,因为它们是静态的(不是可填充的属性,而是某种方式的“标签”)。
例如,在您的情况下,您可以创建一些AUX OC:
一个人可能拥有任何数量的这些OC(零,一或全部)。
结果是用户的SINGLE帐户(因此是单个密码)。这些用户中的每一个都可以拥有您认为合适的OC的任意组合,然后您可以根据需要配置所有客户端(例如:使用LDAP服务器的系统和软件)以利用自定义过滤器(查询)
这样做的缺点是(通常)架构数据不像实际DATA那样被复制。因此,如果您有3个LDAP服务器,则需要将此架构数据加载到3个LDAP服务器上。较新版本的OpenLDAP支持动态配置,并且通过非常具体的设置,可以复制CONFIGURATION引擎设置,但这是一种罕见的设置,除了理论文档之外,我从未真正见过任何人。本着这种精神,我将假设这不是你的选择。如果我错了,请纠正我。
关于你的ACI想法,我真的没有看到使用它们的好处。 ACI文档记录和实验性很差(也可能无法编译到您正在使用的任何LDAP服务器的构建中)。
你想要的是ACL(访问控制列表)。您可以控制特定人员和/或组对特定对象的访问。 ACL更好地记录在案,而不是实验性的。
我希望这会有所帮助。如果您有疑问,请告诉我。
最高