Diferència entre revisions de la pàgina «Problema ldap acl»
Salta a la navegació
Salta a la cerca
(3 revisions intermèdies per 2 usuaris que no es mostren) | |||
Línia 1: | Línia 1: | ||
+ | ==== Introducció ==== | ||
+ | |||
+ | LDAP té una complexa política de control d'accés al directori. Una ACL té la següent sintaxi: | ||
+ | |||
+ | <pre> | ||
+ | olcAccess: {n} to <what> by <who> <access> <control> | ||
+ | </pre> | ||
+ | * {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 ==== | ==== Valors per defecte de les ACL de LDAP ==== | ||
+ | <pre> | ||
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=example,dc=com" write by * none | olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=example,dc=com" write by * none | ||
Línia 6: | Línia 22: | ||
olcAccess: {2}to * by self write by dn="cn=admin,dc=example,dc=com" write by * read | olcAccess: {2}to * by self write by dn="cn=admin,dc=example,dc=com" write by * read | ||
− | + | </pre> | |
==== Què volem aconseguir? ==== | ==== Què volem aconseguir? ==== | ||
− | Que diferents administradors tenguin accés a cada sub-arbre corresponent, i no donar accés a altres usuaris a les contrasenyes | + | 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 ===== | ===== Aproximació 1 ===== | ||
− | + | <pre> | |
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: {0}to dn.subtree="ou=gorgblau,dc=nigul,dc=coop" by self write by dn="cn=gorgblau,dc=nigul,dc=coop" write by * read | ||
Línia 26: | Línia 42: | ||
olcAccess: {5}to * by self write by dn="cn=admin,dc=nigul,dc=coop" write by * read | olcAccess: {5}to * by self write by dn="cn=admin,dc=nigul,dc=coop" write by * read | ||
− | + | </pre> | |
El problema d'aquesta és que cada condició 0, 1, 2, degut al "by * read" donam accés a les contrasenyes a tothom | 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 ===== | ===== Aproximació 2 ===== | ||
− | + | <pre> | |
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=nigul,dc=coop" write by * none | olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=nigul,dc=coop" write by * none | ||
Línia 43: | Línia 59: | ||
olcAccess: {5}to * by self write by dn="cn=admin,dc=nigul,dc=coop" write by * read | olcAccess: {5}to * by self write by dn="cn=admin,dc=nigul,dc=coop" write by * read | ||
+ | </pre> | ||
+ | |||
+ | El problema d'aquesta és que cada administrador del sub-arbre no té accés a les seves contrasenyes | ||
+ | ==== Enllaços que en parlen ==== | ||
− | + | * [http://www.openldap.org/doc/admin24/access-control.html Pàgina oficial de OpenLDAP sobre el tema] | |
+ | * [http://www.openldap.org/faq/data/cache/454.html sobre els modificadors continue / break / stop] | ||
+ | * [http://openldap-bsa.forja.rediris.es/criterios7.html Un poc més d'informació] | ||
+ | |||
+ | [[Categoria:LDAP]] |
Revisió de 18:58, 22 set 2012
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