Les pirates deviennent de plus en plus sophistiqués et savent comment exploiter les vulnérabilités. Si vous avez des données sensibles dans votre base de données MongoDB, il est crucial de prendre la sécurité au sérieux. Mais comment ? Ne vous inquiétez pas ! Ce tutoriel vous couvre !
Dans ce tutoriel, vous apprendrez à protéger vos bases de données MongoDB et à repousser les pirates en mettant en place des mesures de sécurité.
Lisez la suite et commencez à prendre le contrôle de la sécurité de votre MongoDB !
Prérequis
- Ce tutoriel sera une démonstration pratique. Pour suivre, assurez-vous d’avoir ce qui suit :
- MongoDB installé sur votre machine Linux.
- A non-root user with
sudo
privileges.
Création d’un utilisateur administratif dédié
MongoDB n’a pas de système d’authentification intégré. Par défaut, toute personne ayant accès à la base de données dispose de privilèges administratifs complets, ce qui est trop dangereux ! Comment sécuriser votre base de données ? Vous allez créer un utilisateur avec des privilèges administratifs et verrouiller les bases de données sur cet utilisateur administratif.
Ce paramétrage vous permet de fournir un seul point d’accès utilisateur avec des privilèges administratifs tout en restreignant les actions que chaque utilisateur peut effectuer dans la base de données. Par exemple, les développeurs devraient avoir un accès en lecture seule aux bases de données, tandis que les administrateurs peuvent créer et modifier des données.
1. Ouvrez votre terminal et exécutez la commande mongo
ci-dessous sans aucun argument. Cette commande vous permet de vous connecter à votre shell MongoDB en tant qu’utilisateur administrateur par défaut.
Cet utilisateur administrateur est puissant car il a un accès complet en lecture/écriture à toutes les bases de données sur le serveur, et il est préférable de ne pas utiliser cet utilisateur pour le travail quotidien.
Vous recevrez un avertissement indiquant que le contrôle d’accès n’est pas activé…, comme indiqué ci-dessous.
Cet avertissement indique que toute personne ayant accès au serveur MongoDB peut effectuer les actions qu’elle souhaite sur les bases de données. Ces actions comprennent, entre autres, la suppression, la suppression, la mise à jour des bases de données.
Cet avertissement apparaît car vous n’avez pas encore activé le contrôle d’accès. Ne vous inquiétez pas pour le moment. Vous apprendrez comment activer le contrôle d’accès dans la section suivante.

2. Ensuite, exécutez la commande show dbs
pour afficher toutes les bases de données sur le serveur, y compris les bases de données admin que l’utilisateur normal ne devrait pas voir.

3. Exécutez la commande use admin
ci-dessous pour passer à la base de données d’administration puisque votre objectif est de créer un utilisateur administratif dédié. Cette commande modifie le contexte de votre base de données actuelle pour utiliser la base de données d’administration, comme indiqué ci-dessous.
MongoDB utilise la base de données d’administration pour stocker les règles de contrôle d’accès et fournir une authentification intégrée, des noms d’utilisateur et des mots de passe pour les utilisateurs et leurs rôles. Vous ne pouvez pas supprimer ou renommer la base de données d’administration car elle est essentielle au fonctionnement de la base de données.

4. Maintenant, copiez et collez le code ci-dessous dans l’interpréteur de commandes mongo et appuyez sur Entrée. Ce code crée un utilisateur appelé AdminATA
, avec un mot de passe de LDWbPf6Fy9Ezs3Mv
, mais vous pouvez utiliser des informations d’identification différentes si vous préférez.
Ce nouvel utilisateur a un accès lecture/écriture (readWriteAnyDatabase
) à toutes les bases de données et un accès administrateur à toutes les collections. Mais cet utilisateur n’a pas de privilèges pour supprimer ou supprimer des bases de données et ne peut pas supprimer ou modifier les privilèges d’autres utilisateurs.
Après avoir exécuté la commande et si vous obtenez une erreur, vérifiez à nouveau votre code et réessayez.
5. Fournissez un mot de passe sécurisé lorsqu’on vous le demande, comme indiqué ci-dessous, et appuyez sur Entrée.

Ci-dessous, vous pouvez voir un message Utilisateur ajouté avec succès. Cette sortie confirme que vous avez créé avec succès un utilisateur avec des privilèges administratifs et que vous les avez restreints aux privilèges minimum requis.
À ce stade, vous disposez déjà d’un utilisateur administratif appelé AdminATA qui peut effectuer toutes les opérations nécessaires sur la base de données sans donner accès à tout le monde.

6. Enfin, exécutez la commande exit pour quitter l’interpréteur de commandes mongo.

