openldap ldap中的动态访问控制

时间:2013-08-06 13:06:36

标签: openldap

我正在尝试将openldap用作中央身份验证系统,并根据用户类型存储一些数据。

我的ldap DIT结构如下

                      domain
Superuser             Users                data
              User1   user2   user3     Entry1  Entry2

对于每个用户条目,我都修复了auth字符串,例子 -
for user1

authstring=Entry1-RW   #allowing entry1 to be readable and writable
authstring=Entry2.R    #allowing entry2 to be readable

,类似于user2

authstring=*.RW       #allowing all entries to be readable and writable

如何在不对所有情况进行硬编码的情况下定义我的slapd.conf以实现此功能? 通常我们只能用dn定义访问控制 我可以使用attrs限制访问控制定义吗?

access to dn.regex=uid=[^,]ou=data,dc=my-domain,dc=com
    by dn="uid=.*,ou=users,dc=my-domain,dc=com" filter=authstring=$1.RW

2 个答案:

答案 0 :(得分:0)

我可以执行以下操作:( uid是数据输入的属性,也可以是cn)

access to dn.regex="uid=[^,]+,ou=data,dc=my-domain,dc=com" 
    by set.expand="this/uid & user/authstring" write 

但问题仍然是我必须为每个dataEntry和每种类型的权限编写单独的attr 例: 对于user1:

authstringread:Entry1
authstringreadwrite:Entry2

,访问控制设置为

access to dn.regex=uid=[^,],ou=data,dc=my-domain,dc=com
    by set.expand="this/uid & user/authstringreadwrite" write
    by set.expand="this/uid & user/authstringread"      read

答案 1 :(得分:-3)

您当然可以使用attrs限制ACL方法:

对于user1:

aci: (targetattr=*)(targetfilter="(entryCategory=Entry1)")(version 3.0; acl "read-write"; allow (read, write)userdn ="ldap:///uid=user1,dc=example,dc=com";)
aci: (targetattr=*)(targetfilter="(entryCategory=Entry2)")(version 3.0; acl "read"; allow (read)userdn ="ldap:///uid=user1,dc=example,dc=com";)

对于user2:

aci: (targetattr=*)(targetfilter="(|(entryCategory=Entry1)(entryCategory=Entry2)")(version 3.0; acl "read-write"; allow (write)userdn ="ldap:///uid=user2, dc=example,dc=com";)

同样,您可以允许任何人拥有特定的读取或写入权限。

aci: (version 3.0; acl "anonymous-read-search";allow (read, write) userdn = "ldap:///anyone";)

对于特定用户集:

userdn = "ldap:///uid=b*,c=example.com ||ldap:///cn=b*,dc=example,dc=com";

查看此链接以获取更多信息:

http://docs.oracle.com/cd/E22289_01/html/821-1277/bind-rule-syntax.html#defining-anonymous-access-anyone-keyword

希望这有帮助。

谢谢,约翰