sql >> Database >  >> NoSQL >> MongoDB

Versleuteling gebruiken om MongoDB-gegevens te beschermen

Met veel soorten gegevens die in de database zijn opgeslagen, kunnen we soms te maken hebben met vertrouwelijke gegevens, waaronder creditcardgegevens, financiële gegevens en persoonlijke informatie. Die PII-gegevens (Persoonlijke Identificeerbare Informatie) zijn onderworpen aan regelgeving, bijvoorbeeld:PCI DSS, HIPAA of AVG die we nodig hebben om de vertrouwelijkheid, integriteit en beschikbaarheid te beschermen en te waarborgen.

Gegevensversleuteling maakt deel uit van het ontwerpen van MongoDB voor beveiligingsimplementatie in productieomgevingen. Het doel van gegevensversleuteling is het toevoegen van meer waarborgen voor de beveiliging van de gegevens, met name tegen bedreigingen van binnenuit. We vergrendelen de service en poorten van de database, houden een toegangscontrolelijst bij van wie toegang heeft tot en welke bewerkingen in de database uitvoeren, en maken codering mogelijk om te beschermen tegen snuiven tijdens netwerktransmissie of wanneer de gegevens worden opgeslagen. In deze blog bespreken we hoe je encryptie in MongoDB kunt gebruiken.

Gegevensversleuteling in transit

Gegevensversleuteling tijdens het transport zorgt ervoor dat MongoDB-gegevens worden beveiligd tussen de clients (d.w.z. de toepassingsserver) en de databaseserver en tussen de databaseservers in de MongoDB ReplicaSet- of ShardedCluster-architectuur. MongoDB gebruikt SSL/TLS-certificaten, ofwel gegenereerd als zelfondertekende certificaten ofwel certificaten die zijn uitgegeven door de certificeringsinstantie.

De beste manier is om het certificaat van een certificeringsinstantie te gebruiken, omdat MongoDB-stuurprogramma's de host kunnen controleren bij de certificeringsinstantie, wat betekent dat de serveridentiteit wordt gevalideerd om man-in te voorkomen - de middelste aanval. U kunt het zelfondertekende certificaat nog steeds gebruiken in een vertrouwd netwerk.

MongoDB SSL/TLS-codering moet de TLS/SSL-coderingen gebruiken met een minimum van 128-bits sleutel. Vanaf MongoDB versie 4.2 en hoger is er een nieuwe parameter met de naam net.tls. Het biedt dezelfde functionaliteit als net.ssl. De configuratie in het mongod.conf-bestand zoals hieronder getoond:

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

Als we Clientcertificaatvalidatie willen toevoegen, hoeven we alleen de parameter CAFile als volgt toe te voegen:

      

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

Met de bovenstaande configuratie vereisen MongoDB SSL/TLS-verbindingen geldige certificaten van de clients en moet de client een SSL/TLS-verbinding specificeren en de certificaatsleutelbestanden presenteren.

 In de bovenstaande configuratie gebruiken we net.tls dat bestaat op MongoDB 4.2. Voor de bovenstaande versie kunnen we de net.ssl-configuratie gebruiken zoals hieronder weergegeven:

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

En het toevoegen van Clientcertificaatvalidatie is vergelijkbaar met de net.tls-configuratie. Voeg gewoon de parameter CAFile toe zoals hieronder getoond:

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

Gegevenscodering in rust

Over gegevensversleuteling in rust gesproken:er zijn verschillende methoden voor MongoDB-gegevensversleuteling: 

  • Database Storage Engine-versleuteling

MongoDB biedt native codering op de WiredTiger-opslagengine. De gegevensrestversleuteling vereist twee sleutelbeveiliging voor de gegevens, namelijk de hoofdsleutel die wordt gebruikt voor het versleutelen van de gegevens en de hoofdsleutel die wordt gebruikt om de databasesleutels te versleutelen. De codering maakt gebruik van AES256-CBC Advanced Encryption Standard. Het maakt gebruik van asymmetrische sleutels, dezelfde sleutel voor het versleutelen en ontsleutelen van de gegevens. Het is alleen beschikbaar in Enterprise Edition vanaf versie 3.2 en hoger.

Percona Server voor MongoDB heeft data-encryptie in rust die deel uitmaakt van de open source-server, geïntroduceerd vanaf versie 3.6. De huidige release bevat niet het Key Management Interoperability Protocol (KMIP) of Amazon KMS. We kunnen een lokaal sleutelbestand of een sleutelbeheerserver van derden gebruiken, zoals Hashicorp Vault.

De parameter in Percona Server voor MongoDB met betrekking tot encryptie is encryptieCipherMode die we kunnen configureren door een van de volgende coderingsmodi te kiezen:

  • AES256-CBC

  • AES256-GCM

De standaardcodering is AES256-CBC als u een van de bovenstaande niet expliciet hebt toegepast. We kunnen data-at-rest-codering inschakelen op de nieuwe Percona Server voor MongoDB-installatie, maar deze ondersteunt geen bestaande MongoDB-services.

  • Schijf-/opslagcodering

De opslagversleuteling is de versleuteling van de opslagmedia. We kunnen op Linux gebaseerde schijfversleuteling zoals LUKS gebruiken om het gegevensvolume van de schijf te versleutelen, of als we een cloudomgeving gebruiken, is er mogelijk een versleutelingsoptie. In AWS is het bijvoorbeeld mogelijk om zowel versleutelde blokopslag als S3-opslag te hebben.

  • API-gebaseerde versleuteling

De op API gebaseerde codering maakt gebruik van coderingssoftware van derden of de toepassing biedt een algoritme om de gegevens te coderen voordat deze worden opgeslagen in de MongoDB-database. Het hele proces wordt afgehandeld door de applicatielaag.


  1. mongodb controleer of punt in polygoon is

  2. Over MongoDB

  3. Opgeslagen JavaScript-functies gebruiken in de aggregatiepijplijn, MapReduce of runCommand

  4. MongoDB als Windows-service en replicaSet instellen