MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So verwenden Sie die Verschlüsselung zum Schutz von MongoDB-Daten

Bei vielen Arten von Daten, die in der Datenbank gespeichert sind, haben wir es manchmal mit vertraulichen Daten zu tun, darunter Kreditkartendaten, Finanzunterlagen und persönliche Informationen. Diese PII (Personal Identifiable Information)-Daten unterliegen Vorschriften, z. B.:PCI DSS, HIPAA oder GDPR, die wir schützen und Vertraulichkeit, Integrität und Verfügbarkeit gewährleisten müssen.

Datenverschlüsselung ist Teil der Architektur von MongoDB für die Sicherheitsimplementierung in Produktionsumgebungen. Das Ziel der Datenverschlüsselung besteht darin, weitere Schutzmaßnahmen für die Sicherheit der Daten hinzuzufügen, insbesondere vor Insider-Bedrohungen. Wir sperren den Dienst und die Ports der Datenbank, führen eine Zugriffskontrollliste darüber, wer auf welche Vorgänge in der Datenbank zugreifen und diese ausführen kann, und aktivieren die Verschlüsselung zum Schutz vor Ausspähen während der Netzwerkübertragung oder wenn die Daten gespeichert werden. In diesem Blog werden wir diskutieren, wie die Verschlüsselung in MongoDB verwendet wird.

Datenverschlüsselung bei der Übertragung

Datenverschlüsselung während der Übertragung stellt sicher, dass MongoDB-Daten zwischen den Clients (d. h. dem Anwendungsserver) und dem Datenbankserver sowie zwischen den Datenbankservern in der MongoDB ReplicaSet- oder ShardedCluster-Architektur gesichert sind. MongoDB verwendet SSL/TLS-Zertifikate, die entweder als selbstsignierte Zertifikate oder von der Zertifizierungsstelle ausgestellte Zertifikate generiert werden.

Am besten verwenden Sie das Zertifikat einer Zertifizierungsstelle, da MongoDB-Treiber dadurch den Host bei der Zertifizierungsstelle überprüfen können, was bedeutet, dass die Serveridentität validiert wird, um Man-In zu vermeiden -der mittlere Angriff. Sie können das selbstsignierte Zertifikat weiterhin in einem vertrauenswürdigen Netzwerk verwenden.

Die MongoDB-SSL/TLS-Verschlüsselung muss die TLS/SSL-Verschlüsselung mit mindestens 128-Bit-Schlüsseln verwenden. Ab MongoDB-Version 4.2 und höher gibt es einen neuen Parameter namens net.tls. Es bietet die gleiche Funktionalität wie net.ssl. Die Konfiguration in der Datei mongod.conf wie unten gezeigt:

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

Wenn wir dagegen eine Client-Zertifikat-Validierung hinzufügen möchten, müssen wir nur den Parameter CAFile wie folgt hinzufügen:

      

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

Mit der obigen Konfiguration erfordern MongoDB-SSL/TLS-Verbindungen gültige Zertifikate von den Clients, und der Client muss die SSL/TLS-Verbindung angeben und die Zertifikatschlüsseldateien präsentieren.

 In der obigen Konfiguration verwenden wir net.tls, das in MongoDB 4.2 vorhanden ist. Für die obige Version können wir die net.ssl-Konfiguration wie unten gezeigt verwenden:

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

Und das Hinzufügen von Client Certificate Validation ist ähnlich wie bei der net.tls-Konfiguration. Fügen Sie einfach den Parameter CAFile wie unten gezeigt hinzu:

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

Datenverschlüsselung im Ruhezustand

Apropos Datenverschlüsselung im Ruhezustand:Es gibt mehrere Methoden der MongoDB-Datenverschlüsselung: 

  • Verschlüsselung der Datenbankspeicher-Engine

MongoDB bietet native Verschlüsselung auf der WiredTiger-Speicher-Engine. Die Datenrestverschlüsselung erfordert zwei Schlüsselschutz für die Daten, nämlich den Hauptschlüssel, der zum Verschlüsseln der Daten verwendet wird, und den Hauptschlüssel, der zum Verschlüsseln der Datenbankschlüssel verwendet wird. Die Verschlüsselung verwendet den AES256-CBC Advanced Encryption Standard. Es verwendet asymmetrische Schlüssel, bei denen es sich um denselben Schlüssel zum Verschlüsseln und Entschlüsseln der Daten handelt. Es ist nur in der Enterprise Edition ab Version 3.2 und höher verfügbar.

Percona Server für MongoDB verfügt über Datenverschlüsselung im Ruhezustand, die Teil des Open-Source-Servers ist, eingeführt ab Version 3.6. Die aktuelle Version enthält weder das Key Management Interoperability Protocol (KMIP) noch Amazon KMS. Wir können eine lokale Schlüsseldatei oder einen Schlüsselverwaltungsserver eines Drittanbieters wie Hashicorp Vault verwenden.

Der Parameter in Percona Server für MongoDB, der sich auf die Verschlüsselung bezieht, ist encodingCipherMode, den wir konfigurieren können, indem wir einen der folgenden Verschlüsselungsmodi auswählen:

  • AES256-CBC

  • AES256-GCM

Die Standardverschlüsselung ist AES256-CBC, wenn Sie nicht ausdrücklich eine der oben genannten Methoden angewendet haben. Wir können die Data-at-Rest-Verschlüsselung auf dem neuen Percona-Server für die MongoDB-Installation aktivieren, aber vorhandene MongoDB-Dienste werden nicht unterstützt.

  • Festplatten-/Speicherverschlüsselung

Die Speicherverschlüsselung ist die Verschlüsselung der Speichermedien. Wir können Linux-basierte Festplattenverschlüsselung wie LUKS verwenden, um das Datenvolumen der Festplatte zu verschlüsseln, oder wenn wir eine Cloud-Umgebung verwenden, gibt es möglicherweise eine Verschlüsselungsoption. Beispielsweise ist es in AWS möglich, sowohl verschlüsselten Blockspeicher als auch S3-Speicher zu haben.

  • API-basierte Verschlüsselung

Die API-basierte Verschlüsselung verwendet Verschlüsselungssoftware von Drittanbietern oder die Anwendung stellt einen Algorithmus bereit, um die Daten zu verschlüsseln, bevor sie in der MongoDB-Datenbank gespeichert werden. Der gesamte Prozess wird von der Anwendungsschicht abgewickelt.