LDAP
Julien Baudry Ingnieur de Recherche LITIS Le Havre
Universit du Havre - 2010
Prsentation et objectifs du cours
Ce cours a pour objectif de vous prsenter :
les annuaires LDAP une implmentation libre proposant la fois un serveur LDAP mais un ensemble d'outils clients : le projet OpenLDAP.
Vous allez dcouvrir travers ce cours les notions lies aux annuaires LDAP. Vous apprendrez galement
Comment mettre en oeuvre un serveur OpenLDAP Utiliser les commandes clientes fournies par le projet.
Un dernier chapitre vous proposera un exercice concret : la connexion d'une application l'annuaire mis en place.
Organisation du travail
Le cours est divis en trois parties majeures :
une partie thorique concernant les annuaires LDAP une partie pratique prsentant le projet OpenLDAP une partie pratique prsentant comment connecter une application OpenLDAP
Samba, Comptes Unix, Application web
Pr-requis
Matriser le shell et les commandes systmes GNU/linux de base Matriser la gestion des droits Unix Matriser un langage de script (php, perl )
Plan
Introduction Protocole Modle d'information Modle de nommage Modle fonctionnel Modle de scurit Modle de duplication Conception dun annuaire Architecture Configuration et administration dun serveur OpenLdap
Introduction (1)
Qu'est ce qu'un annuaire
Exemple : annuaire tlphonique
Cet annuaire regroupe diffrentes entres contenant chacune des informations particulires :
Nom, prnom, numro de tlphone et adresse. Informations sont classes par dpartement, puis par ville, puis enfin par nom.
Voici les caractristiques communes aux annuaires :
Un annuaire prsente un ensemble dfini de donnes Il organise ces donnes
(annuaire : nom, prnom, numro de tlphone, adresse) (annuaire : classes par dpartement, villes, nom) (annuaire : diffusion au format papier) (annuaire : liste rouge)
Il offre un service de consultation
Il peut protger les donnes
Il est plus consult que mis jour Il est disponible de manire permanente
Introduction (2)
Quest-ce que LDAP ?
Lightweight Directory Access Protocol. normaliser linterface daccs aux annuaires. faciliter le partage et la gestion des informations. simplifier la gestion des profils de personnes et de ressources.
Que peut mapporter LDAP ?
Gains conomiques + meilleure qualit
favoriser linteroprabilit des systmes dinformation.
Gains conomiques (rutilisation de l'existant)
Introduction (3)
Pourquoi LDAP est-il aussi populaire ?
intgr dans les outils de lensemble des acteurs du march.
Microsoft, Sun, IBM, Novell, Linux, etc.
standard retenu pour la gestion de la scurit :
authentification forte gestion des autorisations daccs des applications
Introduction (4)
Quelles sont les diffrences entre LDAP et une base de donnes ? Les bases de donnes : stockage sous forme de tables. donnes stockes un endroit unique. nommage spcifique chaque application. critre de performance : transactions. Les annuaires : stockage hirarchique. donnes globales et distribues. nommage global et standardis. critre de performance : accs en lecture.
Introduction (5)
Quels sont les objectifs ? mettre en place un rfrentiel unique dauthentification. exemple : authentification unifie Unix/Windows. fdrer plusieurs sources dauthentification.
Accs distant
Serveur dapplication
Gestion RH Gestion Paie Gestion locaux Gestion des salles . Et bien plus encore Comptes unix
LDAP
Serveur de messagerie
Serveur web
10
Introduction (6)
Un bon exemple d'utilisation : Google
1 compte -> n services
Mail, Docs, RSS Reader
11
Introduction (7)
Un peu d'histoire
1988, L'UIT met au point les annuaires X.500 (protocole DAP)
uniformiser l'accs aux services centraliser les ressources et les protger
Problme :
DAP est compliqu mettre en oeuvre ne fonctionne pas sur les rseaux TCP/IP
1993, l'Universit du Michigan met au point le protocole LDAP 1995, LDAP devient un protocole natif et utilisable indpendamment de X.500 Normalis par lIETF. LDAP version 3 depuis 1997.
Unicode, TLS, SASL, Referrals
12
Quelques annuaires LDAP
Introduction (8)
Voici une liste des principaux annuaires LDAP existant sur le march :
OpenLDAP : [Link] Apache Directory Server : [Link] Sun (One/Java) Directory Server : [Link] Active Directory : [Link] [...]
13
Concepts LDAP
Le standard LDAP
Protocole client-serveur bas sur TCP/IP. Quatre modles prdfinis:
le modle dinformation (nature des donnes). le modle de nommage (structure hirarchique). le modle des services (fonctions disponibles). le modle de scurit (droits daccs).
Des classes dobjets et des attributs normaliss.
Des fonctions de recherche volues. Rpartition des donnes sur plusieurs rfrentiels de manire transparente.
14
Les composantes dun annuaire LDAP
Client LDAP
LDAP LDIF
Serveur LDAP
Fichiers dchanges
Conf
Droits daccs
Schma s
Base de donnes
15
Plan
Introduction Protocole Modle d'information Modle de nommage Modle fonctionnel Modle de scurit Modle de duplication Conception dun annuaire Architecture Configuration et administration dun serveur OpenLdap
16
Le protocole LDAP
Comment stablit la communication client-serveur bind, unbind, abandon Comment stablit la communication serveur-serveur synchronisation (replication service) liens entre diffrents annuaires (referral service) Transport des donnes : pas lASCII (http, smtp, ...) mais Basic Encoding Rules (BER) Les mcanismes de scurit Mthodes de chiffrement et dauthentification Mcanismes daccs aux donnes Les oprations de base search, add, delete, etc.
17
Plan
Introduction Protocole Modle d'information Modle de nommage Modle fonctionnel Modle de scurit Modle de duplication Conception dun annuaire Architecture Configuration et administration dun serveur OpenLdap
Universit du Havre - 2008
18
Le modle d'information
Le modle dinformation dfinit le type des donnes pouvant tre stockes dans lannuaire Les lments composants ce modle d'information sont : La base de donnes L'entre Les attributs Le Schma L'objectClass Le format LDIF
19
La base de donnes
Un modle hirarchique : racine pays organisation unit dorganisation (ou) nom commun (cn) Une unit de base : lobjet. Un objet est un ensemble indissociable de valeurs.
Universit du Havre - 2008
20
Lentre
lment de base de lannuaire Contient les informations sur un objet de lannuaire Ces informations sont reprsentes sous forme dun ensemble de paires (attribut, valeur) Chaque entre doit appartenir une classe particulire A chaque attribut est associ un type et une ou plusieurs valeurs Les attributs dune entre peuvent tre obligatoires ou optionnels
Les attributs (1)
Un attribut est dfini par :
son OID. son nom. une courte description de lattribut. les critres de comparaison utiliss lors dune recherche. une syntaxe dcrivant le type de donnes. Un attribut peut tre multi-valu. Exemple :
attributetype ( [Link] NAME 'serialNumber' DESC 'RFC2256: serial number of the entity' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX [Link].4.1.1466.[Link]{64} )
Universit du Havre - 2008
22
On distingue deux types dattribut :
Les attributs (2)
Les attributs utilisateurs :
ils peuvent tre modifis par les utilisateurs. exemple : mail, cn, telephoneNumber. ils sont lis au fonctionnement de lannuaire. ils ne sont pas accessibles aux utilisateurs (exemple : modifytimestamp).
Les attributs oprationnels :
Un attribut peut hriter dun autre :
lhritage est dfini par la caractristique SUP. le fils hrite des caractristiques du pre.
23
Les principaux types dattributs dfinis par la norme LDAP sont :
Les attributs (3)
binary : suite quelconque doctets (ex: photo). boolean : valeur vrai ou faux. dn : pointeur sur un objet de lannuaire. Directory String : chane de caractres au format UTF-8. integer : valeur entire. telephoneNumber : numro de tlphone.
Ils sont identifis par un OID.
24
Les principales rgles de comparaison des attributs sont :
Les attributs (4)
caseIgnoreMatch : ignorer la casse lors de la comparaison de deux chanes de caractres. caseExactMatch : tenir compte de la casse. telephoneNumberMatch : ignorer la casse et supprimer les espaces, virgules, points, etc. integerMatch : comparer deux entiers. booleanMatch : comparer deux attributs boolens. distinguishedNameMatch : comparer des DN. octetStringMatch : comparer des binaires octet par octet.
25
Les classes dobjets (1)
Elles dcrivent les entres dun annuaire. Elles sont composes dattributs. Elles dfinissent un type de ressource . Elles peuvent tre agrges. Elles peuvent hriter dautres classes.
26
Les classes dobjets (2)
Une classe dobjets est dfinie par :
son OID. son nom. une courte description de la classe. la classe dont elle drive. son type (ABSTRACT, STRUCTURAL, AUXILIARY). la liste des attributs obligatoires (MUST). la liste des attributs facultatifs (MAY).
objectclass ( [Link] NAME 'person' DESC 'RFC2256: a person' SUP top STRUCTURAL MUST ( sn $ cn ) MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )
27
Les classes dobjets (3)
On distingue trois types de classes dobjets :
les classes abstraites :
elles ne peuvent pas avoir dinstance. seules les classes drives peuvent tre instancies. exemple : la classe top dont drivent toutes les classes dun annuaire. elles peuvent tre instancies. exemple : la classe person dont on trouve des instances dans un annuaire. elles tendent les classes de type structurel. elles drivent directement de la classe top.
les classes structurelles :
les classes auxiliaires :
28
Les classes dobjets (4)
Julien Baudry
29
Lhritage entre classes dobjets (1)
Lhritage au sens LDAP est dfini ainsi : une classe ne peut driver que dune seule classe (pas dhritage multiple). une classe peut avoir plusieurs filles. toutes les classes drivent de la classe abstraite top. la classe top ne possde quun seul attribut : lattribut obligatoire objectClass. un attribut ne peut pas tre surclass.
30
Lhritage entre classes dobjets (2)
top
objectClass
organization
O userPassword telephoneNumber
person
Sn Cn userPassword telephoneNumber seeAlse description
country
C searchGuide description
organisationalPerson
Street postalCode postalAddress
person
I Street postalAdress postalCode 31
Lagrgation dobjets (1)
Une entre de lannuaire peut tre constitue de plusieurs classes dobjets. Lune de ces classes doit tre de type structurel. Les attributs obligatoires sont la somme des attributs obligatoires de chacune de ces classes. Un attribut commun plusieurs classes sera partag .
32
Lagrgation dobjets (2)
Julien Baudry
33
Les relations entre objets
Elles sont dfinies par un attribut de type DN. Cet attribut contient un pointeur vers un autre objet de lannuaire. Cela permet de se rapprocher du modle relationnel des bases de donnes.
34
Comment savoir quels sont les objectClass disponibles et quels attributs ils contiennent? Il est constitu de lensemble :
Le schma (1)
des attributs. de leurs syntaxes. des rgles de comparaison. des classes dobjets.
Il est dfini dans lannuaire laide dattributs et de classes spcifiques. Il permet de garantir la validit et lintgrit des donnes.
35
Le schma (2)
Structure d'un schma
Objets
objectClas s
objectClas s
Attribut s
Attribut s
Attribut s
36
Le schma (3)
Exemple de schma :
attributetype ( [Link] NAME 'serialNumber' DESC 'RFC2256: serial number of the entity EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX [Link].4.1.1466.[Link]{64} ) attributetype ( [Link] NAME ( 'c' 'countryName' ) DESC 'RFC2256: ISO-3166 country 2-letter code' SUP name SINGLE-VALUE ) attributetype ( [Link] NAME ( 'street' 'streetAddress' ) DESC 'RFC2256: street address of this object' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX [Link].4.1.1466.[Link]{128} ) attributetype ( [Link] NAME ( 'ou' 'organizationalUnitName' ) DESC 'RFC2256: organizational unit this object belongs to' SUP name )
37
Le format LDIF (1)
LDIF signifie LDAP Data Interchange Format. Il sagit du format dchange pour les annuaires LDAP. Il est bas sur un format texte ASCII. Il permet dimporter ou dexporter des donnes : cration, mise jour, rplication.
38
Le format LDIF (2)
Les entres de lannuaire sont dcrites sous forme de blocs indpendants. Chaque entre/bloc est spar par une ligne vide. Chaque bloc commence par le DN de lobjet. Le RDN doit galement se trouver dans la liste des attributs.
39
Le format LDIF (3)
dn: ou=accounts, dc=ibsm,dc=cnrs-mrs,dc=fr ou: accounts objectClass: top objectClass: organizationalUnit dn: ou=ibsm,ou=accounts, dc=ibsm,dc=cnrs-mrs,dc=fr ou: ibsm objectClass: top objectClass: organizationalUnit dn: uid=jdoe,ou=ibsm,ou=accounts, dc=ibsm,dc=cnrs-mrs,dc=fr givenName: John objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword:: e2NyeXB0fWFOQTdvNHBNS2J3dmM= uid: jdoe mail: jdoe@[Link] uidNumber: 1612 cn: John Doe loginShell: /bin/false gidNumber: 600 homeDirectory: /home/vmail/jdoe sn: Doe
Universit du Havre - 2008
40
Plan
Introduction Protocole Modle d'information Modle de nommage Modle fonctionnel Modle de scurit Modle de duplication Conception dun annuaire Architecture Configuration et administration dun serveur OpenLdap
41
Modle de nommage
Le modle de nommage est la manire dont sont organises les donnes dans l'annuaire. LDAP organise les donnes de manire hirarchique dans l'annuaire Cette arborescence est lie au nommage de chaque lment : un lment marque son appartenance l'lment suprieur en en reprenant le nom, qu'il complte par le sien. Directory Information Tree (DIT)
Les entres gres par le serveur LDAP sont toutes nommes Lespace de nommage est organis sous la forme dun arbre LDAP ne permet pas de limiter les relations de contenance entre classes dobjets : tout est permis.
Quelques termes (1)
Chaque lment est appel une entre (an entry). Une entre peut tre un branchement (un noeud, a node) ou un lment terminal (une feuille, a leaf). Chaque lment possde un DN (Distinguished Name). Le DN est le nom complet de l'lment qui permet de le positionner dans l'arborescence. Il est unique dans l'annuaire. Exemple : "cn=etudiants,ou=groups,ou=iut, dc=univ-lehavre,dc=fr "
43
Quelques termes (2)
Chaque lment possde galement un RDN (Relative Distinguished Name). Le RDN est la partie du DN de l'lment qui est relative au DN suprieur. Le RDN d'un lment ne permet pas de l'identifier de manire abolue dans l'annuaire. Exemple : "cn=etudiants" La racine est l'lment suprieur de tous les autres, c'est la base de l'arborescence. On l'appelle root en anglais, parfois on parle de "root DN". Exemple : "dc=univ-lehavre,dc=fr"
44
Arborescence
Root DN / Racine
Node Entry Leaf
45
Les OID : Object Identifier (1)
Un OID est un identifiant unique associ :
chaque classe dobjet. chaque type dattribut.
Un OID est compos de plusieurs numros spars par un point. Chaque numro reprsente une branche dun arbre hirarchique. Tous les attributs du standard commencent par 2.5.4. Toutes les classes dobjet commencent par 2.5.6.
46
Les OID : Object Identifier (2)
Les numros sont affects par une instance de normalisation : IANA ou ANSI. Certaines organisations se voient dlguer lattribution des numros pour une sous branche : Standard LDAP ([Link].4.1.1466.101.120). Universit du Michigan ([Link].[Link], 2 ou 3). Microsoft pour AD (1.2.840.113556.1). etc. Un site recense les OID normaliss : [Link]
47
Alias
Deux types dobjets particuliers : Alias Referrals Alias : rfrence entre entres au sein dun mme annuaire
Referrals
Referrals :
Distribuer la gestion dun annuaire entre plusieurs serveurs LDAP distincts Chaque serveur gre un sous-ensemble du DIT global Permet la monte en charge en gardant de bonnes performances La distribution est gre au niveau du client LDAP, il est responsable de toutes les connexions Permet dans lInternet de prserver lautonomie des serveurs car : La bande passante entre un client et serveur et la mme quentre serveur et serveur Les clients sont suffisamment puissants Limite : tout le travail incombe lutilisateur
Gestion de la distribution
Referrals
Plan
Introduction Protocole Modle d'information Modle de nommage Modle fonctionnel Modle de scurit Modle de duplication Conception dun annuaire Architecture Configuration et administration dun serveur OpenLdap
51
Le Modle fonctionnel
Dcrit le moyen daccder aux donnes ainsi que les oprations quon peut leur appliquer Le modle dfinit : les oprations dinterrogation les oprations de comparaison les oprations de mise jour les oprations dauthentification et de contrle
Interrogation de l'annuaire
Interrogation LDAP ne fournit pas dopration de lecture dentre Pour connatre le contenu dune entre, il faut crire une requte Scope & Filter
Interrogation de l'annuaire : la porte
scope=base
Permet de faire une recherche dans la base de l'annuaire, et retourne toutes les entres trouves. Permet de faire une recherche partir du noeud spcifi par la base, dans le noeud courant, mais aussi dans tous les noeuds sous jacents : recherche rcursive dans toutes les branches du sous-arbre prenant racine la base considre Permet de faire une recherche partir du noeud spcifi par la base, uniquement sur le niveau courant. Cela vite de descendre visiter les OU s'il n'y en a pas besoin.
scope=sub
scope=one
54
Interrogation de l'annuaire : la porte
L'argument -s dfinit la porte de recherche dans la base. Le scope dfinit la profondeur de la recherche dans le DIT.
55
Interrogation de l'annuaire : le filtre
Filter : Permet de tester lexistence ou les valeurs dattributs Exemple : objectclass = person telephonenumber = 01* La clause filter dune requte LDAP est compos dun ensemble de conjonctions et/ou de disjonctions de filtres simples
Interrogation de l'annuaire : ldapsearch
Forme de requete la plus simple
ldapsearch -x -LLL [filtre] [attributs a retourner]
-x : pas dauthentification sasl -LLL : sorties au format ldif -h : dsigner le serveur ldap -b : le DN de la base -D : connexion authentifie la base -W w : en donnant le mot de passe -s : la porte de recherche dans la base
Les arguments de ldapsearch:
57
Interrogation de l'annuaire : ldapsearch
Forme de requete la plus simple
ldapsearch -x -LLL [filtre] [attributs a retourner] ldapsearch -x objectclass=posixaccount sn ldapsearch -x -LLL D uid=admin,dc=iut,dc=univlehavre,dc=fr Wuid=toto ldapsearch -LLL -x b ou=groups,dc=iut,dc=univlehavre,dc=fr objectclass=* cn
Interrogation avec une connexion ( bind) en admin
Interrogation sur une branche particulire
58
Interrogation de l'annuaire : oprateurs "et" "ou" (1)
requtes complexes et ou : notation prfixe (et(requeteA)(requeteB))
Approximation (sn~=lbs) ##orthographe voisine de lbs Egalit stricte (sn=toto) ##recherche exactement toto Comparaison (sn>toto) , <= , >= , < ##noms situs alphabtiquement aprs ou avant toto Prsence (sn=*) ##retourne les entres ayant un attribut sn prsent
59
Interrogation de l'annuaire : oprateurs "et" "ou" (2)
Requtes complexes et ou : notation prfixe (et(requeteA)(requeteB))
Sous-chane (sn=to*), (sn=*to), (sn=t*t*) ##expressions rgulires sur les chanes ET (&(sn=toto) (u2site=luminy)) ##nom est toto et du site luminy OU '(|(sn~=lbs)(sn=gora))' sn ## nom proche de lbs ou gora Ngation (!(tel=*)) toutes les entres sans attribut tlphone
Universit du Havre - 2008
60
Interrogation de l'annuaire : ET OU
Les personnels de l'IUT ldapsearch -h [Link] -L -x b "ou=people,dc=univ-lehavre,dc=fr" '(&(supannAffectation=IUT) (objectClass=supannPersonne))' cn Les personnels du l'IUT des sites Caucriauville OU Frisssard ldapsearch -L -x -b "ou=people,dc=iut,dc=univlehavre, dc=fr" '(&(supannAffectation=iut)(| (site=Caucriauville)(Site=Frissard)) )' cn attention aux parenthses et la syntaxe
Universit du Havre - 2008
61
Interrogation de l'annuaire : non !
requtes complexes non (!(A)) Tous les comptes de la base sauf ceux du site Frissard ldapsearch -L -x b "ou=people,dc=com,dc=univlehavre, dc=fr" '(&(objectclass=posixaccount)(! (u2Site=Frissard)))' uid cn u2Site
62
Plan
Introduction Protocole Modle d'information Modle de nommage Modle fonctionnel Modle de scurit Modle de duplication Conception dun annuaire Architecture Configuration et administration dun serveur OpenLdap
Universit du Havre - 2008
63
Modle de scurit (1)
Elle consiste : protger laccs aux donnes : chiffrement des transferts entre le serveur et les clients. politique de listes de contrle daccs. filtrage au niveau TCP. prserver lintgrit des donnes : mise en uvre de dispositifs de rplication. prvenir les dnis de services (DOS).
Modle de scurit (2)
Dcrit le moyen de protger les donnes de lannuaire des accs non autoriss Plusieurs niveaux : authentification lors de laccs un service anonymous permet de consulter les donnes accessibles en lecture pour tous administrateur (tous les droits) mot de passe en clair (DN + password transitent en clair sur le rseau) Mot de passe + SSL ou TLS (la session est chiffre) change de certificats SSL (cls publiques/prives)
Modle de scurit (3)
Plusieurs niveaux : authentification lors de laccs un servic Simple Authentification and Security Layer (SASL) : mcanisme externe dauthentification (Kerberos, S/Key, GSSAPI) contrle daccs dfinit les droits des diffrents utilisateurs sur les donnes chiffrement des transactions entre clients et serveurs ou entre serveurs
Les droits daccs (1)
Les droits daccs : permettent de grer les autorisations sur la totalit des entres de lannuaire. sappliquent sur les objets et sur leurs attributs. consistent dcrire les droits de certains objets de lannuaire sur dautres entres. Cette description seffectue laide de rgles (ACL). Chaque ACL comprend plusieurs rgles (ACI). La syntaxe dune ACI nest pas normalise. Les ACL du serveur slapd
Access to <un_attribut> By <uid de la base> <type d'autorisation> By <uid de la base> <type d'autorisation>
67
Les droits daccs (2)
Les listes de contrle daccs rpondent aux questions suivantes :
Qui ? A partir do ? authentification (auth), lecture (read), criture (write), suppression (write), ajout (write), recherche (search), comparaison (compare). attribut, objet, totalit de lannuaire (*).
anonyme (anonymous), utilisateur (self), groupedutilisateurs (users), tout le monde (*).
nom de machine ou adresse IP source.
Quels droits ?
Sur quoi ?
68
Plan
Introduction Protocole Modle d'information Modle de nommage Modle fonctionnel Modle de scurit Modle de duplication Conception dun annuaire Architecture Configuration et administration dun serveur OpenLdap
Universit du Havre - 2008
69
La conception (1)
Elle est ltape la plus importante du processus de mise en oeuvre de lannuaire. Elle se dcompose en plusieurs phases que lon peut rsumer ainsi :
Quelles informations mettre dans lannuaire ?
(dfinition des attributs et des classes dobjets).
Quelle est la provenance des donnes et quels en sont les propritaires ? Comment les organiser dans un modle commun toutes les applications?
(schma de lannuaire, organisation hirarchique).
70
La conception (2)
Qui va grer ces donnes et de quelle manire ? Comment les faire voluer dans le temps ? (dfinition des attributs et des classes supplmentaires). Quelle politique daccs appliquer ? Quelles applications clientes les utiliseront ?
71
La conception (3)
Il est indispensable de :
bien prendre en compte tous les acteurs. suivre scrupuleusement la procdure de dploiement pour dtecter les incohrences et les problmes leplus en amont possible. dmarrer petit, grossir petit petit, valider sur un annuaire qui nest pas en production, rester simple dans la conception.
Quelques rgles simposent :
72
Ltape de cadrage
Elle consiste identifier les besoins qui motivent la mise en place dun annuaire. Il est conseill de :
limiter le champ de lannuaire une ou deux applications. choisir une application reprsentative des besoins les plus larges. justifier la pertinence de lintgration de cette application lannuaire. authentification auprs dun service de messagerie. annuaire de type Pages Blanches .
Quelques exemples dapplications :
73
Llaboration du contenu (1)
Lobjectif de cette tape est de dfinir :
les attributs, les classes dobjets, la hirarchie entre ces classes. personnes : nom, prnom, tlphone, fonction, etc. organisations : nom, adresse, contacts, etc. ressources : ordinateur, tlphone portable, etc. paramtres de configuration dapplications. etc.
Quelques exemples de donnes :
74
Llaboration du contenu (2)
Les informations stockes dans lannuaire doivent tre prennes. ex : identifiants, mots de passe, adresses. Elles doivent intresser plusieurs applications clientes . Il ne faut pas confondre un annuaire avec : une base de donnes relationnelle. un systme de fichiers. un serveur Web ou un serveur FTP.
75
La description des donnes (1)
La description des donnes dcoule des applications qui utiliseront lannuaire. Il est recommand danticiper les volutions futures de lannuaire. Il faut recenser les donnes :
actuelles. futures en fonction des applications de lentreprise. celles quil serait intressant dajouter lannuaire selon vous.
76
La description des donnes (2)
Quelles sont les sources des donnes actuelles ? serveur de messagerie, applications de ressources humaines, Quels seront les outils utiliss pour importer les donnes dans lannuaire ? applications existantes, dveloppement doutils spcifiques en interne, Quel sera le rfrentiel principal ?
77
Laccs aux donnes
On dfinit la politique daccs aux donnes pour les utilisateurs et les applications. Il est possible de dlguer la gestion des donnes un utilisateur ou un groupe.
exemple : mise jour du numro de tlphone. lecture seule pour tout le monde, accs complet pour un groupe dadministrateurs, chaque utilisateur a le droit de modifier certains attributs, accs en criture sur un sous-ensemble de donnes pour certains groupes de personnes,
Exemples :
78
Conception du schma de lannuaire
La conception du schma permet de dfinir :
les attributs obligatoires, les attributs facultatifs/autoriss, les classes dobjets, les DN, la structure de lannuaire.
79
La dfinition des attributs (1)
Elle seffectue paralllement la dfinition des classes. On liste les principaux attributs communs lensemble des classes dobjets. Chaque donne est associe un attribut. Suivant la nature de la donne, il est conseill de normaliser les valeurs.
exemple : "[Link].33" ou "04 91 16 43 33".
Ces conventions devront tre respectes par les applications clientes.
80
La dfinition des attributs (2)
On utilise autant que possible les attributs dfinis par la norme LDAP. On doit respecter la smantique des attributs standards. ex : attribut pays "c" cod sur 2 lettres (ISO 3166). On dfinit si lattribut sera multi-valu. On tablit la frquence de lecture de lattribut pour ventuellement lindexer.
81
La dfinition des classes dobjets
Leur dfinition dpend : du type de ressource (personne, bureau, machine, etc.). des attributs obligatoires, des attributs autoriss. On utilise autant que possible les classes dfinies par la norme LDAP. Les classes dobjets doivent driver autant que possible des classes du standard LDAP.
82
Personnalisation du schma
Le schma dun annuaire doit souvent tre tendu pour :
stocker des donnes non prvues dans le schma de base.
ex : adresse dune photo, code mtier.
grer des types de ressources non standards.
ex : ordinateur, vhicule.
ATTENTION !! Ne jamais modifier le schma standard ! 5 tapes pour tendre un schma :
Obtenir un Object Identifier Crer un schema local (include) Definir des attributs Definir des ObjectClass
Universit du Havre - 2008
83
Objectif
Nous souhaitons stocker nos comptes de messagerie dans un annuaire LDAP. Nous voulons dfinir pour ces comptes des attributs propres notre organisation. Ce rfrentiel sera utilis ultrieurement pour authentifier les utilisateurs auprs dautres applications :
applications Intranet. serveurs FTP. synchronisation avec les domaines Windows. etc.
84
Description des donnes (1)
Dterminons les attributs qui caractrisent le compte de messagerie dun utilisateur :
lidentifiant, le mot de passe, son adresse de messagerie, son ou ses alias de messagerie, son rpertoire de base, le chemin daccs sa bote aux lettres, le protocole de tlchargement des messages stocks sur le serveur, le quota de la BAL exprim en volume, le quota de la BAL exprim en nombre de messages, la date dexpiration du compte de lutilisateur, un champ indiquant si le compte est actif.
85
Description des donnes (2)
Dfinissons ensuite les attributs qui dcrivent une personne de notre organisation :
son nom de famille, son prnom, sa photo, son unit ou quipe, son chef dquipe, son statut, son bureau, son adresse postale complte, son numro de tlphone, son numro de fax, son titre (diffrent de la fonction), la date dexpiration du compte de lutilisateur, son certificat lectronique, son ou ses ordinateurs.
86
Conception du schma (1)
Faisons le point sur les attributs fournis par les classes dobjets standards : classe dobjets inetOrgPerson :
87
Conception du schma (2)
classe dobjets organizationalPerson :
88
Conception du schma (3)
classe dobjets posixAccount :
classe dobjets shadowAccount :
89
Conception du schma (4)
Dfinissons notre classe iutLeHavrePerson : elle hrite de la classe inetOrgPerson. elle est compose de nouveaux attributs qui ont t ajouts au rfrentiel commun.
top person organizationalPerson inetOrgPerson iutLeHavrePerson
90
Conception du schma (6)
Dfinition des attributs :
91
Conception du schma (7)
Dfinition de la classe dobjets :
Intgration du nouveau schma lannuaire OpenLdap : dition du fichier /etc/ldap/[Link] :
Universit du Havre - 2008
92
Exemple dobjet
Dfinition dun compte de messagerie :
93
Peuplement de lannuaire OpenLdap (1)
Cration de lobjet racine et des premires entres. Utilisation du format dchange pour les annuaires LDAP (LDIF). Deux mthodes dimportation possibles :
en soumettant le fichier au contrle du serveur dannuaire (commande ldapadd). en excutant les outils de gestions fournis en natif avec OpenLdap (commande slapadd).
94
Peuplement de lannuaire OpenLdap (2)
Utilisation de la commande ldapadd :
ldapadd -W -D <binddn> -x -H ldap://<serveur> -f <[Link]>
-x : authentification simple (au lieu de SASL). -W : demande la saisie interactive du mot de passe administrateur de lannuaire. -D : prcise le DN de lutilisateur pour se connecter lannuaire. -f : le fichier dchange importer.
95
Peuplement de lannuaire OpenLdap (3)
Utilisation de la commande slapadd : Contexte du peuplement :
La commande slapadd ne ncessite pas que le serveur dannuaire soit actif. Limportation se fait sans contrle dintgrit au niveau de lannuaire :
pas de vrification du schma. pas de contrle de larborescence avant dajouter une entre (DN).
pas de mise jour des attributs oprationnels.
96
Annexe
Rplication LDAP avec slurpd
Rplication du serveur OpenLdap
La mise en oeuvre de la rplication permet:
doptimiser la gestion de la charge. damliorer la disponibilit de lannuaire. de scuriser les donnes.
Il existe deux mcanismes de rplication entre annuaires LDAP :
le processus bas sur la gnration dun fichier LDIF et gr par un dmon ddi (slurpd). un mcanisme dnomm LDAP Sync Replication disponible depuis la version 2.2 dOpenLdap.
98
Rplication avec slurpd (1)
Les configurations possibles sont de type :
matre/esclave(s). multi-matres. gnration dun fichier LDIF par le serveur LDAP. le dmon slurpd analyse le contenu de ce fichier. il applique les modifications sur le serveur esclave.
Fonctionnement du mcanisme :
Une configuration de rplication sapplique une base de donnes LDAP.
99
Rplication avec slurpd (2)
Mise en oeuvre :
configuration prliminaire du serveur esclave lidentique de lannuaire matre :
schma, racine et arborescence, rgles de contrle daccs (ACL), donnes.
100
Rplication avec slurpd (3)
Mise en oeuvre (suite) :
configuration du serveur matre :
# Where to store the replica logs for database #1 replogfile /var/lib/ldap/replog
dclaration du fichier journal des rplications :
dclaration du serveur esclave :
replica uri=ldap://[Link] binddn="cn=replicator,dc=ibsm,dc=cnrs-mrs,dc=fr" bindmethod=simple credentials=mon_mot_de_passe
cration de lutilisateur ddi au processus de rplication.
101
Rplication avec slurpd (5)
Mise en oeuvre (suite) :
synchronisation du contenu de lannuaire esclave avec celui de lannuaire matre. activation de la rplication :
exemple : utilisation du format dchange LDIF.
redmarrage du serveur matre. redmarrage du ou des serveurs esclaves. excution, sur le serveur matre, de la commande slurpd pour activer le processus de rplication.
Universit du Havre - 2008
102
Rplication avec slurpd (6)
Mise en oeuvre (suite) :
lancement automatique de la commande slurpd chaque dmarrage du systme :
# Configure if the slurpd daemon should be started. Possible values: # - yes: Always start slurpd # - no: Never start slurpd # - auto: Start slurpd if a replica option is found in [Link] (default) SLURPD_START=auto
dition du fichier /etc/default/slapd :
Campagne de tests :
modification dune valeur sur lannuaire matre. modification dune valeur sur lannuaire esclave.
103
Rplication avec slurpd (7)
Illustration : modification dune valeur sur lannuaire esclave.
le client LDAP soumet une modification lannuaire esclave. ce dernier retourne les informations ncessaires (pointeur) pour sadresser directement au matre. le client soumet la modification au matre. celui-ci applique la modification et linscrit dans le fichier journal de rplication. le dmon slurpd dtecte la mise jour et transmet un ordre de mise jour lesclave. le serveur esclave applique le changement et notifie slurpd du bon droulement de lopration.
104