Lightweight Directory Access Protocol (LDAP)
Origines et Objectifs
- Les services d'annuaires électroniques
- Problématique Historique
- Une standardisation unanime : LDAP
- LDAP en quelques faits
Les services d'annuaires électroniques
Un annuaire électronique est comparable à un annuaire papier : il s'agit d'un système conçu pour le stockage hiérarchique d'informations de types variables, et offrant un accès rapide aux informations qu'il contient.
Ces informations concernent typiquement plusieurs catégories d'éléments ayant trait à la gestion interne de l'entreprise :
- Le personnel,
- Les entités organisationnelles : directions, branches, filiales...
- Les ressources : ordinateurs, routeurs, immeubles, salles...
- D'autres éléments en fonction des besoins de l'entreprise et/ou du SI.
Pour chacune de ces catégories, l'annuaire peut stocker plusieurs types d'informations différentes. Par exemple pour chaque personnel, on stockera le login d'accès aux ressources du SI, tandis que pour un ordinateur, on stockera par exemple son adresse MAC et/ou son adresse IP.
Les principales caractéristiques d'un annuaire électronique sont :
- Rapidité d'accès : les informations sont plus souvent lues qu'elles ne sont modifiées. L'annuaire doit donc être optimisé pour la consultation et la recherche d'informations.
- Sécurité de l'information : l'annuaire contient des informations publiques et des informations stratégiques dont l'accès est réservé à certains utilisateurs seulement. L'annuaire doit donc protéger ces informations (par le biais d'une ACL) et authentifier les utilisateurs du service.
- Possibilités de modifications : certaines informations peuvent être modifiées par certains types d'utilisateurs, par exemple en cas de mutation d'un salarié, ou de démission. L'annuaire doit donc permettre la modification des informations, et refléter rapidement ces modifications lors des consultations ultérieures.
- Réplication et haute disponibilité : un annuaire est souvent très sollicité, et est souvent un élément critique du SI, comme nous le verrons par la suite de cet exposé. Aussi, les services d'annuaires doivent pouvoir être répliqués et redondés pour garantir une disponibilité maximale;
Problématique historique
La problématique de la conception d'un annuaire informatique est apparue dans les années 70 avec la création de systèmes d'exploitation multi-utilisateurs (comme Unix) et la création de réseaux de communication entre machines (comme ArpaNet).
Dès lors, de nombreuses solutions ont été développées, parmi lesquelles on peut citer :
- Base des utilisateurs UNIX (
/etc/passwd
) - Whois (informations des propriétaires de noms de domaines)
- DNS (données techniques pour les noms de domaines)
- YellowPages (YP - NIS, annuaire réseau pour UNIX)
- Microsoft SAM (gestion des comptes utilisateurs Windows)
On remarque dès lors deux principaux problèmes à ces solutions :
- Pour chaque besoin (utilisateurs, noms de domaines...) on a au moins une implémentation propriétaire différente
- Pour chaque implémentation, on a un protocole différent, qui n'est pas interopérable avec les autres
Par conséquent, pour les applications souhaitant communiquer avec un des annuaires cités ci-avant, il fallait une couche de communication spécifique, liée à une technologie propriétaire. Les applications exploitant des annuaires étaient, dès lors, peu nombreuses et coûteuses à développer.
Avec le développement de l'informatique en entreprise, le besoin de stocker hiérarchiquement des informations sur les ressources des SI et les personnes y accédant s'est accru dans un environnement communicant. Afin de simplifier l'accès aux informations de ces annuaires, un effort de standardisation d'un protocole d'accès a été réalisé par la communauté informatique et télécoms.
De ces efforts est née, en 1990, la norme X.500 de l'ITU-T, également référencée par l'ISO sous la référence ISO/IEC 9594 en Janvier 1991.
Le principe de X.500 est de définir un ensemble de normes complet permettant de définir un annuaire électronique hiérarchique, parmi lesquels un protocole nommé DAP permettant l'accès aux informations d'un annuaire. Cependant, X.500 était conçu pour s'intégrer dans les protocoles OSI, au niveau de la couche application, et non dans les protocoles fonctionnant au dessus de TCP/IP.
Une standardisation unanime : LDAP
De nombreuses critiques ont été adressées au protocole de communication DAP de la norme X.500, dont la lourdeur du protocole, et son incapacité à fonctionner au dessus de TCP/IP.
L'IETF a alors travaillé, dès le début des années 1990, à la création d'un protocole d'accès léger pour les annuaires électroniques stockant des informations sur le modèle des annuaires X.500, ce qui a donné abouti par la RFC 1487 - X.500 Lightweight Directory Access Protocol.
LDAP a ensuite été mis à jour en 1995 (RFC 1777 - LDAP v2) puis en 1997 avec la version 3 du protocole (RFC 2251). Il a également été complété par des spécifications pour l'utilisation sur TLS (sécurité des communications entre l'annuaire et le client) et des spécifications sur les réponses multiples à une requête unique (IntermediateResponse).
En 2006, un ensemble complet de RFC a été créé pour décrire en détail tous les aspects de LDAP :
- Roadmap des spécifications techniques [RFC4510]
- Le protocole LDAP [RFC4511]
- Les modèles d'information des annuaires LDAP [RFC4512]
- Authentification et mécanismes de sécurité [RFC4513]
- Représentation textuelle des Distinguished Names [RFC4514]
- Représentation textuelle des filtres de recherche [RFC4515]
- URL pour LDAP [RFC4516]
- Syntaxes et règles de correspondances [RFC4517]
- Chaines de caractères internationalisées [RFC4518]
- Schémas pour les applications utilisatrices [RFC4519]
- Considérations de l'IANA pour LDAP [RFC4520]
- Considérations pour les extensions LDAP [RFC4521]
- Ainsi que de nombreuses autres options, de la RFC 4522 à la 4533.
Ainsi que plusieurs RFC définissant des modèles d'import/export de données et les algorithmes de synchronisation d'annuaires LDAP :
- LDIF (import/export en texte) [RFC 2849]
- DSML (import/export en XML) [OASIS]
- Pré-requis pour la réplication [RFC 3384]
Aujourd'hui, LDAP est, de facto, le protocole le plus utilisé en entreprise pour les annuaires électroniques. Il en existe de nombreuses implémentations, et tous les langages proposent des bibliothèques permettant d'en simplifier l'accès au développeur.
LDAP en quelques faits
- Première normalisation en 1993
-
Fonctionne au dessus de TCP/IP :
- Port IANA : 389 (ldap://)
- Port IANA pour SSL : 636 (ldaps://)
- Protocole binaire (non aisément lisible par un être humain)
-
Sécurité du transport :
- Par tunnel SSL (cas de LDAPS)
- Par messages chiffrés sur connexion en clair (cas du message StartTLS de LDAPv3)
- Gère l'authentification des utilisateurs
- Gère les droits d'accès en lecture/écriture par ACLs.
- Nombreuses implémentations en fonction des besoins (cf. section "Pour les administrateurs" > "Logiciels")
- Nombreuses implémentations du protocole client pour les développeurs.
Cet exposé ne rentrera pas dans le détail du formatage des messages LDAP au niveau protocolaire, dans la mesure où de nombreuses bibliothèques de codes et API existent déjà pour simplifier l'accès à un annuaire utilisant LDAP.
Cependant, il aborde plutôt les aspects théoriques concernant la structuration d'un annuaire, et présente les technologies susceptibles d'intéresser à la fois les Administrateurs Systèmes et les développeurs.