Vous êtes sur la page 1sur 104

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 : http://www.openldap.org Apache Directory Server : http://directory.apache.org Sun (One/Java) Directory Server : http://www.sun.com Active Directory : http://www.microsoft.com [...]

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 ( 2.5.4.5 NAME 'serialNumber' DESC 'RFC2256: serial number of the entity' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{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 ( 2.5.6.6 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 ( 2.5.4.5 NAME 'serialNumber' DESC 'RFC2256: serial number of the entity EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{64} ) attributetype ( 2.5.4.6 NAME ( 'c' 'countryName' ) DESC 'RFC2256: ISO-3166 country 2-letter code' SUP name SINGLE-VALUE ) attributetype ( 2.5.4.9 NAME ( 'street' 'streetAddress' ) DESC 'RFC2256: street address of this object' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} ) attributetype ( 2.5.4.11 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@ibsm.cnrs-mrs.fr 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 (1.3.6.1.4.1.1466.101.120). Universit du Michigan (1.3.6.1.4.1.250.1, 2 ou 3). Microsoft pour AD (1.2.840.113556.1). etc. Un site recense les OID normaliss : http://www.alvestrand.no/objectid

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 annuaire.iut-lehavre.fr -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 : "04.91.16.43.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/slapd.conf :

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 <fichier.ldif>

-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://galileo.ibsm.glm:389 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 slapd.conf (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