Sauvegarde PFI

Procédures d’administration de la DevBox-Santé PFI

Documentation de Sauvegarde et Restauration d’une Base MongoDB Déployée avec Docker

1. Objectif

Cette procédure décrit les étapes nécessaires pour effectuer des sauvegardes et des restaurations de la base de données MongoDB dans un environnement Docker. Les mécanismes de sauvegarde doivent permettre une certaine flexibilité dans le choix des outils, sans imposer l’utilisation d’un produit spécifique.

2. Prérequis

  • Accès en ligne de commande : L’accès SSH ou local à la machine hôte Docker pour exécuter les commandes.

3. Acteurs Impliqués

Les acteurs impliqués dans le processus de sauvegarde et leurs rôles sont détaillés ci-dessous selon le modèle RACI :

Rôle Acteurs Responsabilité
R - Responsable Administrateurs systèmes, Chef de projet sécurité Mise en œuvre des sauvegardes, gestion des procédures
A - Autorité Responsable de la sécurité Supervision des sauvegardes et des tests de récupération
C - Consulté Support informatique Assistance dans la mise en œuvre des sauvegardes et la gestion des pannes
I - Informé Utilisateurs, Responsables de l’infrastructure Tenir informés des sauvegardes et des politiques de sécurité

Les administrateurs systèmes sont responsables de la mise en œuvre et de l’exécution des sauvegardes. Le responsable de la sécurité assure la surveillance et l’audit des processus. Le support informatique est consulté pour tout problème technique lié à l’infrastructure.

4. Fréquence de Sauvegarde

Les sauvegardes doivent être effectuées de manière régulière et selon la fréquence définie ci-dessous :

  • Sauvegardes complètes : Une fois par semaine pour assurer la capture complète de l’état de la base de données.
  • Sauvegardes incrémentielles : Quotidiennes pour capturer les modifications de la base de données.

La fréquence peut être ajustée en fonction des besoins spécifiques de l’entreprise et de la criticité des données.

5. Champ d’Application (Périmètre de la Sauvegarde)

Les éléments suivants sont inclus dans le périmètre de la sauvegarde :

  • Base de données MongoDB : Toutes les collections, documents et métadonnées associés.
  • Configurations Docker : Sauvegarde de la configuration du conteneur, y compris les volumes associés et les paramètres de l’application.

Les composants non inclus peuvent être des systèmes externes, des applications tierces non gérées ou des données spécifiques non stockées dans MongoDB.

6. Lieu de Stockage des Sauvegardes

Les sauvegardes doivent être stockées dans des emplacements sécurisés. Les options suivantes sont envisagées :

  • Stockage local : Sauvegardes effectuées sur des disques durs ou des serveurs dédiés au sein de l’infrastructure de l’entreprise.
  • Cloud sécurisé : Les sauvegardes peuvent également être stockées sur des solutions cloud comme OVH Cloud, garantissant ainsi leur sécurité et leur accessibilité.
  • Serveur distant : Option de stockage sur un serveur distant pour une meilleure résilience et sécurité des données.

Les sauvegardes sont stockées dans des emplacements différents de l’infrastructure principale pour éviter toute perte de données en cas de sinistre.

7. Règles de Sécurité

Des mesures de sécurité sont mises en place pour protéger les sauvegardes contre l’accès non autorisé et la corruption :

  • Chiffrement des données : Les sauvegardes sont systématiquement chiffrées à l’aide de l’algorithme AES-256 pour assurer la confidentialité des données.
  • Accès restreint : L’accès aux sauvegardes est limité aux utilisateurs et groupes ayant un rôle spécifique, avec une authentification forte et des permissions bien définies.
  • Contrôle d’accès physique : Si les sauvegardes sont stockées localement, les serveurs de stockage doivent être physiquement sécurisés.

Ces mesures garantissent la protection des sauvegardes contre les accès non autorisés et assurent leur sécurité pendant le transport et le stockage.

8. Tests de Récupération

Les tests de récupération sont cruciaux pour garantir la fiabilité des sauvegardes en cas de sinistre. Les tests suivants doivent être effectués régulièrement :

  • Périmètre des tests : Les tests de récupération doivent inclure les sauvegardes complètes et incrémentielles pour valider l’intégrité des données restaurées.
  • Fréquence des tests : Les tests de récupération doivent être effectués au moins une fois par trimestre pour s’assurer de la capacité à restaurer les données rapidement.

Les tests doivent être documentés, avec les résultats, les problèmes rencontrés, et les actions correctives prises pour améliorer le processus.

9. Sauvegarde de la Base MongoDB

Pour réaliser une sauvegarde de la base de données MongoDB, nous utilisons la commande docker exec pour exécuter des commandes à l’intérieur du conteneur MongoDB. Voici les étapes pour sauvegarder les données :

9.1. Identifier le conteneur MongoDB

