29.3. Configuration d'un serveur avec slapd.conf

Lorsque le système est installé, /etc/openldap/slapd.conf est disponible comme fichier de configuration complet pour le serveur LDAP. Vous trouverez ci-après une description des différents enregistrements, précisant les ajustements à apporter. Les lignes commençant par un # sont inactives. Pour activer ces lignes, il vous suffit de supprimer ce caractère de commentaire de la ligne choisie.

29.3.1. Instructions globales dans slapd.conf

Exemple 29.2. slapd.conf : Instruction Include pour les schémas

include /etc/openldap/schema/core.schema 
include /etc/openldap/schema/inetorgperson.schema

Cette première instruction de slapd.conf, montrée dans  Exemple 29.2, « slapd.conf : Instruction Include pour les schémas »,indique quel schéma est utilisé pour l'organisation de votre annuaire LDAP. La ligne core.schema est toujours requise. Dans le cas où vous auriez besoin de schémas supplémentaires, ajoutez-les à la suite de cette instruction (l'exemple ajouté ici est inetorgperson.schema). Vous pourrez trouver d'autres schémas disponibles dans le répertoire /etc/openldap/schema/. Si vous voulez remplacer le service NIS par un service LDAP équivalent, mentionnez à cet endroit les schémas cosine.schema et rfc2307bis.schema. Pour plus d'informations, reportez-vous à la documentation de OpenLDAP fournie.

Exemple 29.3. slapd.conf : pidfile et argsfile

pidfile /var/run/slapd/slapd.pid 
argsfile /var/run/slapd/slapd.args

Ces deux fichiers contiennent l'identificateur de processus (PID, de l'anglais process id) ainsi que différents arguments utilisés pour le lancement du processus slapd. Aucune modification n'est nécessaire ici.

Exemple 29.4. slapd.conf : Contrôle d'accès

# Sample Access Control
#       Allow read access of root DSE
#       Allow self write access
#       Allow authenticated users read access
#       Allow anonymous users to authenticate
#
access to dn="" by * read
access to *
       by self write
       by users read
       by anonymous auth
#
# if no access controls are present, the default is:
#       Allow read by all
#
# rootdn can always write!

Exemple 29.4, « slapd.conf : Contrôle d'accès » est l'extrait de code du fichier slapd.conf qui paramètre le contrôle d'accès à l'annuaire LDAP sur le serveur. Les paramètres qui sont définis dans la section globale du fichier slapd.conf s'appliquent tant qu'aucune règle d'accès particulière distincte n'a été établie dans la section propre à la base de données. Ces règles ont priorité sur les déclarations globales. Dans la configuration présentée, tous les utilisateurs ont un accès en lecture à l'annuaire, mais l'administrateur (rootdn) est le seul à pouvoir écrire dans cet annuaire. La définition des privilèges d'accès sous LDAP est un processus extrêmement complexe. Les astuces qui suivent peuvent aider :

  • Chaque règle d'accès a la structure suivante :

    access to <quoi> by <qui> <accès>
  • quoi représente l'objet ou l'attribut auquel vous accordez l'accès. Vous pouvez utiliser des règles séparées pour protéger de manière explicite différentes branches de l'arborescence ou des expressions rationnelles pour traiter des zones complètes de l'arborescence à l'aide d'une règle. slapd évalue toutes les règles dans l'ordre dans lequel elles ont été introduites dans le fichier de configuration. Vous devez donc toujours placer les règles génériques à la suite des règles plus spécifiques. slapd applique la première règle qui s'applique et toutes les lignes suivantes sont ignorées.

  • Le paramètre qui détermine qui peut accéder aux domaines définis avec quoi. Vous pouvez, ici aussi, utiliser des expressions rationnelles.slapd interrompt l'évaluation de qui après le première concordance, les règles spécifiques doivent donc être listées avant les règles générales. Les enregistrements énumérés dans Tableau 29.2, « Groupes d'utilisateurs et leurs droits d'accès » sont possibles.

    Tableau 29.2. Groupes d'utilisateurs et leurs droits d'accès

    Descripteur

    Portée

    *

    tous les utilisateurs sans exception

    anonymous

    utilisateurs non authentifiés (« anonymes »)

    users

    utilisateurs authentifiés

    self

    utilisateurs associés à l'objet cible

    dn.regex=<regex>

    Tous les utilisateurs auxquels cette expression rationnelle s'applique

  • accès spécifie le type d'accès. Utilisez les options énumérées dans Tableau 29.3, « Types d'accès ».

    Tableau 29.3. Types d'accès

    Descripteur

    Étendue de l'accès

    none

    Accès interdit

    auth

    pour la prise de contact avec le serveur

    compare

    pour l'accès aux objets pour comparaison

    search

    pour l'application de filtres de recherche

    read

    accès en lecture

    write

    accès en écriture

    slapd compare les privilèges demandés par le client avec ceux qui sont accordés dans le fichier slapd.conf. Le client obtient l'accès si les règles permettent des droits plus élevés ou égaux à ceux qui sont demandés. Si le client demande des droits plus élevés que ceux qui sont déclarés dans les règles, l'accès est interdit.

