Ldap
在屬性上限制 openldap ldapsearch
我對我的目錄有以下查詢:
ldapsearch -x -H ldaps://example.com -D "cn=gitlab,ou=Service Accounts,dc=example,dc=com" -w foobar -b "ou=Persons,dc=example,dc=com"
使用以下 olcAccess 我得到以下結果:
dn: olcDatabase={1}mdb,cn=config olcAccess: {0}to dn.subtree="ou=Persons,dc=example,dc=com" by dn="cn=gitlab,ou=Service Accounts,dc=example,dc=com" read olcAccess: {1}to attrs=userPassword,shadowLastChange by self =xw by anonymous auth olcAccess: {2}to * by self read by * none
(規則 1 應該是第一位的,它也可以這樣工作,但可以肯定的是,我現在把它放下)
結果:
# Persons, example.com dn: ou=Persons,dc=example,dc=com objectClass: organizationalUnit objectClass: top ou: Persons # Hans Wurst, Persons, example.com dn: cn=Hans Wurst,ou=Persons,dc=example,dc=com givenName: Hans sn: Wurst cn: Hans Wurst uid: hwurst userPassword:: <PASSWORDHASH> uidNumber: 1001 gidNumber: 500 homeDirectory: /home/hwurst loginShell: /bin/bash objectClass: inetOrgPerson objectClass: posixAccount objectClass: top # Carla Kaese, Persons, example.com dn: cn=Carla Kaese,ou=Persons,dc=example,dc=com gidNumber: 500 givenName: Carla homeDirectory: /home/ckaese loginShell: /bin/bash objectClass: inetOrgPerson objectClass: posixAccount objectClass: top sn: Kaese uid: ckaese uidNumber: 1000 cn: Carla Kaese userPassword:: <PASSWORDHASH>
現在我的目標是限制對某些屬性的讀取訪問。因此,我將 acls 更改如下:
dn: olcDatabase={1}mdb,cn=config olcAccess: {0}to dn.subtree="ou=Persons,dc=example,dc=com" attrs="entry,uid,cn" by dn="cn=gitlab,ou=Service Accounts,dc=example,dc=com" read olcAccess: {1}to attrs=userPassword,shadowLastChange by self =xw by anonymous auth olcAccess: {2}to * by self read by * none
我添加了
attrs="entry,uid,cn"
但是,相同的搜尋現在只返回:
# search result search: 2 result: 0 Success
我究竟做錯了什麼?我錯過了什麼?它如何工作?
olcAccess: {0}to dn.children="ou=Persons,dc=example,dc=com" attrs=entry,uid,cn,userPassword,mail by dn="cn=gitlab,ou=Service Accounts,dc=example,dc=com" tls_ssf=128 read by * none break olcAccess: {1}to dn.subtree="ou=Persons,dc=example,dc=com" by dn="cn=gitlab,ou=Service Accounts,dc=example,dc=com" tls_ssf=128 search by * none break
邁克爾·斯特羅德很接近。我需要一個額外的
search
. 此外,這break
是必要的。顯然,在樹可以迭代到正確的條目之前,評估已經停止。此
tls_ssf=128
問題不是必需的,但增加了額外的安全級別。
ACL 也會影響身份驗證步驟。
使用簡單綁定(使用 DN 和密碼)時,您必須授予對要驗證的條目的屬性條目和userPassword的**身份驗證權限。
但是 AFAICS 您的最後一個 ACL 有效地阻止了對偽屬性條目的 auth 訪問。我會嘗試作為最後一個 ACL(未測試):
olcAccess: {2}to * by self read by * auth