Verschlüsselung Ihrer MongoDB-Daten
Schützen Sie Ihre MongoDB-Daten, indem Sie sie verschlüsseln. Wir zeigen Ihnen anhand von Beispielen, wie Ihnen das gelingt.
Warum MongoDB-Daten verschlüsseln?
Um Ihre Daten vor potenziellen Hackerangriffen zu schützen, können Sie die Kommunikation zwischen Ihrer MongoDB-Instanz und den Clients oder Anwendungen verschlüsseln. Dies erfolgt durch die Konfiguration von Verbindungen, die Transport Layer Security (TLS) verwenden.
Transport Layer Security (TLS) für sichere Kommunikation
Transport Layer Security (TLS) ist ein kryptografisches Protokoll, das die Daten während ihrer Übertragung über ein Netzwerk verschlüsselt. Es ersetzt das ältere Secure Sockets Layer (SSL) und gewährleistet die Sicherheit Ihrer Daten während der Übertragung, auch als Daten im Transit bekannt.
Verschlüsselung im Ruhezustand
Beachten Sie, dass TLS nur Daten während ihrer Übertragung über ein Netzwerk verschlüsselt. Daten im Ruhezustand, auch als statische Datenbankdaten bezeichnet, bleiben unverschlüsselt. Die kostenlose Community Edition von MongoDB unterstützt keine Verschlüsselung im Ruhezustand. Dies ist jedoch mit der kostenpflichtigen Enterprise Edition möglich.
Sicherheit trotz Verschlüsselung
Selbst wenn sowohl die Verschlüsselung im Ruhezustand als auch die Verschlüsselung im Transit aktiviert sind, kann ein ungenehmigter Benutzer möglicherweise auf Ihre sensiblen Daten zugreifen.
Clientseitige Feldverschlüsselung
Um dieses Risiko zu minimieren, erlauben die offiziellen MongoDB-Treiber seit Version 4.2 die Durchführung der clientseitigen Feldverschlüsselung. Damit können bestimmte Felder innerhalb eines Dokuments verschlüsselt werden, bevor die Daten an die Datenbank gesendet werden. Nur Anwendungen oder Clients mit den richtigen Verschlüsselungsschlüsseln können die Daten in diesen Feldern entschlüsseln und lesen.
Beispiel eines verschlüsselten Dokuments:
{
"name" : "Andreas Müller",
"address" : {
"street" : BinData(6,"eirefi3eid5feiZae9t+oot0noh9oovoch3=iethoh9t"),
"city" : BinData(6,"xiesoh+aiveez=ngee1yei+u0aijah2eeKu7jeeB=oGh"),
"state" : "Bayern",
"zip" : BinData(6,"CoYeve+ziemaehai=io1Iliehoh6rei2+oo5eic0aeCh")
},
"phone" : BinData(6,"quas+eG4chuolau6ahq=i8ahqui0otaek7phe+Miexoo"),
"creditcard" : BinData(6,"rau0Teez=iju4As9Eeyiu+h4coht=ukae8ahFah4aRo=")
}
MongoDB speichert verschlüsselte Werte als Binärdaten, wie durch die Klassenkennzeichnungen BinData angezeigt. Die 6 in jedem Wert repräsentiert den binären Subtyp, in dem die Daten gespeichert sind, und gibt an, welche Art von Binärdaten codiert wurde. Werte, die mit der clientseitigen Feldverschlüsselung von MongoDB verschlüsselt wurden, verwenden immer den Subtyp 6.