Sauvegarder/restaurer un annuaire OpenLDAP
Les données de l’annuaire
Il est possible de répertorier les données d’un serveur OpenLDAP en trois catégories :
-
Il y a bien entendu les fichiers binaires de l’application serveur OpenLDAP (le démon "slapd", etc.) qui ont été déposés par les packages RPM.
-
Puis les données de configuration du serveur LDAP définissant les schémas utilisés, le(s) nom(s) de(s) annuaire(s) avec toutes les informations relatives au fonctionnement d’un annuaire LDAP (BindUser, rootsuffix, réplication, etc.),
-
Et enfin, les données au sens "informations exploitées" par les utilisateurs de l’annuaire.
Toutes ces données sont contenues dans des fichiers au sein des répertoires par défaut suivants :
-
/etc/openldap : pour les fichiers de configuration.
-
/var/lib/ldap : pour les données de l’annuaire.
-
Les fichiers binaires sont quant à eux dispersés dans les différents répertoires système et binaires du serveur d’exploitation (/usr/bin,usr/sbin...).
Le répertoire système défini pour le contenu des données de l’annuaire peut être modifié par l’attribut olcDbDirectory depuis sa branche dans l’annuaire de configuration (ex. dn: olcDatabase={1}bdb,cn=config). En effet, un annuaire OpenLDAP peut gérer...
Les stratégies de sauvegarde
Les stratégies de sauvegarde dépendent en grande partie du volume de données contenu dans l’annuaire, du type des données (les données propres aux utilisateurs ou celles liées au fonctionnement de l’annuaire) et de la disponibilité de celles-ci. En effet, plus il y aura de données, plus le temps de sauvegarde sera long et en fonction du mode de sauvegarde sélectionné, en ligne ou hors ligne, l’annuaire peut se trouver injoignable et donc inexploitable par les utilisateurs. De même qu’il ne faut pas exclure la "fraîcheur" des données, c’est-à-dire être en mesure de sauvegarder au plus près l’état d’un annuaire avant un éventuel crash, afin de ne perdre qu’un minimum de données lors de sa restauration. Pour cela, il ne faudra pas configurer un type de sauvegarde, mais plusieurs.
Ainsi, concernant les fichiers de l’application OpenLDAP, ceux-ci peuvent être restaurés directement à partir des paquetages OpenLDAP et ne nécessitent donc pas de sauvegarde particulière.
Puis, concernant les fichiers de configuration de l’annuaire, ceux-ci peuvent être sauvegardés sans problème, car ils ne nécessitent pas l’arrêt du service d’annuaire. La commande d’archivage...
Méthode de sauvegarde des données de l’annuaire
Cette section va présenter différentes méthodes de sauvegarde utilisables pour les annuaires OpenLDAP. Toutes ces méthodes peuvent être automatisées sur les systèmes d’exploitation Linux par l’intermédiaire du service "crond".
1. Sauvegarde hors-ligne au niveau des répertoires du système de fichiers
Afin de sauvegarder entièrement un annuaire OpenLDAP, il est possible d’envisager de copier les répertoires identifiés précédemment.
Pour ce faire, il faut obligatoirement stopper le service "slapd" pour ensuite être en mesure d’archiver les répertoires de l’annuaire via la commande tar sur un système Linux :
service slapd stop
tar -cvf /backup/openldap/data-openldap.tar /var/lib/ldap
Cette méthode est efficace, mais n’est pas recommandée dans des environnements de production ultra-sollicités. En effet, selon la fréquence à laquelle cette sauvegarde est effectuée, le risque de perdre des informations peut devenir important et rendre l’annuaire incohérent. Par exemple, si cette opération de sauvegarde est réalisée tous les samedis, alors une restauration de l’annuaire effectué le mercredi avec les données de sauvegarde du dernier samedi ferait perdre quatre jours de données (ajout, suppression et modification d’entrées).
2. Sauvegarde hors-ligne au niveau de la base de données
Cette méthode concernera uniquement la sauvegarde des données de l’annuaire.
Elle consiste à utiliser les techniques de sauvegarde des bases de données transactionnelles qui conservent chacune de leurs transactions réussies (c’est-à-dire qui ont été appliquées à l’annuaire) dans des fichiers journaux. Ainsi, la sauvegarde des données de la base à un instant "T"...
Restauration de l’annuaire
Lors d’une opération de restauration, il peut y avoir deux cas de figure :
-
Restauration totale = l’application, la configuration et les données de l’annuaire.
-
Restauration partielle = seulement les données de l’annuaire.
1. Restauration totale
Ce cas de figure peut être envisagé lors d’un crash du serveur ou bien dans le cadre d’une réinstallation complète du système. Il faudra donc envisager tout d’abord de réinstaller l’application OpenLDAP sur le système puis de récupérer une sauvegarde de la configuration de l’annuaire pour enfin restaurer les données de l’annuaire.
Ensuite, il y aura deux méthodes pour effectuer la restauration de l’annuaire :
Première méthode
-
Réinstallation de l’application OpenLDAP
-
Restauration du répertoire /etc/openldap
-
Restauration du répertoire /var/lib/ldap
Deuxième méthode
-
Réinstallation de l’application OpenLDAP
-
Restauration du répertoire /etc/openldap
-
Si possibilité de récupérer le fichier journal du backend :
-
Restauration partielle du répertoire /var/lib/ldap.
-
Application du fichier journal pour récupérer les dernières transactions survenues juste avant le crash.
Les deux méthodes ont des temps de restauration identiques si ce n’est que la seconde méthode permettra de restaurer au mieux l’état de l’annuaire juste avant son crash.
-
Pour la première méthode, il s’agit simplement d’opération de désarchivage des répertoires /var/lib/ldap et /etc/openldap.
-
Pour la seconde méthode, il faudra réaliser les commandes suivantes :
1. |
Restaurer tous les fichiers... |
Exemple de script de sauvegarde
Voici un exemple de script de sauvegarde qui pourrait être appliqué sur le serveur OpenLDAP de démonstration :
#!/bin/bash
#
################################################################
# Author: XXX
# Date:
# Comment: script for backuping the openldap server
# XX/XX/XXXX 1.0 Initial version, XXX
################################################################
VERSION="1.0"
BACKUPDIR=/backup/openldap
DATADIR=var/lib/ldap
SETTINGSDIR=etc/openldap
timenow=`date +"%Y-%m-%d %H:%M:%S"`
backupday=Monday
ROOTSUFFIX="dc=exemple,dc=com"
scriptname=`basename $0`
logout=/var/log/`basename $0 |sed "s/\.bash//"`.log
printmes ()
{
tn=`date +"%Y%m%d %H:%M:%S"`
echo "$scriptname - $1 - $tn - $2"
}
exec 1>>$logout 2>&1
echo
echo "=========================================================="
echo "Run at: $timenow"
echo "=========================================================="
printmes "BACKUP" "START"
if [[ `date +"%A"` == $backupday ]]
then
printmes "BACKUP"...
Migration d’annuaire OpenLDAP
La restauration des données de l’annuaire peut aussi être envisagée dans le cadre d’une migration de version d’un même annuaire ou bien entre différents annuaires. La méthode à utiliser dans ce cas de figure sera l’export/import à l’aide d’un fichier LDIF.
En effet, le fichier LDIF étant un format de donnée interprétable par le protocole LDAPv3, il peut donc être exploité par n’importe quel annuaire LDAP supportant ce protocole (ce qui couvre donc tous les annuaires actuels).
Dans le cas d’une montée de version d’OpenLDAP, voici les étapes à suivre :
1. |
Arrêtez le service LDAP. |
2. |
Sauvegarder les données avec la commande slapcat. |
3. |
Effectuer les mises à niveau de l’application OpenLDAP. |
4. |
Restaurer les données à l’aide de la commande slapadd. |
5. |
Démarrez le service LDAP. |