Dans tout organisme privé ou public, la gestion des informations est un problème important : la fiabilité de l'information et de l'archivage permettent un gain de temps précieux. Le cas d'un employé travaillant dans une société en est le parfait exemple. Les informations concernant cet employé peuvent-être plus ou moins vitales (numéro de sécurité sociale, salaire, adresse postale, adresse email, ...). Au cours de sa carrière, cet employé changera sûrement de poste, de service voire même d'entreprise. L'utilisation d'un annuaire est alors bénéfique pour ne pas avoir à entrer manuellement toutes sortes d'informations lors de chaque changement.
Cependant, l'utilisation d'un annuaire, qui a pour principale vocation d'être consultable par quiconque, est problématique. En effet, il faut protéger certaines données sans pour autant tout cacher à n'importe qui. Par exemple, les employés d'une surcursale doivent pouvoir accéder aux informations contenues dans l'annuaire de la maison mère d'une façon différente des personnes totalement "externes" à celle-ci. Mais il ne faut pas tout bloquer : il s'agit d'un annuaire et donc des informations telles que adresses email doivent pouvoir être exportées.
Les annuaires qui reposent sur le protocole LDAP permettent :
Toutefois, un annuaire ne regroupe pas que des informations concernant les utilisateurs. Il peut aussi répertorier des informations sur les ressources telles que salles et matériels. Les administrateurs, applications et utilisateurs finaux peuvent ainsi stocker et gérer des types d'informations différents à partir d'un point unique, et automatiser un grand nombre de processus gourmands en temps, chose jusqu'alors impossible. Par exemple, une demande d'information inter-services (sur le nouvel employé !) requiert parfois certains délais avant d'être traitée manuellement.
Certaines applications utilisent également des annuaires pour stocker et gérer des informations telles que configuration, préférences et droits d'accès de l'utilisateur.
Un annuaire a donc pour principale vocation de regrouper un grand nombre d'informations allant de la simple liste de noms et d'adresses à une base de données recensant toutes les ressources du réseau et leurs attributs (utilisateurs, groupes, files d'impression, etc.). Cette gestion centralisée devrait faciliter la tâche de l'administrateur. Par ailleurs, elle minimise en effet les marges d'erreur ou d'incohérence engendrées par des outils d'administration distribués, comme les informations redondantes (voire incohérentes), qui ne vont pas sans provoquer de graves problèmes d'administration, les connexions multiples ou les droits non maîtrisés d'une interface à l'autre, par exemple.
Les opérateurs de télécommunications ont élaboré la norme X.500 pour interconnecter leurs annuaires téléphoniques. Cette norme très complexe, exige de très lourds logiciels. Ces derniers étaient inutilisables dans la majeure partie des entreprises où les ressources sont limitées (en terme de puissance).
En 1994, l'université du Michigan a mis en place un protocole appelé Lightweight Directory Access Protocol (LDAP) qui définit des services d'accès adaptés et fonctionne, entre autres, au-dessus de TCP/IP.
Les annuaires architecturés autour la norme LDAP sont organisés sous forme hiérarchique reflétant la structure humaine et géographique d'une entreprise. Ils donnent donc à cette dernière la possibilité de posséder un annuaire correspondant à son propre mode organisationnel.
Un annuaire est composé de plusieurs entrées en général triées par pays puis par organisations. A l'intérieur de chaque organisation, une décomposition en sous-unités peut être effectuée : sous-unités géographiques (comme régions, départements) ou fonctionnelles (les différents services : Production, Administration, Recherche et développement,...). Cette décomposition peut se répéter à nouveau, se précisant de plus en plus jusqu'à ce que les informations finales soient les individus, le matériel...
La structure d'un annuaire peut donc être représentée sous forme
d'arbre. Chaque noeud et feuille de cet arbre étant appelé une
La structure des objets est décrite dans un des fichiers de
configuration de LDAP dont l'extension est
L'attribut objectclass est un peu particulier. En
effet, chaque entrée de la base LDAP possède un attribut qui
s'appelle ainsi. C'est lui qui détermine si une entrée est d'un
certain type ou pas. Par exemple, si une des valeurs de
l'attribut objectclass est 'personne', il s'agira d'un objet
personne et nous trouverons alors dans l'annuaire les
informations obligatoires et des informations facultatives si
elles ont été remplies.
Toutes les entrées sont nommées par rapport à leur position
dans l'annuaire. Elles sont identifées par leur chemin, à
partir de la racine de l'arbre, appelé
Par exemple, un utilisateur nommé Durand et travaillant dans le
service informatique d'IBM pourrait avoir le DN suivant : uid=Durand,ou=Service
informatique,o=IBM,c=US. Bien sûr, ce DN l'identifierait de
manière unique dans l'annuaire LDAP. En effet, si un second
Durand travaillait avec le premier, son RDN final devra
forcément être différent de celui de son collègue, deux entrées
de l'annuaire ne pouvant posséder un DN identique (Mais
rien n'interdit à deux entrées de posséder un RDN final
identique si elles se trouvent dans des branches
distinctes)..
Le protocole LDAP offre divers services :
LDAP permet de définir des règles pour gérer l'accès aux données
de l'annuaire. Toute requête (ajout, suppression, modification,
etc.) arrivant sur le serveur est analysée puis les règles du
fichier de configuration sont parcourues dans leur ordre de
définition. La première règle qui correspond à l'identifiant donné
lors de la connexion définit le type d'accès (lecture, écriture ou
aucun). Si aucune règle ne correspond, un accès par défaut est
utilisé.
L'utilisation d'expressions régulières dans les règles d'accès
rend possible la délégation de la gestion de l'annuaire à d'autres
personnes. Nous vous présentons une règle
comme exemple :
En reprenant l'exemple du service informatique d'IBM,
l'administrateur admin pourra modifier les informations
concernant Monsieur Durand qui appartient au même service que
lui. Pourtant, il ne pourra pas modifier l'entrée concernant
Monsieur Dupont du service administratif. En effet, le nom du
service d'admin ne correspondra pas au nom du service de la
personne chez qui il désire effectuer des modifications.
D'autre part, les utilisateurs appartenant à IBM US, pourront lire
librement les informations concernant les employés de leur propre
entreprise alors que ceux du monde extérieur n'auront aucun accès
du tout.
objectclass personne
requires
objectclass,
nom,
prenom
allows
numero_gsm,
photo
Services offerts
Droits d'accès aux informations
access to dn="uid=.*,ou=([^,]*),o=([^,]*),c=([^,]*)"
by dn="uid=admin,ou=$1,o=$2,c=$3" write
by dn="uid=.*,o=$2,c=$3" read
by dn=".*" none