Tout d’abord, il faut identifier le nom ou l’ID du conteneur MongoDB en cours d’exécution. Pour cela, utilisez la commande suivante :

docker ps

Cela vous donnera la liste des conteneurs en cours d’exécution avec leurs identifiants. Repérez le conteneur associé à MongoDB.

9.2 Exécuter la commande de sauvegarde

Ensuite, pour sauvegarder les données MongoDB, nous utilisons la commandemongodumpà l’intérieur du conteneur:

docker exec -it <container_name> mongodump --db=pfi --archive=/data/db/backup/mongodump_<nom_base>.archive --gzip

9.3 Vérification de la sauvegarde

Une fois la commande exécutée, vous pouvez vérifier que les fichiers ont bien été créés dans le répertoire de sauvegarde en accédant au chemin spécifié.

ls /path/to/backup/directory

9.4 Chiffrement de la sauvegarde

Si vous souhaitez sauvegarder vos données vers un volume externe, vous pouvez utiliser le montage de volume Docker. Voici un exemple de commande pour sauvegarder dans un volume externe :

openssl enc -aes-256-cbc -salt -in /data/db/backup/mongodump_<nom_base>.archive -out /data/db/backup/mongodump_<nom_base>.archive.enc -k "password"

9.5 Sauvegarde vers un volume externe

Si vous souhaitez sauvegarder vos données vers un volume externe, vous pouvez utiliser le montage de volume Docker. Voici un exemple de commande pour sauvegarder dans un volume externe :

docker cp <mongo_container>:/data/db/backup /path/to/external/folder

9.6 Planification des sauvegardes complètes

Les sauvegardes doivent être effectuées régulièrement pour garantir la protection des données. Un cron job peut être configuré sur l’hôte Docker pour automatiser cette tâche.

Exemple de planification hebdomadaire le dimanche à minuit :

0 0 * * 0 docker exec <nom_du_conteneur_mongo> mongodump --db=pfi --archive=/tmp/backup/mongodump_$(date +\%F).archive --gzip

9.7 Planification des sauvegardes incrémentielles

Les sauvegardes doivent être effectuées régulièrement pour garantir la protection des données. Un cron job peut être configuré sur l’hôte Docker pour automatiser cette tâche.

Exemple de planification quotidienne d’une sauvegarde à 1h du matin :

0 1 * * * docker exec <nom_du_conteneur_mongo> mongodump --db=pfi --archive=/tmp/backup/mongodump_incremental_backup_$(date +\%F).archive --gzip --oplog

10. Mécanismes de Restauration

La restauration des données depuis une sauvegarde mongodumpest réalisée à l’aide de la commande mongorestore.

10.1 Restauration d’une base MongoDB

Pour restaurer la base MongoDB à partir de la sauvegarde, utilisez la commande suivante :

Déchiffrement de la sauvegarde complète (idem pour les différentielles):

openssl enc -d -aes-256-cbc -in /data/db/backup/mongodump_<nom_base>.archive.enc -out /data/db/backup/mongodump_<nom_base>.archive -k "password"

Chargement de la dernière sauvegarde complète

docker exec <nom_du_conteneur_mongo> mongorestore --db=pfi --archive=/data/db/backup/mongodump_<date>.archive --gzip --drop

Chargement des sauvegardes différentielles dans l’ordre des dates

docker exec -i <nom_du_conteneur> mongorestore --db=pfi --archive=/data/db/backup/mongodump_incremental_backup_<date>.archive --gzip --oplogReplay

10.2 Test de la Restauration

Après chaque restauration, vérifiez que les données sont correctement restaurées en vous connectant à MongoDB et en effectuant quelques requêtes sur les collections de la base de données.

docker exec -it <container_name> mongo

une fois connecté, vous pouvez lister les collections:

show dbs
use pfi
show collections

11. Sécurisation des Sauvegardes

Les sauvegardes doivent être sécurisées pour protéger les données sensibles :

  • Chiffrement des sauvegardes : Utilisez des outils comme GPG ou OpenSSL pour chiffrer les fichiers de sauvegarde.
  • Stockage sécurisé : Assurez-vous que les fichiers de sauvegarde sont stockés dans un emplacement sécurisé, tel qu’un volume Docker monté avec des permissions strictes ou un stockage cloud sécurisé.
  • Accès contrôlé : Restreindre l’accès aux sauvegardes uniquement aux utilisateurs ou rôles autorisés.

12. Rétention des Sauvegardes

Les politiques de rétention des sauvegardes doivent être définies pour éviter l’encombrement des espaces de stockage tout en garantissant la possibilité de restaurer les données pendant une période suffisante.

Exemple de politique de rétention :

  • Sauvegardes quotidiennes : Conservez les sauvegardes quotidiennes pendant 7 jours.
  • Sauvegardes hebdomadaires : Conservez les sauvegardes hebdomadaires pendant 1 mois.
  • Sauvegardes mensuelles : Conservez les sauvegardes mensuelles pendant 1 an.