Les schémas
Introduction
Les schémas définis dans un annuaire sont un élément essentiel à considérer lors de la création de celui-ci. En effet, ce sont eux qui permettront de déterminer la nature des entrées de l’annuaire. Ce chapitre va donc être consacré à la présentation des schémas de base fournis par OpenLDAP et à l’ajout d’un nouveau schéma à notre serveur OpenLDAP de démonstration pour l’utilisation du programme "sudo".
Les schémas contenus dans OpenLDAP
Après l’installation d’OpenLDAP, il est possible de trouver les fichiers des différents schémas dans le répertoire /etc/openldap/schema comme le montre la figure 7-1 :
[root@ldap01 schema]# ls -lrt
total 308
. . .
-rw-r--r--. 1 root root 3481 Jun 18 2014 inetorgperson.ldif
-rw-r--r--. 1 root root 3330 Jun 18 2014 dyngroup.ldif
-rw-r--r--. 1 root root 4842 Jun 18 2014 duaconf.ldif
-rw-r--r--. 1 root root 12006 Jun 18 2014 cosine.ldif
-rw-r--r--. 1 root root 20612 Jun 18 2014 core.ldif
-rw-r--r--. 1 root root 1845 Jun 18 2014 corba.ldif
-rw-r--r--. 1 root root 2036 Jun 18 2014 collective.ldif
. . .
-rw-r--r--. 1 root root 13901 Jun 18 2014 java.schema
-rw-r--r--. 1 root root 6267 Jun 18 2014 inetorgperson.schema
-rw-r--r--. 1 root root 3289 Jun 18 2014 dyngroup.schema
-rw-r--r--. 1 root root 10388 Jun 18 2014 duaconf.schema
-rw-r--r--. 1 root root 73994 Jun 18 2014 cosine.schema
-rw-r--r--. 1 root root 20499 Jun 18 2014 core.schema
-rw-r--r--. 1 root root 8063 Jun 18 2014 corba.schema
-rw-r--r--. 1 root root 6190 Jun 18 2014 collective.schema
[root@ldap01 schema]#
Figure 7-1
Il s’y trouve également des fichiers ".ldif"...
Extension de schéma
Il faut savoir que les objets et les attributs LDAP, entre autres choses, sont identifiables par un OID unique et universel géré par l’IANA. Un OID est représenté par une suite de chiffres séparés par un point et organisés sous forme hiérarchique. Ils ont été définis d’après une recommandation de l’IETF et permettent ainsi d’assurer une interopérabilité entre les applications.
OID |
Description |
0 |
branche de l’International Telecommunication Union |
1 |
branche ISO |
2 |
branche commune entre l’International Telecommunication Union et ISO |
2.5 |
fait référence au service X500 |
2.5.4 |
définition des types d’attributs liés à X500 |
2.5.6 |
définition des classes d’objets liées à X500 |
1.3.6.1 |
Branche destinée à l’Internet |
1.3.6.1.4.1 |
Branche destinée aux entreprises privées |
1.3.6.1.4.1.4203 |
Branche destinée à OpenLDAP |
1.3.6.1.4.1.15953 |
Branche destinée au programme "sudo" |
1.3.6.1.4.1.X |
Branche destinée à l’entreprise X |
Ainsi, il est donc possible de créer son propre schéma en demandant l’assignation d’un OID de branche de type "1.3.6.1.4.1.X" auprès de l’organisme IANA. Puis il faudra créer la structure d’OID de la figure 7-4 afin...
Ajout du schéma "sudo"
Il a été défini dans le cahier des charges de cette infrastructure LDAP de démonstration, que les utilisateurs de l’annuaire peuvent utiliser des commandes "sudo" dont la configuration sera centralisée et sécurisée directement dans l’annuaire. Et afin de pouvoir y créer ces entrées dans l’annuaire, il faut au préalable charger son propre schéma, car il est inexistant dans le package de base d’OpenLDAP. Pour réaliser cela, il suffira de récupérer un fichier LDIF proposé la plupart du temps sur le site officiel de l’application. Par exemple, ce schéma est délivré dans les sources du code "sudo" situé sur son site officiel (https://www.sudo.ws/download.html#source).
Voici ci-dessous la procédure à suivre avec un fichier schéma LDIF nommé /tmp/testdir/sudo.schema (voir annexe) :
1. |
Créer les répertoires : /tmp/testdir et /tmp/testdir/config. |
2. |
Créer le fichier : /tmp/testdir/test.conf et placer dans ce dossier le fichier sudo.schema précédemment récupéré. |
3. |
Indiquer dans le fichier test.config la ligne : echo "include /tmp/testdir/sudo.schema" > /tmp/testdir/test.conf. |
4. |
Exécuter depuis le dossier /tmp/testdir la commande : |
[root@ldap01 testdir]# slaptest...
Suppression d’un schéma
Il n’est pas possible de supprimer un schéma en utilisant la configuration dynamique (OLC) via le DIT "cn=config", car cela impliquerait de supprimer tous les attributs de ce schéma présents dans chacune des entrées de l’annuaire. Il est cependant possible de réaliser cette tâche manuellement, mais il faut veiller à posséder une sauvegarde ou une archive de l’annuaire dans ce cas, car si malencontreusement un attribut critique au fonctionnement de l’annuaire venait à être supprimé, cela le rendrait inutilisable. Il n’est donc pas conseillé de supprimer un schéma de l’annuaire OpenLDAP, car il ne gênera en rien le fonctionnement de l’annuaire. Voici les étapes à réaliser dans le cas où cette opération serait nécessaire :
1. |
S’assurer que les attributs et les classes d’objets répertoriés dans le schéma ne sont utilisés dans aucune des entrées de l’annuaire. |
2. |
Stopper l’annuaire et archiver le répertoire : /etc/openldap/slapd.d/cn=config |
3. |
Se rendre dans le répertoire suivant : /etc/openldap/slapd.d/cn=config/cn=schema |
Exemple
[root@ldap01 cn=schema]# pwd
/etc/openldap/slapd.d/cn=config/cn=schema
[root@ldap01 cn=schema]# ls -lrt
total 48
-rw-------. 1 ldap...