MongoDB fournit un certain nombre de constructions pour améliorer la sécurité de vos données. La sécurité de vos données dans MongoDB est primordiale - il est donc important de tirer parti de ces constructions pour réduire votre surface. Voici 10 conseils que vous pouvez utiliser pour améliorer la sécurité de vos serveurs MongoDB sur site et dans le cloud.
-
Activer l'authentification
Même si vous avez déployé vos serveurs MongoDB dans un réseau de confiance, il est recommandé d'activer l'authentification. Il vous fournit une "défense en profondeur" si votre réseau est compromis. Modifiez votre fichier de configuration MongoDB pour activer l'authentification :
auth = true
-
N'exposez pas votre base de données de production à Internet
Restreindre l'accès physique à votre base de données est un aspect important de la sécurité. Si ce n'est pas nécessaire, n'exposez pas votre base de données de production à Internet. En cas de compromission, si un attaquant ne peut pas se connecter physiquement à votre serveur MongoDB, vos données sont d'autant plus sécurisées. Si vous êtes sur AWS, vous pouvez placer vos bases de données dans un sous-réseau de cloud privé virtuel (VPC). Lisez l'article de blog Déploiement de MongoDB dans un VPC pour plus d'informations.
-
Utiliser des pare-feu
Utilisez des pare-feu pour limiter les autres entités autorisées à se connecter à votre serveur MongoDB. La meilleure pratique consiste à autoriser uniquement vos serveurs d'applications à accéder à la base de données. Si vous êtes hébergé sur AWS, utilisez des « groupes de sécurité » pour restreindre l'accès. Si vous êtes hébergé sur un fournisseur qui ne prend pas en charge les constructions de pare-feu, vous pouvez facilement le configurer vous-même en utilisant « iptables ». Reportez-vous à la documentation MongoDB pour configurer iptables pour votre scénario.
-
Utilisez des fichiers de clé pour configurer le jeu de répliques
Spécifiez un fichier de clé partagé pour activer la communication entre vos instances MongoDB dans un jeu de répliques. Pour activer cela, ajoutez le paramètre keyfile au fichier de configuration comme indiqué ci-dessous. Le contenu du fichier doit être le même sur toutes les machines :
keyFile = /srv/mongodb/keyfile
-
Désactiver l'interface d'état HTTP
MongoDB, par défaut, fournit une interface http s'exécutant sur le port 28017 qui fournit la page d'état "d'accueil". Cette interface n'est pas recommandée pour une utilisation en production et il est préférable de la désactiver. Utilisez le paramètre de configuration "nohttpinterface" pour désactiver l'interface http :
nohttpinterface = true
-
Désactiver l'interface REST
L'interface MongoDB REST n'est pas recommandée pour la production. Il ne prend en charge aucune authentification et est désactivé par défaut. Si vous l'avez activé à l'aide de l'option de configuration "reste", vous devez le désactiver pour les systèmes de production.
rest = false
-
Configurer bind_ip
Si votre système dispose de plusieurs interfaces réseau, vous pouvez utiliser l'option "bind_ip" pour limiter votre serveur MongoDB afin qu'il n'écoute que sur les interfaces pertinentes. Par défaut, MongoDB se liera à toutes les interfaces :
bind_ip = 10.10.0.25,10.10.0.26
-
Activer SSL
Si vous n'utilisez pas SSL, vos données voyagent entre votre client Mongo et votre serveur Mongo sans être chiffrées et sont susceptibles d'être écoutées, falsifiées et attaquées par "l'homme du milieu". Ceci est particulièrement important si vous vous connectez à votre serveur MongoDB via des réseaux non sécurisés comme Internet.
-
Autorisation basée sur les rôles
MongoDB prend en charge l'authentification basée sur les rôles pour vous donner un contrôle précis sur les actions pouvant être effectuées par chaque utilisateur. Utilisez des constructions basées sur les rôles pour restreindre l'accès au lieu de faire de tous vos utilisateurs des administrateurs. Reportez-vous à la documentation des rôles pour plus de détails.
-
MongoDB d'entreprise et Kerberos
Enterprise MongoDB s'intègre à Kerberos pour l'authentification. Reportez-vous à la documentation de MongoDB pour plus de détails. Les systèmes de nom d'utilisateur/mot de passe ne sont pas sécurisés par nature. Utilisez si possible une authentification basée sur le trottoir.
Chez ScaleGrid, nous nous efforçons de prendre en charge les configurations de sécurité conformes aux meilleures pratiques par défaut pour tous nos déploiements. Nous vous permettons d'utiliser SSL et de ne pas exposer votre base de données à Internet. Si vous avez des questions, veuillez nous envoyer un e-mail à [email protected].