Problema ldap acl

De Wiki del Nigul
Salta a la navegació Salta a la cerca
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Introducció

LDAP té una complexa política de control d'accés al directori. Una ACL té la següent sintaxi:

olcAccess: {n} to <what> by <who> <access> <control>
  • {n} és el número d'ordre
  • <what> es al què s'accedeix, un dn en concret o *, per exemple
  • <who> evidentment és qui hi pot accedir
  • <access> és el tipus d'accés read / write, etc
  • <control> pot ser stop / continue / break

Hi pot haver varis "by <who> <access>" a la mateixa ACL (vegeu exemples) i per defecte el <control> és stop, vol dir que quan troba una condició de <what> que es satisfà, s'atura i es deixa de recórrer la llista de ACL.

Valors per defecte de les ACL de LDAP

olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=example,dc=com" write by * none

olcAccess: {1}to dn.base="" by * read

olcAccess: {2}to * by self write by dn="cn=admin,dc=example,dc=com" write by * read

Què volem aconseguir?

Que diferents administradors tenguin accés només a cada sub-arbre corresponent, i no donar accés a altres usuaris a les contrasenyes.

Aproximació 1
olcAccess: {0}to dn.subtree="ou=gorgblau,dc=nigul,dc=coop" by self write by dn="cn=gorgblau,dc=nigul,dc=coop" write by * read

olcAccess: {1}to dn.subtree="ou=matadejonc,dc=nigul,dc=coop" by self write by dn="cn=matadejonc,dc=nigul,dc=coop" write by * read

olcAccess: {2}to dn.subtree="ou=lledoner,dc=nigul,dc=coop" by self write by dn="cn=lledoner,dc=nigul,dc=coop" write by * read

olcAccess: {3}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=nigul,dc=coop" write by * none

olcAccess: {4}to dn.base="" by * read

olcAccess: {5}to * by self write by dn="cn=admin,dc=nigul,dc=coop" write by * read

El problema d'aquesta és que cada condició 0, 1, 2, degut al "by * read" donam accés a les contrasenyes a tothom

Aproximació 2
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=nigul,dc=coop" write by * none

olcAccess: {1}to dn.subtree="ou=gorgblau,dc=nigul,dc=coop" by self write by dn="cn=gorgblau,dc=nigul,dc=coop" write by * read

olcAccess: {2}to dn.subtree="ou=matadejonc,dc=nigul,dc=coop" by self write by dn="cn=matadejonc,dc=nigul,dc=coop" write by * read

olcAccess: {3}to dn.subtree="ou=lledoner,dc=nigul,dc=coop" by self write by dn="cn=lledoner,dc=nigul,dc=coop" write by * read

olcAccess: {4}to dn.base="" by * read

olcAccess: {5}to * by self write by dn="cn=admin,dc=nigul,dc=coop" write by * read

El problema d'aquesta és que cada administrador del sub-arbre no té accés a les seves contrasenyes

Enllaços que en parlen