Notions théoriques sur l’annuaire LDAP

Le protocole LDAP est très utilisé. Mais voyons comment il fonctionne.

Ce document a deux pages.

Introduction

La première version du protocole LDAP, RFC 1487, acronyme pour Ligthweight Directory Access Protocol, date de 1993. Cette version 1 est fortement liée à l’ensemble des normes X500 définies par l’UIT-T. La seconde version, définie par la RFC 1777 et sortie en 1995, devient complétement autonome par rapport à X500, seul x509 étant encore utilisé actuellement. Mais la version 2, sera vite substitué en 1997, par la version 3, RFC 2251.

Cette dernière version servira de base à l’ensemble des LDAP dont OpenLDAP, annuaire libre le plus couramment utilisé. En propriétaire, il y a évidemment Active Directory, solution de chez Microsoft.

Qu’est-ce qu’un annuaire ?

Avant tout chose, un petit rappel : il est nécessaire de faire une déclaration auprès de la Commission nationale de l’informatique et des libertés. De plus, toute personne doit également pouvoir modifier les données qui l’a concerne.

En informatique, un annuaire est un ensemble de moyens pour stocker, généralement, une base de donnée hiérarchisée. Cette base de données permet d’offrir des informations qui seront principalement utilisé en consultation sans chercher à les modifier. Par exemple, un annuaire peut permettre de fournir des informations diverses et variés comme le nom ou le prénom. Mais il peut aussi fournir des informations moins consensuelles.  Plus intéressant encore, servir de base à une authentification centralisé ou à un service en particulier (site web, gestion de l’impression…).

La grande force d’un annuaire LDAP est d’être flexible , ouvert tout en étant sécurisé en modification.  Il permet de faire une modification d’une donnée rapidement par l’utilisateur (si on le souhaite) ou par l’administrateur sans impacter le reste du système. De ce fait, il est plus facile d’avoir un annuaire réactif et donc plus régulièrement mis à jour.

Avec LDAP, il est possible de choisir la manière dont les informations vont pouvoir être accéder et manipulées. Un annuaire LDAP peut ainsi être accessible de l’extérieur du réseau de l’entreprise ou non. La lecture de certaines données peut être autorisée ou non. Il en va de même pour la modification de certaines données.

Notions sur  un annuaire  ?

Un annuaire doit mettre en place des règles pour nommer les entités et les objets. Dans cette optique, il faut définir un modèle d’information pour spécifier les différents types de données pouvant être intégrées à l’annuaire mais également un modèle de nommage qui indique la manière dont l’information est organisée et référencée.

Pour accéder et manipuler les données contenues dans l’annuaire, il nous faut un protocole d’accès qui nous dit comment accéder à ces informations. Pour cela, vu que nous sommes dans une configurations client/serveur, nous devons avoir un client qui nous permettra de communiquer avec le serveur (et vice-versa). Il faut aussi un protocole d’accès capable de communiquer entre deux serveurs. LDAP dispose, pour cela,  d’un format d’échange de données qui s’appelle LBER (Lightweight Basic Encoding Rules), modification simplifiée du langage BER (défini par l’ITU-T sous X.209 et X.690).

Enfin, pour pouvoir exporter un annuaire, il faut utiliser un format d’échange de données. Ce dernier se nomme LDIF (LDAP Data Interchange Format).

Le format d’échange LDIF (LDAP Data Interchange Format) permet d’exporter ou d’importer une base LDAP en totalité ou en partie. Il est défini par la RFC 2849. LDIF permet d’exporter un annuaire LDAP au format textuel. Cela permet d’en lire le contenu à l’aide d’un simple éditeur de texte. LDIF permet également d’importer dans l’annuaire des données décrites dans un fichier texte. Les possibilités données par LDIF sont extrêmement fines. Par exemple, il est possible de réaliser une exportation globale mais également une exportation différentielle, c’est-à-dire une sauvegarde des entrées non sauvegardées depuis la dernière sauvegarde complète.

Le codage du fichier texte est réalisé en ASCII et les données binaires sont représentées à l’aide de codages permettant de conserver des caractères lisibles. La version 3 de LDAP gère également le codage des caractères en UTF-8.

Ce format est de plus en plus concurrencé par le format XML avec le langage DSML (Directory Service Markup Language).

Dans un fichier d’export, il est possible de mettre une ligne en commentaire à l’aide du symbole #. Les retours chariots sont représentés par des symboles $.

Il faut aussi pouvoir intégrer son annuaire LDAP dans, par exemple, un site web. C’est pourquoi, on va évoquer les API. Une API est une interface de programmation, permettant de simplifier la programmation. Concerannt LDAP, il y a évidemment énormément d’API, pratiquement pour chaque langage. La plus utilisé est l’API pour PHP et ces fonctions sont reconnues. Par exemple, pour se connecter, on utilise ldap_connect en indiquant  obligatoirement l’adresse et le port (si ce n ‘est pas celui par défaut). Pour effectuer une recherche, il faut se servir de la fonction : ressource ldap_search(identifiant,dossier,filtre).

