• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Lightweight directory access protocol
 

Lightweight directory access protocol

on

  • 1,130 views

juste pour vraiment avoir une idée sur LDAP, je ne suis pas aller bien loin, la suite au prochain numéro

juste pour vraiment avoir une idée sur LDAP, je ne suis pas aller bien loin, la suite au prochain numéro

Statistics

Views

Total Views
1,130
Views on SlideShare
1,130
Embed Views
0

Actions

Likes
0
Downloads
48
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Lightweight directory access protocol Lightweight directory access protocol Document Transcript

    • Lightweight Directory Access Protocol (LDAP)Un annuaire, quesako ? LDAP est un protocole daccès à un annuaire X.500, normalisé à la fin des années 1990 ; X.500 étant une norme monstrueuse pour la gestion dannuaire sur des réseaux ISO (vous connaissez les couches ISO ?, ou encore les protocoles réseaux ISO comme DECnet Phase V ou plus proche de nous ISO/DSA de Bull). LDAP, donc, dont lacronyme est Lightweight Directory Access Protocol, a très rapidement évolué de laccès à un annuaire X.500 à la gestion complète dun annuaire pour les environnements non X.500. Cest ainsi que sont sortis les annuaires de Netscape et que tout le monde a suivi. Dans le camp du libre, OpenLDAP est un projet qui a démarré en août 1998, sur la base de la mise en œuvre de LDAP réalisée par lUniversité du Michigan.Un annuaire, pour quoi faire ? Un annuaire permet de stocker des données légèrement typées, organisées selon des classes particulières et présentées dans un arbre. Lexemple le plus commun, dont il tire son nom est lannuaire de personnes. Mais on peut y stocker bien dautres choses : des comptes Unix, des données personnelles (ce quon peut trouver dans un carnet dadresses, mais aussi les photos des personnes, etc.), des données sur des objets plus ou moins abstraits, comme des données didentification, des certificats (la distribution de listes de révocation de certificat peut se faire par LDAP), un parc matériel, et plus généralement tout ce qui peut être nommé et à qui on peut attacher des informations. Voyons comment procéder après une petite introduction, et comment Perl va pouvoir nous aider. Dimitri LEMBOKOLO 1
    • Différences entre un annuaire et un SGBD Le principe de lannuaire nest pas à confondre avec une base de données relationnelle dont lobjectif est différent. Un annuaire est dabord conçu pour recevoir beaucoup plus de requêtes en lecture quen écriture. Une base de données a dautres objectifs comme un typage fort et une rapidité daccès en lecture comme en écriture. Un annuaire permet donc de stocker des objets, auxquels on peut attacher des attributs (qui sont typés), organisés dans un arbre. Il existe une représentation normalisée des données des objets, le format LDIF. Un autre avantage des annuaires sur les bases de données est la facilité de mise en œuvre de la réplication. En gros, à chaque modification dans lannuaire (qui sont minimes par rapport aux accès en lecture, rappelons-le), ces modifications sont journalisées et reportées dans les annuaires secondaires, ou esclaves. Sur ce dernier point, si lon fait un parallèle avec les DNS, le fonctionnement est un peu différent : il ny a pas la notion de transfert de zones (on prend toute la base de données pour lenvoyer à son collègue), mais juste la notification dun changement (avec la matière du changement). Nous verrons plus loin que la mise en œuvre de la réplication est relativement simple, mais nécessite une initialisation manuelle. Un script peut faciliter la chose. LDAP organise les données de manière arborescente (DIT). Un exemple darborescence est représenté par le schéma suivant: dc=dimi,dc=sn ou=télécoms,dc=dimi,dc=sn ou=informatique,dc=dimi,dc=snou=réseaux intelligent,ou=télécoms,dc=dimi,dc=sn uid=espy,ou=réseaux intelligent,ou=télécoms,dc=dimi,dc=sn Dimitri LEMBOKOLO 2
    • Fonctionnement Le protocole LDAP est un système client/serveur. Lorsquun client LDAPse connecte au serveur, il peut soit consulter des informations ou y apporter desmodifications. Dans le cas dune modification, le serveur vérifie dabord si le clientest autorisé à effectuer des changements puis met à jour ou ajoute les informations.La description des comptes utilisateurs et des groupes répond à la norme posix. Endautres termes, les informations contenues dans les fichiers /etc/passwd,/etc/shadow et /etc/group retrouvent leur équivalent dans la structure de base dedonnées LDAP. Cest ce que lon appelle schéma. LDAP écoute sur le port 389. La maitrise de LDAP passe par la connaissance de certains termes.  Entrée : correspond à une seule unité dans un répertoire LDAP. Chaque entrée est référencée ou identifiée par son nom distinctif ou DN unique.  Attributs : ce sont les éléments dinformation directement associés à lentrée. Parmi les attributs courants utilisés pour les personnes, figurent les numéros de téléphone et adresses électroniques. Certains attributs sont obligatoires, tandis que dautres sont facultatifs. Une classe dobjets définit les attributs obligatoires et ceux facultatifs. Les définitions des classes dobjets dans les différents fichiers sont placés dans le répertoire /etc/openldap/schema. Les données contenues dans lannuaire sont présentées dans un certain format: il sagit du format LDIF (LDAP Data Interchange Format - RFC 2849). Toute itération avec un annuaire se fait par le biais de ce format: ajout, modification, interrogation, suppression. Dans ce format, chaque entrée constitue un paragraphe et au sein de chaque paragraphe, chaque ligne constitue un attribut. Installation et configuration de LDAP Pour installer LDAP, lancer dans le terminal: # yum install openldap openldap-servers openldap-clients Dimitri LEMBOKOLO 3
    • Configuration du serveurLe fichier de configuration du serveur est /etc/openldap/slapd.conf, donc onl’édite.# vim /etc/openldap/slapd.conf A ce niveau il faut:  Définir la base de notre annuaire ;  Préciser le Distinguished Name (DN) de ladministrateur de lannuaire ;  Préciser le mot de passe de ladministrateur.Dimitri LEMBOKOLO 4
    • Configuration du client Le fichier de configuration du client est /etc/openldap/ldap.conf.# vim /etc/openldap/ldap.confIl doit être modifié comme suit:Le fichier /etc/ldap.conf doit également être modifié avec les paramètres.# vim /etc/ldap.confssl notls_cacertdir /etc/openldap/cacertspam_password md5Dimitri LEMBOKOLO 5
    • Nous allons maintenant (re)démarrer le service:Format de données LDIF LDIF : LDAP Data Interchange Format. Cest le format de fichierpermettant le chargement et la mise à jour de données dans un annuaire LDAP.Fichiers ldif Dans le répertoire /etc/openldap, nous allons créer trois fichiers : lun quinous permettra dinsérer les informations concernant la racine (racine.ldif ouroot.ldif pour mon cas), un autre permettra dinsérer les informations relativesaux unités organisationnelles (ou.ldif) et un autre pour les utilisateurs (user.ldifou utilisateurs.ldif pour mon cas).root.ldif Nous verrons plus loin ce que sont les classes dobjets (objectClass).Disons simplement pour le moment quune classe définit les différents attributsquun objet peut ou doit posséder. Le DN est le distinguished name, à savoir le nom de lobjet danslannuaire. Cest ce nom qui permet de retrouver de façon unique un objet danslarbre des objets. Un objet possède donc toujours un DN, qui reprendson RDN (relative dn). Ici, le RDN de dc=dimi, dc=sn. Notez aussi que des espaces peuvent apparaître dans un DN, ils ne sontpas significatifs autour des virgules, et que si un DN est unique sur lannuaire, ilnen est pas de même pour le RDN. Sauf chez Microsoft dans Active DirectoryServer. Mais aussi dans POSIX où il vaut mieux éviter davoir deux comptesayant le même UID (au sens LDAP) dans larbre des comptes. Le tout est desavoir ce que lon fait.Dimitri LEMBOKOLO 6
    • Classes dobjetsQuelques classes dobjets :  o : organization. Cette classe permet de définir le nom de la société ou association qui gère lannuaire. Elle peut constituer une racine pour ce même annuaire, avec des ou en dessous.  ou : organizationalUnit. Un sous-ensemble dune organisation. On pourrait le traduire en français par un service, une entité, un secteur dune société.  dc : domainComponent. Composant de nom de domaine (au sens DNS du terme). Le sn ou dimi dans dimi.sn  person : schéma standard pour une personne. Elle permet de définir une personne par son nom et son prénom (aminima), ainsi que, de façon optionnelle, un mot de passe, un numéro de téléphone, et une description de la personne. Les classes dobjets permettent donc de regrouper les objets de mêmetype, avec un plus par rapport à une base de données : un objet peut appartenir àplusieurs classes en même temps. Ce qui permet de fusionner, autour du mêmenom, des données de person, de posixAccount (cette personne a un compteUnix), de sambaSamAccount (elle a aussi un compte Samba), etc. Un point à garder en mémoire est que les classes peuvent être de plusieurstypes : ABSTRACT, STRUCTURAL et AUXILIARY. Dans la pratique, onutilisera essentiellement les deux dernières. Ce typage va nous permettre dedéfinir des héritages entre classes. Le type ABSTRACT permet juste de définir une classe dont doiventdériver dautres classes. Une classe de type ABSTRACT ne peut avoir aucuneinstance dobjet dans lannuaire. Le type STRUCTURAL permet de définir une classe qui dérive duneautre, la classe racine étant la classe top (elle-même de typeABSTRACT). LeDimitri LEMBOKOLO 7
    • point important ici est que dans linstanciation dun objet (dans son écritureLDIF, par exemple), on doit spécifier lentière hiérarchie des classes. Comme icidans notre exemple, où le domain descend de top. Ce mécanisme est peut-êtreun peu contraignant (surtout si vous avez à migrer un annuaire OpenLDAP 2.0vers un 2.1 ou un 2.2, car la version 2.0 ne vous obligeait pas à spécifier toute lahiérarchie dobjets), mais permet une chose importante : ne pas mélangertorchons et serviettes. Imaginez en effet que nous ayons à définir desutilisateurs, mais aussi des groupes. Cela ferait mauvais effet de ne serait-ce quepouvoir mélanger les genres, et davoir un objet qui soit à la fois un groupe et unutilisateur. Mais comme les classes afférentes aux groupes et utilisateurs sontstructurelles, elles ne peuvent donc être mélangées. Il existe le dernier type de classe, AUXILIARY, qui permet de saffranchirde ce mécanisme dhéritage, et dattribuer des données complémentaires(« auxiliaires » dirait-on en bon franglais) à un objet. Pour en finir avec les classes, sachez que bon nombre de classes sontdéfinies en standard dans un certain nombre de RFC (comme les RFC 2252 et2256). Si lon fait un parallèle (pas si anodin que ça) avec SNMP, on peutconsidérer les classes comme des MIB SNMP (cf. Linux Magazine France n°43doctobre 2002), que lon peut créer soi-même, ou dont on peut utiliser les MIBstandards comme la MIB-II (RFC 1213).Les attributs et les types Les attributs sont donc définissables pour un objet en fonction de la classeà laquelle lobjet appartient. Le typage est relativement faible contrairement à un SGBD. Ou plutôt, ilsert un autre dessein : linteropérabilité. Les types sont en effet spécifiques auxannuaires, et permettent de stocker essentiellement des donnéesalphanumériques, voire des données binaires. Mais il nest pas complètementdans le rôle de lannuaire de vérifier ces types. Sur un SGBD, si. Il existe une cinquantaine de types de données, certains génériques,comme « DirectoryString » (chaîne de caractères UTF-8), « INTEGER » ou« Binary String », dautres limités à des usages spécifiques, comme « DN »(Distinguished Name, le nom dun objet dans un annuaire) ou « JPEG » (imageau format JPEG). Tous les types sont définis dans la RFC 2252. Nous verronsplus loin, dans lécriture dun schéma, que ces syntaxes (le nom des types LDAP)sont référencées par des OID (oui, les mêmes OID ASN-1 que pour SNMP,mais dans un espace de nommage différent).Dimitri LEMBOKOLO 8
    • ou.ldifutilisateurs.ldifSchéma Lendroit où se définissent attributs et classes dobjets, quils soientstandards ou de votre fait, sappelle un schéma. Si vous avez un OpenLDAP à votre disposition, via les paquetagesstandards de votre distribution Linux, vous pouvez y jeter un coup dœil. Ils sontdans /etc/openldap/schema/ ou dans /usr/share/openldap/schema/. Au pire,un locate schema vous dira où ils se trouvent.Dimitri LEMBOKOLO 9
    • Insertion de données LDIF Pour insérer les données définies plus haut, la simple commande suivante suffit : Insertion de root.ldif Loption -c permet de continuer sur des erreurs (un enregistrement défini dans le fichier LDIF est déjà présent dans lannuaire). Loption -x permet de saffranchir de lauthentification SASL1, et navoir quà spécifier le mot de passe. -D indique le DN du compte qui se connecte. -W fera que ldapadd demandera le mot de passe du Manager. Enfin, -f indiquera le nom du fichier LDIF à insérer. Insertion des ou.ldif Insertion des utilisateurs.ldif Dimitri LEMBOKOLO 101 Simple Authentication and Security Layer (signifiant « Couchedauthentification et de sécurité simple » ou SASL)
    • Affichage des enregistrements Un extrait de ce qui est affiché.Dimitri LEMBOKOLO 11
    • Tout comme phpmyadmin, nous avons phpldapadmin pour gérer de façonconviviale notre annuaire LDAP en mode graphique.PHPLDAPADMIN PHPLDAPADMIN étant une application web, il peut être utilisé denimporte où. Il faut bien entendu avoir démarré httpd au préalable. Pour linstallation, lancer « yum install phpldapadmin ».# yum install phpldapadmin Ensuite, dans un navigateur, taper lURL http://localhost/phpldapadminpuis nous avons linterface : Se connecter en tant que Manager:Dimitri LEMBOKOLO 12
    • Une fois connectée nous remarquons à gauche la présence delarborescence que nous pouvons modifier à notre guise. Dans le modèle proposé par LDAP, les serveurs réplicas ne détiennentque des copies des données de la base originale. Les modifications ne doiventêtre faîtes que sur le serveur principal et propagées ensuite sur les serveursréplicas. Plusieurs applications nécessitant une authentification peuvent êtrecouplées avec un annuaire LDAP comme on le ferait avec une base de donnéesclassique. Nous allons procéder au couplage http/ldap pour permettre auxutilisateurs de LDAP de se connecter à une page web sécurisée puis le couplageproftp/ldap pour permettre aux utilisateurs de LDAP de se connecter au serveurftp afin de télécharger des fichiers.Dimitri LEMBOKOLO 13
    • Couplage LDAP http Dans le fichier /etc/httpd/conf/httpd.conf ajoutez les lignes suivantes: Ensuite créez le répertoire inscription dans /var/www/html/ puisredémarrer httpd « service httpd restart ».# service httpd restart Dans le navigateur, tapez lURL http://192.168.1.70/inscription puis vousaurez la fenêtre:Dimitri LEMBOKOLO 14
    • Nous remarquons que cette méthode nous permet aisément de nautoriserque les utilisateurs se trouvant dans notre annuaire à accéder au contenu dudossier inscription.Dimitri LEMBOKOLO 15