Ajout de sécurité en activant l’authentification
Maintenant que vous avez un utilisateur administratif, vous ajouterez une autre couche de sécurité en activant l’authentification. Cela donne accès à la base de données uniquement aux utilisateurs disposant des bonnes informations d’identification.
L’authentification fait référence au processus de validation d’une connexion, généralement en fournissant un nom d’utilisateur et un mot de passe ou en utilisant un jeton d’authentification. L’authentification garantit que vous êtes bien la personne que vous prétendez être et non un imposteur tentant d’accéder à des ressources.
1. Activez l’authentification en éditant le fichier de configuration de MongoDB avec les éléments suivants et enregistrez les modifications :
- Ouvrez le fichier /etc/mongod.conf dans votre éditeur de texte préféré. Le fichier /etc/mongod.conf contient la configuration de votre cluster MongoDB.
- Recherchez et décommentez la directive #security en supprimant le symbole # devant la directive, comme indiqué ci-dessous. Cette directive indique à MongoDB de rechercher le paramètre de sécurité dans le fichier de configuration.
- Ajoutez une nouvelle ligne sous la directive security qui indique authorization: enabled. Notez que la ligne authorization: enabled est indentée (a deux espaces au début), comme indiqué ci-dessous.

2. Ensuite, exécutez la commande systemctl
suivante pour redémarrer le serveur MongoDB et appliquer les modifications.
3. Enfin, exécutez la commande ci-dessous pour afficher l’état de votre service MongoDB.
Ci-dessous, vous pouvez voir une ligne qui dit Active : actif (en cours d’exécution) en texte vert, ce qui indique que votre serveur MongoDB fonctionne et est prêt à accepter des connexions.

Vérification du fonctionnement de l’authentification
Vous venez d’activer l’authentification, mais comment savoir si elle fonctionne ? Vous allez vous connecter en tant qu’utilisateur administratif pour tester et vous assurer que votre authentification fonctionne en consultant les bases de données.
1. Exécutez les commandes suivantes pour accéder à l’invite de commande mongo
comme vous l’avez fait dans la section « Création d’un utilisateur administratif dédié » (étape un).
Comme vous pouvez le voir ci-dessous, vous ne recevez plus le Avertissement : le contrôle d’accès n’est pas activé… concernant l’activation de l’authentification. Au lieu de cela, vous obtiendrez un message qui vous indique la version de votre serveur MongoDB et du shell MongoDB.

2. Ensuite, réexécutez la commande show dbs
pour vérifier si vous pouvez toujours accéder à la base de données.
La commande devrait vous montrer toutes les bases de données, y compris la base de données admin. Mais comme vous pouvez le voir ci-dessous, rien n’apparaît. Pourquoi ? La visualisation de la liste des bases de données est un privilège réservé aux utilisateurs administratifs uniquement.
Vous n’avez pas authentifié votre shell mongo pour utiliser le rôle Admin, donc vous n’êtes pas autorisé à voir la liste des bases de données.

Avec l’authentification activée, la connexion échouera si quelqu’un essaie d’accéder à la base de données en utilisant une chaîne de connexion qui ne contient pas les identifiants corrects.
Vérifier les chaînes de connexion est une partie essentielle de la sécurité de MongoDB, et vous devriez mettre en œuvre l’authentification à tous les niveaux de l’application. Toutes les connexions à MongoDB doivent utiliser une chaîne d’authentification composée d’informations d’identification. Ces informations d’identification incluent le nom d’utilisateur et le mot de passe corrects.
3. Exécutez la commande exit
pour quitter le shell MongoDB.
4. Maintenant, exécutez la commande ci-dessous pour vous connecter au shell MongoDB avec le nom d’utilisateur (-u
) et le mot de passe (-p
) de votre utilisateur administratif nouvellement créé. Remplacez AdminATA
par le nom d’utilisateur que vous avez créé dans la section « Création d’un utilisateur administratif dédié » (étape quatre).
Le paramètre --authenticationDatabase
indique au shell MongoDB de s’authentifier contre la base de données admin
.
5. Fournissez votre mot de passe pour votre utilisateur administratif lorsqu’on vous le demande.


6. Enfin, relancez la commande show dbs
pour voir si vous pouvez afficher toutes les bases de données.
Cette fois-ci, comme vous le voyez ci-dessous, la liste des bases de données s’affiche puisque vous êtes un utilisateur administrateur.

Conclusion
Dans ce tutoriel, vous avez appris comment vous connecter pour créer un utilisateur administratif et activer l’authentification. Vous avez appris à prendre le contrôle de la sécurité de votre MongoDB et à imposer des restrictions sur qui peut accéder aux bases de données sur votre serveur.
À ce stade, c’est à vous de décider qui peut accéder à quoi. Alors, quelle est la prochaine étape pour vous? Peut-être apprendre comment utiliser de manière sécurisée un conteneur MongoDB?