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

Architecturer pour la sécurité :un guide pour MongoDB

La prévalence des violations de données n'est plus surprenante. D'après le rapport du FBI sur la cybercriminalité qui vient d'être publié, les victimes de la cybercriminalité ont cumulé 4,2 milliards de dollars de pertes en 2020, soit 700 millions de dollars de plus que les pertes signalées en 2019. En particulier, les bases de données MongoDB non sécurisées ont fait partie du problème entraînant d'importantes violations de données. . En février 2019, une société de services de vérification des e-mails a vu sa base de données MongoDB violée et a exposé 763 millions d'enregistrements, notamment des adresses e-mail, des numéros de téléphone, des adresses IP et des dates de naissance. La raison en est une instance MongoDB publique sans mot de passe.

Le manque d'authentification, l'absence de restriction des ports sur le pare-feu ou l'échec de la sécurisation des données en transmission peuvent entraîner une violation de données. Dans ce blog, nous expliquerons comment préparer et sécuriser votre base de données MongoDB dans un environnement de production.

Authentification et autorisation

L'authentification et l'autorisation sont deux choses différentes, mais elles sont corrélées. L'authentification signifie que l'utilisateur a accès à la base de données MongoDB tandis que l'autorisation permet à l'utilisateur d'accéder à la ressource à l'intérieur de la base de données.

L'installation par défaut pour l'authentification dans MongoDB est désactivée. MongoDB prend en charge plusieurs authentifications, par exemple :SCRAM, authentification par certificat x.509. Celui par défaut dans MongoDB est SCRAM (Salted Challenge Response Authentication Mechanism), qui vérifie les informations d'identification fournies avec le nom d'utilisateur, le mot de passe et la base de données d'authentification.

Avant d'activer l'authentification, veuillez créer un superutilisateur dans MongoDB avec le rôle userAdminAnyDatabase. Une fois terminé, il nous suffit d'ouvrir le fichier /etc/mongod.conf et de trouver la section sur la sécurité. La valeur par défaut est désactivée, il suffit de l'activer.

security:
    authorization: "disabled"

Redémarrez le service MongoDB pour appliquer les modifications de configuration. Nous pouvons également configurer RBAC (Role Based Access Control) dans la base de données MongoDB pour une meilleure sécurité liée à l'utilisateur. Nous séparons donc l'accès à la base de données en fonction de l'utilisateur et des privilèges.

Segmentation du réseau

La segmentation du réseau est un aspect important lorsque nous concevons une architecture de base de données, elle s'applique à toutes les bases de données, pas seulement à MongoDB. Il est recommandé de séparer le réseau pour la base de données. Nous installons le serveur de base de données dans un réseau privé, où il ne peut pas être atteint depuis Internet.

La communication avec la base de données se fait sur le réseau privé, et lorsque l'utilisateur veut accéder à la base de données, il peut utiliser un VPN ou un jumphost. Outre la segmentation du réseau, la restriction du port joue également un rôle clé, nous ouvrons le port de la base de données spécifique au réseau segmenté pour contrôler le trafic réseau entrant et sortant. Ainsi, nous savons que le trafic entrant provient de l'adresse source de confiance.

Cryptage des données

Un autre domaine sur lequel nous devons nous pencher est le chiffrement des données. Le cryptage des données est une méthode dans laquelle les informations sont codées sous une autre forme lors de la transmission et stockées dans la base de données.

Le chiffrement des données couvre :

  • Données en transit :données en état de transmission 

  • Données au repos :données stockées sur disque. Il existe différents types de chiffrement des données au repos, nous pouvons utiliser le chiffrement au niveau de la base de données ou nous pouvons utiliser le chiffrement dans la couche de stockage.

L'activation de SSL/TLS à partir des clients et du serveur MongoDB et entre les nœuds MongoDB (dans une architecture de jeu de répliques et de cluster fragmenté) sécurisera les données en transit. Le transfert de données ne se fera pas en texte brut.

Il existe divers outils et fonctionnalités de chiffrement pour le chiffrement des données au repos, par exemple ; AWS fournit le chiffrement de disque EBS combiné au KMS (Key Management Service) sur le stockage, tandis que sur la couche de base de données, l'édition Enterprise de MongoDB fournit le chiffrement de la base de données au repos.

Audit de base de données

L'implémentation d'une base de données d'audit pour MongoDB donne une visibilité sur ce qui s'exécute dans la base de données ; par exemple :à partir de quel utilisateur, et quelle commande a été exécutée, et la source de l'adresse IP. Nous pouvons combiner ces journaux et créer des règles basées sur l'accès d'autorisation. Nous pouvons détecter s'il y a un utilisateur involontaire exécutant un script dans MongoDB. Nous pouvons voir la section auditLog.

auditLog:
   destination: syslog

Nous pouvons envoyer le journal d'audit MongoDB dans les fichiers syslog et pousser les journaux dans la gestion des journaux. Vous voulez avoir plus de conseils sur la sécurisation de MongoDB ? Regardez cette vidéo pour mieux comprendre les bonnes pratiques pour sécuriser votre base de données MongoDB

Conclusion

La mise en œuvre des normes de sécurité pour MongoDB est indispensable, en particulier pour un environnement de production. Nous ne pouvons accepter toutes les pertes et violations des données stockées dans la base de données.