Manager, Developer Education
Une version antérieure de ce tutoriel a été écrite par Brennan Bearnes.
MongoDB, également connu sous le nom de Mongo, est une base de données de documents open-source utilisée couramment dans des applications web modernes. Par défaut, il n’autorise que les connexions provenant du même serveur que celui où il est installée. Si vous souhaitez gérer MongoDB à distance ou le connecter à un serveur d’application distinct, vous devrez apporter quelques changements à la configuration par défaut.
Dans ce tutoriel, vous allez configurer une installation MongoDB pour permettre un accès sécurisé à partir d’un ordinateur distant de confiance. Pour ce faire, vous allez mettre à jour vos règles de pare-feu pour permettre à la machine distante d’accéder au port sur lequel MongoDB écoute des connexions, puis vous mettrez à jour son fichier de configuration pour modifier son paramètre de liaison IP. Ensuite, comme dernière étape, vous testerez si votre machine distante est capable de se connecter avec succès à votre base de données.
Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :
Enfin, bien que ce ne soit pas nécessaire pour terminer ce tutoriel, nous vous recommandons fortement de sécuriser votre installation MongoDB en créant un compte utilisateur administratif pour la base de données et en activant l’authentification. Pour ce faire, suivez notre tutoriel Comment sécuriser MongoDB sur Ubuntu 20.04.
En supposant que vous ayez suivi le tutoriel de configuration initiale du serveur et activé un pare-feu UFW sur votre serveur, votre installation MongoDB sera inaccessible depuis Internet. Si vous avez l’intention d’utiliser MongoDB uniquement en local avec des applications fonctionnant sur le même serveur, il s’agit de la configuration recommandée et sécurisée. Cependant, si vous souhaitez pouvoir vous connecter à votre serveur MongoDB à distance, vous devez autoriser les connexions entrantes sur le port où la base de données est à l’écoute en ajoutant une nouvelle règle UFW.
Commencez par vérifier quel port votre installation MongoDB écoute avec la commande lsof
. Cette commande renvoie généralement une liste contenant tous les fichiers ouverts d’un système, mais lorsqu’elle est combinée à l’option -i
, elle ne répertorie que les fichiers ou les flux de données liés au réseau.
La commande suivante redirigera la sortie produite par lsof -i
vers une commande grep
qui recherche une chaîne nommée mongo
:
- sudo lsof -i | grep mongo
Cet exemple de sortie montre que MongoDB écoute les connexions sur son port par défaut, 27017
:
Outputmongod 82221 mongodb 11u IPv4 913411 0t0 TCP localhost:27017 (LISTEN)
Dans la plupart des cas, MongoDB ne doit être accessible qu’à partir de certains lieux de confiance (un autre serveur hébergeant une application, par exemple). Une façon de configurer cette méthode consiste à exécuter la commande suivante sur votre serveur MongoDB, qui ouvre un accès sur le port par défaut de MongoDB tout en n’autorisant explicitement que l’adresse IP de l’autre serveur de confiance.
Exécutez la commande suivante, en vous assurant de remplacer trusted_server_ip
par l’adresse IP de la machine distante de confiance que vous utiliserez pour accéder à votre instance MongoDB :
Remarque : si la sortie de la commande précédente a indiqué que votre installation de MongoDB écoute sur un port non par défaut, utilisez ce numéro de port à la place de 27017
dans cette commande.
- sudo ufw allow from trusted_server_ip to any port 27017
À l’avenir, si jamais vous souhaitez accéder à MongoDB à partir d’une autre machine, exécutez à nouveau cette commande avec l’adresse IP de la nouvelle machine à la place de trusted_server_ip
.
Vous pouvez vérifier le changement dans les paramètres de pare-feu avec ufw
:
- sudo ufw status
La sortie montrera que le trafic vers le port 27017
du serveur distant est maintenant autorisé :
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
27017 ALLOW trusted_server_ip
OpenSSH (v6) ALLOW Anywhere (v6)
Vous pouvez trouver des paramètres de pare-feu plus avancés pour restreindre l’accès aux services dans les Essentiels d’UFW : Règles et commandes communes du pare-feu.
Ensuite, vous allez lier MongoDB à l’adresse IP publique du serveur afin de pouvoir y accéder à partir de votre machine distante.
À ce stade, même si le port est ouvert, MongoDB est actuellement lié à 127.0.0.1
, l’interface du réseau de rebouclage local. Cela signifie que MongoDB n’est en mesure d’accepter que les connexions originaires du serveur où il est installé.
Pour permettre des connexions distantes, vous devez modifier le fichier de configuration de MongoDB — /etc/mongod.conf
— pour lier également MongoDB à l’adresse IP routable publique de votre serveur. De cette façon, votre installation MongoDB sera en mesure d’écouter les connexions faites à votre serveur MongoDB à partir de machines distantes.
Ouvrez le fichier de configuration de MongoDB dans votre éditeur de texte préféré. L’exemple suivant utilise nano
:
- sudo nano /etc/mongod.conf
Trouvez la section network interfaces
, puis la valeur bindIp
:
. . .
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
. . .
Ajoutez une virgule à cette ligne suivie de l’adresse IP publique de votre serveur MongoDB :
. . .
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,mongodb_server_ip
. . .
Enregistrez et fermez le fichier. Si vous avez utilisé nano
, faites-le en appuyant sur CTRL+X
, Y
, puis ENTER
.
Ensuite, redémarrez MongoDB pour mettre ce changement en vigueur :
- sudo systemctl restart mongod
Suite à cela, votre installation MongoDB sera en mesure d’accepter des connexions à distance à partir de toutes les machines que vous avez autorisées à accéder au port 27017
. En dernière étape, vous pouvez vérifier si le serveur distant de confiance que vous avez autorisé à travers le pare-feu à l’Étape 1 peut atteindre l’instance de MongoDB exécutée sur votre serveur.
Maintenant que vous avez configuré votre installation MongoDB pour écouter des connexions qui proviennent de son adresse IP publique routable et que vous avez accordé à votre machine distante l’accès au port par défaut de Mongo via le pare-feu de votre serveur, vous pouvez tester si la machine distante est capable de se connecter.
Remarque : comme mentionné dans la section Conditions préalables, ce tutoriel suppose que votre machine distante est un autre serveur fonctionnant sous Ubuntu 20.04. La procédure d’activation des connexions à distance décrite aux Étapes 1 et 2 devrait fonctionner indépendamment du système d’exploitation de votre machine distante, mais les méthodes de test décrites dans cette étape ne fonctionnent pas de manière universelle pour tous les systèmes d’exploitation.
Une façon de tester si votre serveur distant de confiance est capable de se connecter à l’instance MongoDB, consiste à utiliser la commande nc
. nc
, abréviation de netcat, est un utilitaire utilisé pour établir des connexions réseau avec TCP ou UDP. Il est utile pour effectuer des tests dans des cas comme celui-ci car il vous permet de spécifier à la fois une adresse IP et un numéro de port.
Tout d’abord, connectez-vous à votre serveur de confiance en utilisant SSH :
- ssh sammy@trusted_server_ip
Ensuite, exécutez la commande nc
suivante, qui inclut l’option -z
. Cela limite nc
à ne chercher qu’un démon d’écoute sur le serveur cible sans lui envoyer de données. Rappelez-vous du tutoriel d’installation préalable qui explique que MongoDB fonctionne en tant que démon service, ce qui rend cette option utile pour tester la connectivité. Elle inclut également l’option v
qui augmente la verbosité de la commande, ce qui fait que netcat renvoie des données qu’il ne renverrait pas autrement.
Exécutez la commande nc
suivante à partir de votre serveur distant de confiance, en vous assurant de remplacer mongodb_server_ip
par l’adresse IP du serveur sur lequel vous avez installé MongoDB :
- nc -zv mongodb_server_ip 27017
Si le serveur de confiance peut accéder au démon MongoDB, sa sortie indiquera que la connexion a réussi :
OutputConnection to mongodb_server_ip 27017 port [tcp/*] succeeded!
En supposant que vous disposez d’une version compatible du shell mongo
installé sur votre serveur distant, vous pouvez à ce stade vous connecter directement à l’instance de MongoDB installée sur le serveur hôte.
Une façon de se connecter est d’utiliser une chaîne de connexion URI, comme celle-ci :
- mongo "mongodb://mongo_server_ip:27017"
Remarque : si vous avez suivi le tutoriel recommandé Comment sécuriser MongoDB sur Ubuntu 20.04, vous aurez fermé l’accès à votre base de données aux utilisateurs non authentifiés. Dans ce cas, vous devrez utiliser une URI spécifiant un nom d’utilisateur valide, comme celle-ci :
- mongo "mongodb://username@mongo_server_ip:27017"
Le shell vous invitera automatiquement à entrer le mot de passe de l’utilisateur.
Avec cela, vous avez confirmé que votre serveur MongoDB pouvait accepter les connexions du serveur de confiance.
Vous pouvez maintenant accéder à votre installation MongoDB à partir d’un serveur distant. À ce stade, vous pouvez gérer à distance votre base de données Mongo du serveur de confiance. Vous pouvez également configurer une application pour qu’elle s’exécute sur le serveur de confiance et utiliser la base de données à distance.
Si vous n’avez pas configuré d’utilisateur administratif et activé l’authentification, toute personne ayant accès à votre serveur distant peut également accéder à votre installation MongoDB. Si vous ne l’avez pas encore fait, nous vous recommandons fortement de suivre notre guide Comment sécuriser MongoDB sur Ubuntu 20.04 pour ajouter un utilisateur administratif et verrouiller les choses plus avant.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!