OpenLDAP多租户,如ACL

时间:2014-03-24 10:32:05

标签: openldap

是否可以为OpenLDAP编写ACL,以实现多用户和多租户环境。我的意思是使用一个规则真正保护DIT并动态匹配每个客户。

示例DIT:

ROOT
..customer1
....Users
......Admin
......User
....objects
..customer2
....Users
......Admin
......User
....objects

我想要的是来自customer1的Admin用户可能只能看到和写入来自customer1的对象,而customer2用户只能查看和编写customer2对象。每个客户的用户也是如此,但是处于只读模式。

我没有得到这样的ACL工作,只找到了在树中的用户条目下写的示例,但没有任何内容可以获得2级,并允许在下面写入。有人知道如何应用这样的ACL吗?

谢谢 -

1 个答案:

答案 0 :(得分:2)

我建议你在这里想要的是OpenLDAP' s ACL feature called sets

尝试之类的内容

olcAccess: to dn.regex="^o=[^,]+,dc=example,dc=com$"
  by set="this/-*/manager/member* & user" write   
  by set="this/-*/manager & user" write
  by set="([ldap:///cn=Admin,ou=Users,] + this + [??sub?objectClass=inetOrgPerson]) & user" write
  by set="([ldap:///] + this + [??sub?objectClass=inetOrgPerson]) & user" read
  by * none
  1. 标识要应用规则的对象。在这种情况下,它假定每个客户"对象的DN类似于" o =客户公司名称,dc = example,dc = com"
  2. 允许分配给" manager"的成员(递归解析,即组是组的成员)。客户端对象(或任何父对象)的属性写入客户端对象
  3. 允许用户直接分配给"经理"客户端对象(或任何父对象)的属性写入客户端对象
  4. 允许用户使用RDN cn = Admin,ou = Users相对于Client对象写入
  5. 允许客户端对象的任何后代用户对象读取它