OpenLDAP ACL для аутентификации сервисами - PullRequest
0 голосов
/ 08 мая 2019

Каждая служба, для которой требуется доступ, должна быть аутентифицирована для доступа к пользовательской информации, например, следующая служба:

dn: cn=grafana,ou=services,dc=foo,dc=bar
objectClass: person
cn: myservice
sn: My Service
userPassword: {SSHA}QemMa...

Может иметь доступ к следующему пользователю:

dn: cn=kartoch,ou=users,dc=foo,dc=bar
objectClass: person
objectClass: inetOrgPerson
cn: kartoch
sn: Kartoch
userPassword: {SSHA}kk/ll...
mail: kartoch@foo.bar
displayName: Kartoch
givenName: Kartoch

Но следующий доступОпределение элемента управления отклоняет доступ к kartoch с помощью myservice:

dn: olcDatabase={1}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to dn.subtree="ou=users,dc=foo,dc=bar" 
  attrs=cn,sn,mail,displayName,givenName
  by dn.subtree="ou=services,dc=foo,dc=bar" read
olcAccess: {1}to attrs=userPassword,shadowLastChange
  by self write 
  by anonymous auth 
olcAccess: {2}to * 
  by self read 

При доступе к пользователю kartoch с учетной записью myservice:

$ ldapsearch -x -H ldap://localhost -b cn=kartoch,ou=users,dc=foo,dc=bar -D "cn=myservice,ou=services,dc=foo,dc=bar" -w mypasswordfor my service

Журнал показывает, что проверка подлинности службы правильная, но доступ кпользователь отклонен:

5cd30db9 conn=1004 fd=15 ACCEPT from IP=127.0.0.1:52608 (IP=0.0.0.0:389)
5cd30db9 conn=1004 op=0 BIND dn="cn=myservice,ou=services,dc=foo,dc=bar" method=128
5cd30db9 conn=1004 op=0 BIND dn="cn=myservice,ou=services,dc=foo,dc=bar" mech=SIMPLE ssf=0
5cd30db9 conn=1004 op=0 RESULT tag=97 err=0 text=
5cd30db9 conn=1004 op=1 SRCH base="cn=kartoch,ou=users,dc=foo,dc=bar" scope=2 deref=0 filter="(objectClass=*)"
5cd30db9 conn=1004 op=1 SEARCH RESULT tag=101 err=32 nentries=0 text=
5cd30db9 conn=1004 op=2 UNBIND
5cd30db9 conn=1004 fd=15 closed
...