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

Comment utiliser le chiffrement pour protéger les données MongoDB

Avec de nombreux types de données stockées dans la base de données, nous pouvons parfois traiter des données confidentielles, qui peuvent inclure des données de carte de crédit, des dossiers financiers, des informations personnelles. Ces données PII (Personal Identifiable Information) sont soumises à des réglementations telles que :PCI DSS, HIPAA ou GDPR dont nous avons besoin pour protéger et garantir la confidentialité, l'intégrité et la disponibilité.

Le chiffrement des données fait partie de l'architecture MongoDB pour la mise en œuvre de la sécurité dans les environnements de production. L'objectif du cryptage des données est d'ajouter plus de garanties pour la sécurité des données, en particulier contre les menaces internes. Nous verrouillons le service et les ports de la base de données, maintenons une liste de contrôle d'accès indiquant qui peut accéder et effectuer quelles opérations dans la base de données, et activons le chiffrement pour protéger contre le reniflement pendant la transmission sur le réseau ou lorsque les données sont stockées. Dans ce blog, nous verrons comment utiliser le chiffrement dans MongoDB.

Chiffrement des données en transit

Le chiffrement des données en transit garantit que les données MongoDB sont sécurisées entre les clients (c'est-à-dire le serveur d'applications) et le serveur de base de données et entre les serveurs de base de données dans l'architecture MongoDB ReplicaSet ou ShardedCluster. MongoDB utilise des certificats SSL/TLS, soit générés sous forme de certificats auto-signés, soit de certificats émis par l'autorité de certification.

Le meilleur moyen est d'utiliser le certificat d'une autorité de certification, car cela permettra aux pilotes MongoDB de vérifier l'hôte auprès de l'autorité de certification, ce qui signifie qu'il y aura une validation de l'identité du serveur pour éviter l'intrusion. -l'attaque du milieu. Vous pouvez toujours utiliser le certificat auto-signé dans un réseau de confiance.

Le chiffrement MongoDB SSL/TLS doit utiliser les chiffrements TLS/SSL avec une clé minimale de 128 bits. À partir de la version 4.2 de MongoDB et des versions ultérieures, il existe un nouveau paramètre appelé net.tls. Il offre les mêmes fonctionnalités que net.ssl. La configuration dans le fichier mongod.conf comme indiqué ci-dessous :

net:
   tls:
      mode: requireTLS
      certificateKeyFile: /etc/ssl/mongodb.pem

Alors que si nous voulons ajouter la validation du certificat client, nous avons juste besoin d'ajouter le paramètre CAFile comme suit :

      

net:
         tls:
            mode: requireTLS
            certificateKeyFile: /etc/ssl/mongodb.pem
            CAFile: /etc/ssl/caClientCert.pem

Avec la configuration ci-dessus, les connexions MongoDB SSL/TLS nécessitent des certificats valides de la part des clients et le client doit spécifier une connexion SSL/TLS et présenter les fichiers de clé de certificat.

 Dans la configuration ci-dessus, nous utilisons net.tls qui existe sur MongoDB 4.2. Pour la version ci-dessus, nous pouvons utiliser la configuration net.ssl ​​comme indiqué ci-dessous :

net:
   ssl:
      mode: requireSSL
      PEMKeyFile: /etc/ssl/mongodb.pem

Et l'ajout de la validation du certificat client est similaire à la configuration net.tls. Ajoutez simplement le paramètre CAFile comme indiqué ci-dessous :

net:
   ssl:
      mode: requireSSL
      PEMKeyFile: /etc/ssl/mongodb.pem
      CAFile: /etc/ssl/caClientCert.pem

Chiffrement des données au repos

En parlant de chiffrement des données au repos, il existe plusieurs méthodes de chiffrement des données MongoDB : 

  • Chiffrement du moteur de stockage de base de données

MongoDB fournit un chiffrement natif sur le moteur de stockage WiredTiger. Le chiffrement des données restantes nécessite deux clés de protection pour les données, qui sont la clé principale utilisée pour chiffrer les données et la clé principale utilisée pour chiffrer les clés de la base de données. Le cryptage utilise la norme de cryptage avancé AES256-CBC. Il utilise des clés asymétriques qui sont la même clé pour chiffrer et déchiffrer les données. Il est disponible uniquement dans Enterprise Edition à partir de la version 3.2 et supérieure.

Percona Server pour MongoDB dispose d'un chiffrement des données au repos qui fait partie du serveur open source, introduit à partir de la version 3.6. La version actuelle n'inclut pas le protocole KMIP (Key Management Interoperability Protocol) ou Amazon KMS. Nous pouvons utiliser un fichier de clés local ou un serveur de gestion de clés tiers tel que Hashicorp Vault.

Le paramètre dans Percona Server pour MongoDB lié au chiffrement est le chiffrementCipherMode que nous pouvons configurer en choisissant l'un des modes de chiffrement suivants :

  • AES256-CBC

  • AES256-GCM

Le chiffrement par défaut est AES256-CBC si vous n'avez pas explicitement appliqué l'un des éléments ci-dessus. Nous pouvons activer le chiffrement des données au repos sur le nouveau serveur Percona pour l'installation de MongoDB, mais il ne prend pas en charge les services MongoDB existants.

  • Chiffrement de disque/stockage

Le chiffrement de stockage est le chiffrement du support de stockage. Nous pouvons utiliser le chiffrement de disque basé sur Linux tel que LUKS pour chiffrer le volume de données du disque, ou si nous utilisons un environnement cloud, il peut y avoir une option de chiffrement. Par exemple, dans AWS, il est possible d'avoir un stockage de bloc chiffré ainsi qu'un stockage S3.

  • Cryptage basé sur l'API

Le chiffrement basé sur l'API utilise un logiciel de chiffrement tiers ou l'application fournit un algorithme pour chiffrer les données avant qu'elles ne soient stockées dans la base de données MongoDB. L'ensemble du processus est géré par la couche application.