Recommandations pour un déploiement sûr
3.1 Configuration de la sécurité réseau
Activer l'authentification et l'autorisation pour sécuriser l'accès aux données
Configurer les règles de pare-feu pour limiter l'accès aux ports MongoDB
Utiliser des connexions TLS/SSL pour chiffrer les communications entre les clients et le serveur
Exemple de commande pour activer TLS/SSL : mongod --tlsMode requireTLS --tlsCertificateKeyFile /etc/ssl/mongodb.pem
Configurer les "bind_ip" pour restreindre l'accès aux interfaces réseau spécifiques
Exemple de configuration dans mongod.conf : net: { bindIp: "192.168.1.2" }
3.2 Chiffrement des données
Chiffrement au repos (Encryption at Rest) avec le moteur de stockage WiredTiger
Activer le chiffrement au repos dans mongod.conf : storage: { wiredTiger: { engineConfig: { encrypt: { keyFile: "/path/to/keyfile" } } } }
Chiffrement des sauvegardes avec mongodump et mongorestore
Exemple de commande pour chiffrer une sauvegarde : mongodump --archive=/path/to/encrypted_backup --gzip --encryptionKeyFile=/path/to/keyfile
Chiffrement des données en transit avec TLS/SSL (mentionné précédemment)
3.3 Auditer et surveiller l'accès
Activer l'audit pour enregistrer les actions des utilisateurs dans le système
* Exemple de configuration dans mongod.conf : auditLog: { destination: "file", format: "BSON", path: "/path/to/auditlog" }
Utiliser des outils de surveillance tels que MongoDB Cloud Manager, Ops Manager ou MongoDB Atlas
Analyser les journaux d'audit pour détecter les accès non autorisés ou les actions suspectes
3.4 Gestion des mises à jour et des correctifs
Surveiller les annonces de sécurité et les notes de version de MongoDB
Planifier et appliquer les mises à jour de sécurité en suivant les meilleures pratiques
Tester les mises à jour dans un environnement de préproduction avant de les déployer en production
3.5 Protection contre les injections et les attaques
Valider et nettoyer les entrées utilisateur pour prévenir les injections de code
Utiliser des bibliothèques et des pilotes MongoDB officiels pour interagir avec la base de données
Limiter les privilèges des utilisateurs et les accès au minimum nécessaire
Surveiller les tentatives d'intrusion et mettre en place des mécanismes de blocage des adresses IP malveillantes