Manuel d'utilisation du module AACLs

Éléments constitutifs des AACLs

Présentation

Les AACLS considèrent six éléments principaux :

  • l’acteur de l’action qui est l’entrée utilisée pour accéder à l’annuaire ($authorDN),
  • la cible de l’action qui est l’entrée visée par l’action ($targetDN),
  • la liste des attributs concernés par l’autorisation,
  • le ou les droits, c’est alors une combinaison,
  • la relation qui lie l’acteur et la cible et qui donne accès à l’action, pour l’acteur, sur les attributs de la cible,
  • la base d’application de l’AACL (concernant la cible), c'est-à-dire le DN d’un des pères ($fatherDN) des entrées protégées. Si l’AACL concerne tout l’annuaire, la base correspond au contexte de nommage de l’annuaire.

Droits et actions liées

Les droits abordés au travers des AACLS sont :

  • lecture des attributs d’une entrée (r)
  • écriture sur des attributs, c'est-à-dire création, modification et suppression d’un attribut (w),
  • création d’une entrée (c),
  • suppression d’une entrée (d).
Les actions possibles sont alors :
  • lecture des attributs d’une entrée (opération search) qui correspond au droit de lecture (r),
  • modification des attributs d’une entrée (opérations modify et modifyDN) qui correspond au droit d’écriture (W),
  • ajout d’une entrée (opération add) qui correspond au droit de création (c),
  • suppression d’une entrée (opération delete) qui correspond au droit de suppression (d).

Relations

La relation se compose de différents éléments paramétrables :

  • des fonctions permettant de naviguer dans l’arborescence,
  • des remplacements afin d’utiliser le DN ou le RDN de l’acteur et de la cible,
  • l’utilisation de certains attributs comme source d’information.
Les fonctions disponibles sont les suivantes :
  • search : recherche dans tout le sous-arbre.
    • Premier argument : base de la recherche
    • Second argument : filtre de recherche
  • list : recherche au sein des fils directs de l’entrée.
    • Premier argument : base de la recherche
    • Second argument : filtre de recherche
  • egal : teste l'égalité des deux élements passés en argument.
  • read : lecture de l’entrée.
    • Premier argument : base de la recherche
    • Second argument : filtre de recherche
  • sup : recherche des parents d’une entrée.
    • Premier argument : DN de l'entrée d'origine (enfant)
    • Second argument : nombre de niveaux (ancêtres) à remonter. La valeur 0 correspond à tous les ancêtres de l'entrée enfant, celle-ci y compris.
  • and et or : fonctions d’intersection et d’union des ensembles de résultats.
  • fsup : recherche du premier parent satisfaisant un critère donné.
    • Premier argument : DN de l'entrée d'origine (enfant)
    • Second argument : critère
  • readable, *writable*, creatable et deletable : fonctions de test de lecture, d’écriture, de création et de suppression au sein d’une AACL.
Les remplacements effectués dans les chaînes de caractères sont :
  • $authorDN : DN de l’acteur de l’action,
  • $authorRDN : RDN de l’acteur de l’action,
  • $targetDN : DN de l’entrée cible,
  • $targetRDN : RDN de l’entrée cible,
  • $fatherDN : DN du père direct de la cible (utilisé lors de la création d’une entrée),
  • $fatherRDN : RDN du père direct de la cible (utilisé lors de la création d’une entrée).

Fonctionnement

Opérations

Chaque opération sur l’annuaire est décomposée de façon atomique : que ce soit une recherche ou une modification, chaque attribut ciblé par l'opération va être vérifié de façon à déterminer si cette action est autorisée.

Lors d’une recherche les différentes valeurs d’un attribut ne sont retournées que dans le cas où l’attribut de l’entrée cible considérée est lisible par l’acteur de l’action. Si l’entrée n’a pas d’attribut lisible, l’entrée n’est pas retournée du tout.

La modification, quant à elle, nécessite que l’ensemble des attributs soient modifiables (en fonction des AACLs) pour que la modification soit opérée. Sinon elle est rejetée avec un code d’erreur.

Le cas de la création et de la modification sont similaires à la modification, à la différence que dans le cas général les attributs précisés se résument au mot clé "entry" qui fait référence à la cible dans son ensemble, et non aux attributs de celle-ci.

Chargement des AACLs dans le mandataire

De façon à être le plus dynamique et facilement administrable, les AACLs sont des entrées de l’annuaire de données. Le mode de fonctionnement est simple :

  • Lors du démarrage du mandataire AACLS, celui-ci charge les AACLs stockées dans l'annuaire.
  • Par la suite tout accès au serveur AACLs utilise ces règles pré chargées afin d’effectuer le contrôle des données en effectuant des recherches sur l’annuaire LDAP pour évaluer les AACLs.
Ainsi si les AACLs sont modifiées, il faut recharger le mandataire (en redémarrant le processus).

Création d'une AACL

Schéma d'une entrée

Une AACL est une entrée LDAP de classe d'objet "aacls". Cette classe possède les attributs suivants :

  • Attributs obligatoires :
    • cn : Nom de la règle
    • attribute : noms des attributs cibles (une valeur par nom d'attribut)
    • targetBase : base d'application de la règle
    • rights : droits à appliquer (r,w,c et d)
  • Attributs facultatifs :
    • description : description de la règle
    • targetFilter : filtre à appliquer sur la cible
    • authorBase : base de recherche de l'auteur
    • authorFilter : filtre de recherche de l'auteur
    • relation : expression de la relation entre l'auteur et la cible

Exemple

On définit donc les AACLs sous format LDIF :

dn: cn=1,ou=aacls,dc=interldap,dc=org
objectClass: top
objectClass: aacls
cn: 1
attribute: cn
attribute: sn
targetBase: ou=people,dc=interldap,dc=org
rights: rw
description: RH peolpe can write user names
relation: egal($authorDN.fonction, "RH")

Cette règle d'accès permet à toutes les personnes dont l'attribut "fonction" possède la valeur "RH" de modifier les attributs "cn" et "sn" des personnes.

Il suffit d'ajouter cette entrée à l'annuaire cible pour de recharger le mandataire AACLs pour qu'elle soit prise en compte.