Exemple 29.5, « slapd.conf: Exemple de contrôle d'accès » présente l'exemple d'un contrôle d'accès simple que vous pouvez configurer à votre guise à l'aide d'expressions rationnelles.

Exemple 29.5. slapd.conf: Exemple de contrôle d'accès

access to  dn.regex="ou=([^,]+),dc=suse,dc=de" 
   by dn.regex="cn=administrator,ou=$1,dc=suse,dc=de" write 
   by user read 
   by * none

Cette règle stipule que pour tous les enregistrements ou, seul l'administrateur concerné dispose de l'accès en écriture. Les autres utilisateurs authentifiés bénéficient d'un accès en lecture et le reste du monde n'a droit à aucun accès.

[Tip]Définition de règles d'accès

En l'absence de règle access to ou d'instruction by concordante, l'accès n'est pas autorisé. Seuls les droits d'accès spécifiés de manière explicite sont accordés. Dans le cas où aucune règle n'est définie, on applique le principe par défaut : droits en écriture pour l'administrateur et droits en lecture pour le reste du monde.

Pour plus d'informations et un exemple de configuration des privilèges d'accès LDAP, reportez-vous à la documentation en ligne du paquetage openldap2 installé.

Pour la gestion des contrôles d'accès, il est possible d'utiliser, outre le fichier central de configuration du serveur (slapd.conf), les ACI, ou informations de contrôle d'accès (de l'anglais Access Control Information). Les ACI permettent d'enregistrer les informations d'accès à différents objets dans l'arborescence LDAP elle-même. Ce mode d'accès étant encore peu diffusé et étant considéré par les développeurs eux-mêmes comme étant de niveau expérimental, nous vous renvoyons ici aux pages correspondantes de la documentation du projet OpenLDAP : http://www.openldap.org/faq/data/cache/758.html.

29.3.2. Instructions propres à une base de données dans slapd.conf

Exemple 29.6. slapd.conf : Instructions propres à une base de données

database ldbm 
suffix "dc=suse,dc=de" 
rootdn "cn=admin,dc=suse,dc=de" 
# Cleartext passwords, especially for the rootdn, should 
# be avoided.  See slappasswd(8) and slapd.conf(5) for details. 
# Use of strong authentication encouraged. 
rootpw secret 
# The database directory MUST exist prior to running slapd AND 
# should only be accessible by the slapd/tools. Mode 700 recommended. 
directory /var/lib/ldap 
# Indices to maintain 
index   objectClass     eq

La première ligne de cette section (voir Exemple 29.6, « slapd.conf : Instructions propres à une base de données ») définit le type de base de données, en l'occurrence LDBM. Le paramètre suffix à la seconde ligne définit la partie de l'arborescence LDAP dont ce serveur doit être responsable. Le rootdn suivant indique qui dispose des privilèges d'administrateur sur ce serveur. L'utilisateur indiqué ici ne doit pas pas posséder d'enregistrement LDAP ni exister comme utilisateur normal. L'instruction rootpw définit le mot de passe de l'administrateur. Vous pouvez saisir ici à la place de secret le hachage du mot de passe de l'administrateur créé avec slappasswd. L'instruction directory spécifie le répertoire dans lequel les annuaires de la base de données sont enregistrés sur le serveur. La dernière instruction, index objectClass eq, permet de gérer un index à partir des classes d'objets. Le cas échéant, complétez quelques attributs parmi ceux que vous estimez les plus recherchés. Si vous ajoutez vos propres règles Access pour la base de données, elles sont utilisées à la place des règles Access globales.

29.3.3. Démarrer et arrêter les serveurs

Lorsque vous avez terminé de configurer le serveur LDAP et que vous avez créé tous les enregistrements que vous souhaitiez sur le modèle décrit dans Section 29.4, « Manipulation de données dans l'annuaire LDAP »), démarrez le serveur LDAP en tant qu'utilisateur root à l'aide de la commande rcldap start. Si vous voulez arrêter le serveur à la main, saisissez la commande rcldap stop. Vous pouvez demander l'état d'exécution du serveur LDAP à l'aide de la commande rcldapstatus.

Vous pouvez automatiser le démarrage et l'arrêt du serveur lors de la mise en marche et de l'arrêt de la machine concernée à l'aide de l'éditeur de niveaux d'exécution de YaST décrit dans Section 7.6, « Éditeur de niveaux d'exécution ». Vous pouvez aussi créer vous-même les liens correspondants pour les scripts de démarrage et d'arrêt à l'aide de la commande insserv à partir d'une invite de commande comme décrit dans Section 7.5.1, « Ajouter des scripts d'initialisation »).


SUSE LINUX Guide de l'administrateur 9.2