La droits sur un annuaire LDAP

On vient de voir qu’un annuaire doit pouvoir communiquer avec n’importe quel client. Il doit donc être également sécurisé, en permettant ou non la lecture, l’écriture ou les deux. Pour cela, on utilise des règles, que l’on retrouve très souvent dans le monde informatique: Les ACL (Access Control List) qui définissent tout simplement les droits d’accès.

LDAP offre un contrôle d’accès aux données avec un mécanisme d’ACL (Access Control List). Ce mécanisme est vraiment fin et permet donc de définir sur une ou plusieurs entrées, pour un ou plusieurs utilisateurs le droit ou l’interdiction de faire quelque chose.

L’objet concerné dont on précise les accès peut être :

  • Un DN
  • Un filtre permettant d’isoler une partie de l’arborescence
  • Les droits peuvent être réglés pour :
  • Un utilisateur particulier
  • L’utilisateur courant à l’aide du mot-clé self
  • Les utilisateurs anonymes avec le mot-clé anonymous
  • L es utilisateurs authentifiés avec le mot-clé users
  • Un ensemble d’utilisateurs définis par une expression régulière (grep…)

Les droits qui peuvent être donnés sont :

  • Aucun
  • Droit d’authentification (x)
  • Droit de comparaison (cx)
  • Droit d’appliquer des filtres (scx)
  • Droit de lire les résultat d’une recherche (rscx)
  • Droit de modifier (wrscx)

Par défaut, un droit non défini est inexistant.

Certains logiciels ont des acl encore plus fine. C’est le cas de OpenLDAPv2 qui  permet d’utiliser les ACI (Access Control Information). Ces informations sont présentes dans l’annuaire contrairement aux ACI qui sont uniquement présentes dans le fichier de configuration sldap.conf.

Les ACI sont regroupées dans un objet OpenLDAPacl qui possède un attribut OpenLDAPaci. Les avantages apportés par les ACI sont :

  • Pas de redémarrage nécessaire de l’annuaire lors d’une modification de droits.
  • plus de précision dans l’attribution des droits.
  • possibilité d’utiliser une API LDAP pour modifier les droits.

Les inconvénients sont :

  • Une syntaxe exigeante.
  • Très peu utilisé.

La sécurité sur un annuaire LDAP

Concernant la sécurité d’accès, LDAP peut également être utilisé avec plusieurs protocoles de sécurité comme SSL ou TLS. Il s’agit de protocoles de cryptage qui permettent de rendre plus difficile la lecture du transport réseau et donc l’information qui circule entre un client et le serveur.

Les menaces qui pèsent sur annuaires en ligne sont multiples :

  •  Accès non autorisé à des données .
  •  Modification non autorisée de données.
  • Déni de service, style attaque LOIC.

La difficulté l’authentification des clients LDAP n’est pas obligatoire. En effet, il est possible de se connecter à un annuaire LDAP en mode anonyme. Ce mode permet de profiter des accès aux données non confidentielles.

Toutefois, il est possible de réaliser une authentification par nom d’utilisateur et mot de passe. Dans ce cas, il y a encore deux possibilités. Il est possible d’avoir un mot de passe qui circule en clair mais également possible d’avoir un mot de passe qui circule de manière cryptée afin d’offrir une meilleure sécurité. Il est aussi possible de faire une authentification par empreinte digitale.

La structure d’un annuaire LDAP

Dans un annuaire , quel qui soit, il faut une structuration hiérarchisée. LDAP n’échappe pas à la règle. Donc, on a :

  • L’entrée, qu’on appelle couramment entry, c’est l’unité de base.
  • Le DIT, Directory Information Tree, qui organise les entrées en les structurant dans une arborescence.
  • Le RDN,  Relative Distinguished Name, qui identifie l’entrée. Il s’agit de son nom relatif.  Au niveau d’un nœud de cette arborescence, un RDN est unique. La concaténation des RDN depuis la racine jusqu’à chacune des entrées constitue le DN.
  • Le DN, Distinguished Name, qui identifie l’entrée par son nom absolu.

Au niveau de chaque entrée, on met en place des attributs. Chaque attribut est composé d’un nom et d’un type de données, exactement de la même manière que dans une base de données. Un type d’attribut est composé d’un nom avec le premier mot en minuscules et les mots suivants ayant seulement la première lettre en majuscule comme utilisateur, mail, numeroTelephoneProfessionnel

La description d’un attribut est libre, elle peut donc être exprimée clairement. Un type est également référencé par un OID (Object IDentifier), cet identifiant est unique au monde pour éviter tout incompatibilité. Les OID sont attribués par l’IANA (Internet Assigned Numbers Authority). Il est possible de réclamer un numéro à l’IANA pour pouvoir ensuite développer son arborescence en dessous de ce dernier. La RFC de référence est la référence 2256.

La suite à la seconde page.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *