Mise en œuvre des attributs étiquetés

OpenLDAP: contrôler de la visibilité d'un attribut selon son étiquette

Dans certains cas il peut être nécessaire de restreindre l'accès à un sous-ensemble d'étiquettes d'un attribut.

Cela peut répondre à des besoins de:

  • confidentialité: le niveau de visibilité diffère d'une étiquette à l'autre, certaines étiquettes devant être restreintes à certains clients seulement;
  • compatibilité: une application ne sait pas traiter un attribut multi-valué, le fait de filtrer sur l'étiquette qui la concerne permet de ne lui présenter qu'une seule valeur.

L'exemple de configuration suivant montre comment contrôler la visibilité d'une valeur d'attribut dans OpenLDAP en fonction de son étiquette, à l'aide d'ACLs de type val.regex.

slapd.conf
# 1) SEULS les membres du groupe "cn=ldap.acl.rpro.read" peuvent lire  
# les valeurs étiquetées {RPRO} du supannRefId:
access to
    attrs=supannRefId val.regex="^\\{RPRO\\}"
    by group=cn=ldap.acl.rpro.read,ou=groups,dc=univ-x,dc=fr read
    by * none
 
# 2) Les membres du groupe "cn=ldap.acl.pstages.read" ne peuvent lire  
# QUE les valeurs étiquetées {PSTAGES} du supannRefId:
access to
    attrs=supannRefId val.regex="^\\{PSTAGES\\}"
    by group=cn=ldap.acl.pstages.read,ou=groups,dc=univ-x,dc=fr read
    by * break
access to
    attrs=supannRefId
    by group=cn=ldap.acl.pstages.read,ou=groups,dc=univ-x,dc=fr none
    by * break
 
# Dans les autres cas, autorise la recherche des valeurs par
# tout le monde et la lecture par leur propriétaire:
access to
    attrs=supannRefId
    by self read
    by * search