MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Conseils pour gérer MongoDB à distance

Travailler à distance en raison de la pandémie de Covid-19 signifie une augmentation de l'importance des infrastructures isolées ; plus précisément ceux qui ne sont accessibles que via un réseau interne, mais de manière à ce que les personnes autorisées du monde extérieur puissent accéder au système à tout moment et n'importe où.

Dans cet article, nous partagerons quelques étapes de base que vous devez implémenter avec MongoDB pour garantir un accès sécurisé lors de l'administration de la base de données.

Sécuriser MongoDB

Avant d'accéder à distance à la base de données MongoDB, vous devez effectuer un "durcissement" de l'environnement. Définissez les éléments suivants du côté de l'infrastructure :

Activer l'authentification MongoDB 

L'activation de cette fonctionnalité est obligatoire, que nous souhaitions accéder à la base de données MongoDB depuis le réseau interne ou depuis un réseau externe. Avant d'activer l'autorisation, vous devez d'abord créer un utilisateur administrateur dans MongoDB. Vous pouvez exécuter la commande ci-dessous pour créer un utilisateur administrateur sur votre serveur mongoDB :

$ mongo

> use admin

> db.createUser(

      {

          user: "admin",

          pwd: "youdontknowmyp4ssw0rd",

          roles: [ "root" ]

      }

  );

La commande ci-dessus créera un nouvel utilisateur appelé admin avec des privilèges root. Vous pouvez activer la fonctionnalité MongoDB Auth en ouvrant le fichier /etc/mongod.conf puis en ajoutant la ligne suivante :

  security:

   authorization: 'enabled'

N'oubliez pas de redémarrer votre service mongoDB pour appliquer les modifications. La commande ci-dessus limitera l'accès à la base de données, uniquement celui qui dispose d'informations d'identification d'accès et qui est éligible pour se connecter.

Configurer les rôles et privilèges

Pour éviter l'utilisation abusive de l'accès à MongoDB, nous pouvons implémenter un accès basé sur les rôles en créant plusieurs rôles et leurs privilèges.

Assurez-vous d'avoir une liste des utilisateurs qui ont besoin d'accéder à la base de données et de comprendre les besoins et les responsabilités de chacun. Créez des rôles et attribuez les privilèges à ces rôles créés. Après cela, vous pouvez attribuer à votre utilisateur un rôle en fonction des responsabilités.

Cette approche nous aide à minimiser l'abus d'autorité et à identifier immédiatement le rôle et l'utilisateur lorsqu'un événement indésirable se produit.

Configurer une connexion SSL/TLS

MongoDB prend en charge les connexions SSL/TLS pour sécuriser les données en transit. Pour implémenter cela, vous devez générer votre propre clé SSL, vous pouvez la générer en utilisant openssl. Pour activer le support SSL/TLS, vous pouvez éditer le fichier /etc/mongod.conf et ajouter le paramètre suivant :

  net:

      tls:

         mode: requireTLS

         certificateKeyFile: /etc/mongo/ssl/mongodb.pem

Après avoir ajouté ces paramètres, vous devez redémarrer le service MongoDB. Si vous avez une architecture de jeu de répliques MongoDB, vous devez les appliquer sur chaque nœud. SSL est également nécessaire lorsque le client accède à MongoDB, que ce soit du côté de l'application ou directement du client.

Pour une utilisation en production, vous devez utiliser des certificats valides générés et signés par une seule autorité de certification. Vous ou votre organisation pouvez générer et gérer des certificats en tant qu'autorité de certification indépendante ou utiliser des certificats générés par des fournisseurs TLS/SSL tiers. Empêcher l'utilisation d'un certificat auto-signé, sauf s'il s'agit d'un réseau de confiance.

Restreindre le port de la base de données

Vous devez vous assurer que seul le port MongoDB est ouvert sur le serveur pare-feu ou l'appliance pare-feu, assurez-vous qu'aucun autre port n'est ouvert.

Sécuriser la connexion MongoDB

La connexion à distance via Internet public présente le risque de transmission de données des utilisateurs locaux vers le serveur de base de données et vice versa. Les attaquants peuvent interrompre l'interconnexion, qui dans ce cas est connue sous le nom d'attaque MITM (Min-in-The-Middle). La sécurisation de la connexion est très nécessaire lorsque nous gérons / administrons la base de données à distance, certaines choses que nous pouvons appliquer pour protéger notre accès à la base de données sont les suivantes :

Accès au réseau privé

VPN (Virtual Private Network) est l'une des choses fondamentales lorsque nous voulons accéder à notre infrastructure de l'extérieur en toute sécurité. Le VPN est un réseau privé qui utilise les réseaux publics pour accéder aux sites distants. La configuration VPN nécessite du matériel qui doit être préparé du côté du réseau privé, à côté de cela, le client a également besoin d'un logiciel VPN qui prend en charge l'accès au réseau privé.

En plus d'utiliser le VPN, un autre moyen d'accéder au serveur MongoDB consiste à transférer le port de la base de données via SSH, ou mieux connu sous le nom de SSH Tunneling.

Utiliser SSL/TLS du client vers le serveur de base de données

En plus d'implémenter un accès sécurisé à l'aide de VPN ou de SSH Tunneling, nous pouvons utiliser SSL/TLS qui était précédemment configuré du côté de MongoDB. Vous avez juste besoin de la clé SSL que vous avez et essayez de vous connecter à la base de données à l'aide de la clé SSL.

Activer la surveillance de la base de données

Il est essentiel de permettre au service de surveillance de comprendre l'état actuel des bases de données. Le serveur de surveillance peut être installé sous le domaine public sur lequel SSL / TLS est activé, de sorte que l'accès automatique au navigateur peut utiliser HTTPs.

Conclusion

C'est vraiment amusant de travailler à domicile, vous pouvez interagir avec vos enfants et en même temps surveiller votre base de données. Vous devez suivre les directives ci-dessus pour vous assurer de ne pas être attaqué ou de ne pas vous faire voler de données lorsque vous accédez à distance à votre base de données.