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

Meilleures pratiques pour la sécurité de MongoDB

Lorsqu'il s'agit de gérer des systèmes de bases de données, un aspect crucial est la sécurité des bases de données. L'incapacité à établir une bonne base de sécurité pour tout système de base de données peut entraîner une violation de données par laquelle un intrus tiers y aura un accès non autorisé. Par conséquent, des événements comme celui-ci peuvent entraîner une atteinte à la réputation de la marque, des amendes et des pénalités pour non-conformité, une atteinte à la propriété intellectuelle, voire entraîner la fermeture de l'entreprise.

MongoDB - la base de données NoSQL la plus populaire - fournit une gamme d'outils, de contrôles et de mesures formulés pour fournir une base pour les trois piliers de la sécurité de l'information - confidentialité, intégrité et disponibilité. La sécurité des données est le plus souvent compromise au niveau de la confidentialité en raison d'une plus grande convivialité et d'un meilleur accès.

Quels types de données devez-vous protéger

Comme les autres bases de données, MongoDB implique deux types de données :

  1. Données au repos :il s'agit des données stockées sur le disque du système de fichiers.
  2. Données en transit :il s'agit de données se déplaçant via un réseau, par exemple, entre la base de données et une application.

Afin de protéger vos données au sein de toute base de données, vos mesures de sécurité doivent répondre :

  • Données dans les fichiers de base de données.
  • Applications associées à la base de données.
  • L'infrastructure informatique et réseau utilisée pour accéder à la base de données.
  • Le serveur de base de données physique et le matériel sous-jacent.

Liste de contrôle de sécurité MongoDB

