Ldap

在屬性上限制 openldap ldapsearch

  • August 25, 2019

我對我的目錄有以下查詢:

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

引用自:https://unix.stackexchange.com/questions/535011