Administration des réseaux avec SNMP & LDAP
Modèle de données
Introduction
Le modèle de données de LDAP s’apparente très fortement au langage orienté objet.
Les informations d’un annuaire LDAP sont stockées sous forme d’une arborescence d’informations hiérarchiques (Directory Information Tree). A chaque nœud de cette arborescence, on retrouve l’instance d’un classe, qui elle-même va contenir un ensemble d’attributs représentent la donnée.

Figure 13 - Exemple de Directory Information Tree
Distinguished Name
Le Distinguished Name (DN) est un nom distinct qui permet d’identifier de façon unique une entrée de l’annuaire électronique. Si on en revient à notre comparaison avec les bases de données relationnelles, cette notion est très proche de la notion de Primary Key.

Figure 14 - Exemple de Distinguished Name
On pourrait, par exemple, prendre d’un étudiant dans une université (voir figure ci-dessus). Dans notre cas, le Distinguished Name est : dn: cn=Valentin GOT,ou=personnes,dc=esipe,dc=fr
Pour lire un Distinguished Name, il faut le lire en partant de la fin :
+ dc=esipe,dc=fr
|
+--+ ou=personnes
|
+-- cn=Valentin GOT
Comme on peut le voir, le séparateur utilisé pour différencier les différentes parties du DN est la virgule « , ». Il est facile de comparer le DN du protocole LDAP avec le chemin d’accès vers un fichier, qui lui aussi est unique, mais qui utilise un séparateur slash « / ». Toutes les entrées d'un DIT (même les nœuds intermédiaires) possèdent un DN.
Classe
LDAP possède déjà un certain nombre de classes et d’attributs pour représenter un utilisateur, une machine, … En plus des classes déjà proposés par LDAP, l’administrateur du serveur LDAP à la possibilité d’en créer de nouvelles pour qu’elles correspondent plus au modèle de données qu’il souhaite mettre en place.
Une classe, c’est :
- Un numéro d’objet unique (OID) qui la définit et qui précise la classe d’attribut à laquelle elle appartient.
- Un nom permettant d’identifier la classe (NAME)
- Une description (DESC)
- Un type représentant le type de classe implémenté. Ce type peut être :
- Abstract : C’est une classe dont une autre classe peut hériter pour utiliser la liste des attributs qu’elle fournit. Une classe abstraite ne peut pas être instanciée et ne peut pas hériter d’une autre classe abstraite.
- Structural : C’est une classe qui a pour objectif d’être instanciée. Une classe structurelle doit hériter directement ou indirectement de la classe top, qui est la classe mère de toutes les autres classes.
- Auxiliary : On peut utiliser ce type de classes pour augmenter le nombre d’attribut d’une autre classe.
- Une liste d’attributs optionnels (MAY) ou obligatoires (MUST)
De plus, une classe à la possibilité d'hériter d’une ou plusieurs autres classes (définies ou non par LDAP) à l’aide de l’attribut SUP.
Le format d’une classe tel qu’il est définit dans la RFC :ObjectClassDescription = "(" whsp
numericoid whsp ; ObjectClass identifier
[ "NAME" qdescrs ]
[ "DESC" qdstring ]
[ "OBSOLETE" whsp ]
[ "SUP" oids ] ; Superior ObjectClasses
[ ( "ABSTRACT" / "STRUCTURAL" / "AUXILIARY" ) whsp ] ; Default STRUCTURAL
[ "MUST" oids ] ; AttributeTypes
[ "MAY" oids ] ; AttributeTypes
whsp ")"
Classe représentant un groupe d'élèves à l'ESIPE :#group
objectclass ( 2.5.4.42.2.1
NAME 'group'
DESC 'ESIPE Group'
SUP organizationalRole
STRUCTURAL
MUST (
esipeGroupName $
esipeGroupMember $
esipeGroupDelegate
)
)
Attribut
Un attribut représente un élément d’une classe. De même que pour les classes, il possède un numéro d’identification unique (OID), un nom (NAME), une description (DESC) et peut hériter des propriétés d’un autre attribut (SUP).
Un attribut possède aussi un type (SYNTAX), précisant si cet attribut est une chaine de caractère, un entier, ... Ce type est défini par un OID.
De plus, un attribut peut :
- Etre monovalué ou multivalué (SINGLE-VALUE)
- Définir des comportements à adopter lors d’une recherche (EQUALITY, ORDERING, SUBSTR)
- Définir sa visibilité (COLLECTIVE)
- Définir si l’utilisateur de l’annuaire LDAP à ou non le droit de le modifier (NO-USER-MODIFICATION)
Le format d’un attribut tel qu’il est définit dans la RFC :AttributeTypeDescription = "(" whsp
numericoid whsp ; AttributeType identifier
[ "NAME" qdescrs ] ; Name used in AttributeType
[ "DESC" qdstring ] ; Description
[ "OBSOLETE" whsp ]
[ "SUP" woid ] ; Derived from this other
[ "EQUALITY" woid ] ; Matching Rule name
[ "ORDERING" woid ] ; Matching Rule name
[ "SUBSTR" woid ] ; Matching Rule name
[ "SYNTAX" whsp noidlen whsp ] ; Syntax OID
[ "SINGLE-VALUE" whsp ] ; Default multi-valued
[ "COLLECTIVE" whsp ] ; Default not collective
[ "NO-USER-MODIFICATION" whsp ] ; Default user modifiable
[ X-ORDERED whsp type ] ; Non-standard - default not X-ORDERED
[ "USAGE" whsp AttributeUsage ] ; Default userApplications
whsp ")"
Attribut représentant le nom d'un groupe d'élèves à l'ESIPE :#groupName
attributetype ( 2.5.4.42.1.1
NAME 'esipeGroupName'
DESC 'Group of person'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{5}
)