Avant de configurer votre déploiement de production MongoDB, il existe une norme minimale de sécurité à prendre en compte pour garantir la sécurité de votre déploiement. Consultez la liste de contrôle de sécurité MongoDB suivante pour

  1. Spécifiez le mécanisme d'authentification en activant le contrôle d'accès . Avant d'autoriser l'accès à la base de données, il est essentiel de vérifier l'identité de l'utilisateur. MongoDB prend en charge deux mécanismes dans ce cas :le premier est Salted Challenge Response Authentication Mechanism (SCRAM) qui est le mécanisme d'authentification par défaut dans MongoDB. Il vérifie les informations d'identification fournies (nom d'utilisateur et mot de passe) par rapport à la base de données d'authentification, et l'authentification par certificat X.509 est utilisée à la fois pour l'authentification client et l'authentification interne des membres de l'ensemble de répliques et des clusters fragmentés.

  2. Établir un contrôle d'accès basé sur les rôles . Chaque application ou personne ayant accès à la base de données doit avoir une identité unique créée par l'administrateur de l'utilisateur. Définissez des rôles avec des droits d'accès précis et attribuez-les aux utilisateurs qui doivent effectuer les opérations.

  3. La communication entre mongod, mongos, les applications et MongoDB doit être chiffrée . Le cryptage est réalisé via la configuration TLS/SSL.

  4. Protection des données . Si vous utilisez le moteur de stockage WiredTiger pour les données au repos, vous pouvez chiffrer les données à l'aide du chiffrement au repos. Si vous utilisez un autre moteur de stockage, cryptez les données à l'aide du système de fichiers, du cryptage physique ou du périphérique, et ajoutez les autorisations du système de fichiers. De plus, vous pouvez crypter les champs dans les documents avec le cryptage au niveau du champ côté client avant de transmettre les données du serveur.

  5. Réseau d'exploitation sécurisé . MongoDB doit s'exécuter sur un environnement réseau de confiance, de sorte que seuls les clients de confiance puissent avoir accès à l'interface réseau et aux ports. Vous pouvez y parvenir en désactivant l'accès direct à la racine SSH et en configurant la configuration avec des groupes de sécurité pour le trafic entrant et sortant vers les instances MongoDB.

  6. Activités du système d'audit . Le suivi des activités d'accès des utilisateurs à la base de données est très important. L'audit permet aux administrateurs d'exercer des contrôles appropriés et de permettre une analyse médico-légale appropriée. Certaines installations d'audit comme MongoDB Enterprise fournissent des filtres pour des événements spécifiques tels que les événements d'authentification afin de réduire les données qui doivent être analysées.

  7. Activer les options de configuration sécurisée lors de l'exécution de MongoDB . Il est conseillé de limiter l'utilisation du code JavaScript pris en charge par MongoDB, tel que mapReduce, $where et $function. Vous pouvez désactiver complètement ces options à l'aide de l'option --noscripting. Validez les champs de saisie à l'aide de modules tels que mongoose. De plus, vous pouvez utiliser net.writeObjectCheck pour vous assurer que tous les documents stockés par l'instance mongod sont des BSON valides.

  8. Exécutez MongoDB avec un utilisateur dédié . Il n'est pas utile d'exécuter MongoDB sur un système d'exploitation accessible à plusieurs utilisateurs. Pour plus de sécurité, MongoDB doit être exécuté par un compte d'utilisateur système dédié qui dispose d'autorisations pour accéder aux données, mais pas d'autorisations inutiles susceptibles de compromettre l'intégrité des données.

Mauvaises pratiques de sécurité MongoDB à éviter

Récemment, il y a eu une augmentation des incidents de piratage de bases de données, en particulier MongoDB. Ce n'est pas parce que MongoDB ne respecte pas les normes pour résoudre les problèmes de sécurité, mais plutôt parce que les développeurs n'ont pas suivi les meilleures pratiques de sécurité.

MongoDB est un SGBD open source, ce qui signifie que certains développeurs peuvent mieux connaître les tenants et les aboutissants que d'autres. Cela ne signifie pas toujours que votre base de données est exposée à un risque d'intrusion externe, sauf si vous tombez dans l'une des erreurs suivantes :

  1. Utilisation des ports par défaut . Il n'y a rien de mal à utiliser les ports par défaut (27017 et 27018), mais vous pouvez parfois oublier de définir les groupes de sécurité responsables de la gestion du trafic dans votre système. Les pirates essaieront toujours d'accéder à la base de données avec les ports par défaut avant d'essayer autre chose. Vous pouvez exécuter MongoDB sur un port différent avec l'option de port, c'est-à-dire $mongo –port 23456. Cependant, la méthode recommandée consiste à modifier la configuration dans le fichier /etc/mongod.conf en modifiant la ligne ci-dessous avec votre numéro de port préféré :

    net:
    	port:27017


    MongoDB, par défaut, s'exécute sans authentification, ce qui a souvent été un problème pour les nouveaux déploiements qui passent en production. Si l'authentification n'est pas activée, tout le monde peut accéder facilement à la base de données. Créez toujours un utilisateur avec des autorisations d'accès basées sur les rôles pour interagir avec la base de données MongoDB.

  2. Stockage incorrect des informations d'identification de l'utilisateur . Certains développeurs codent en dur les informations d'identification du nom d'utilisateur et du mot de passe dans le projet, et lorsqu'ils les rendent publics, n'importe qui peut y avoir accès, ce qui rend la base de données vulnérable.

  3. Échec de la limitation de l'accès à la base de données aux périphériques réseau connus . Dans ce cas, il faut toujours limiter l'accès à la base de données aux seules applications et équilibreurs de charge connus via une liste blanche. Cela limite la disponibilité de la base de données aux réseaux inconnus qui pourraient constituer une menace pour la sécurité.

  4. Éviter l'utilisation de SSL . L'authentification SSL est très cruciale pour garantir que seules les connexions de confiance accèdent à la base de données.

  5. Échec de l'utilisation de LDAP pour les rotations de mot de passe . LDAP relie les utilisateurs à un annuaire d'entreprise de sorte que lorsque leur rôle change ou qu'ils quittent l'entreprise, les modifications s'appliquent automatiquement au groupe de bases de données. Cela garantit que leur accès aux données sera limité au rôle auquel ils ont été réaffectés ou complètement limité s'ils quittent l'entreprise.

Renforcement de l'infrastructure réseau

Souvent, les menaces de sécurité commencent au niveau de l'exposition du réseau car c'est la partie la plus facilement accessible à la plupart des pirates. En plus de vous assurer que seuls les hôtes de confiance ont accès à MongoDB, vous pouvez améliorer la sécurité grâce au renforcement du réseau. Le renforcement du réseau implique deux procédures concernant MongoDB :

  1. Pare-feu . Les pare-feu sont utilisés pour limiter le trafic entrant provenant d'hôtes non approuvés qui exposeraient autrement la base de données MongoDB à une intrusion externe. Pour les systèmes d'exploitation Windows, l'interface de ligne de commande netsh permet d'accéder au pare-feu Windows. Sur les systèmes Linux, l'interface iptables permet d'accéder au pare-feu netfilter sous-jacent. Le pare-feu filtrera les hôtes non fiables et garantira que seul le trafic provenant de sources fiables peut atteindre mongod &mongos en plus de créer une connexion avec les sorties fiables.

  2. Réseaux privés virtuels (VPN) . Les VPN permettent à deux réseaux de se relier sur un réseau de confiance crypté et à accès limité. Pour ce faire, ils prévoient la validation des certificats et un choix de protocoles de cryptage pouvant nécessiter un niveau d'authentification rigoureux et l'identification de tous les clients. Les VPN fournissent un tunnel sécurisé ; par conséquent, les connexions créées à l'instance MongoDB à l'aide de VPN peuvent empêcher la falsification et les attaques de type "man-in-the-middle".

Conclusion

Comme pour toutes les bases de données open source, la sécurité doit être une priorité absolue pour votre infrastructure MongoDB. Le déploiement de votre base de données MongoDB avec les paramètres par défaut est une voie claire vers un désastre de sécurité. Par conséquent, il est crucial de bien comprendre le fonctionnement de la sécurité au sein de MongoDB et de suivre toutes les meilleures pratiques pour garantir une sécurité maximale. Plus important encore, l'audit des activités des utilisateurs, telles que l'authentification, permet d'identifier les failles et de planifier l'avenir avant qu'une catastrophe ne se produise.

Des outils comme ClusterControl vous aident à éliminer les approximations de la sécurité de la base de données et à garantir que vos déploiements MongoDB suivront toujours le modèle de sécurité respectif. Avec ClusterControl, vous pouvez facilement configurer vos bases de données, les contrôles d'accès et le chiffrement des données au repos et en transit. Si vous ne l'avez pas déjà fait, téléchargez ClusterControl dès aujourd'hui et démarrez votre essai gratuit de 30 jours pour découvrir comment ClusterControl peut vous aider à gérer et à améliorer la sécurité de votre base de données MongoDB.