2016-04-06 1 views
2

Ich habe die Kommunikation in mongoDB erfolgreich verschlüsselt, aber wenn ich versuche, die Datenverschlüsselung zu aktivieren, erhalte ich Fehler. Ich verwende die Enterprise Edition von mongoDB mit Version 3.2.4. Ich erhalte die folgende Meldung in der Konsole:Fehler beim Aktivieren der Datenverschlüsselung mit dem lokalen Schlüssel MONGODB

ERROR: child process failed, exited with error number 14 

Aber wenn ich mir die Protokolle aussehen sehe ich detaillierte Fehler wie folgt:

Unable to retrieve key .system, error: there are existing data files, but no valid keystore could be located. 
Fatal Assertion 28561 

nach dem Snippet meiner Konfigurationsdatei ist:

# enable authentication 
security: 
    authorization: enabled 
    enableEncryption: true 
    encryptionKeyFile: /home/test/mongodb-keyfile 

Es funktioniert gut ohne die enableEncryption und encryptionKeyFile Parameter. Kann mir jemand erklären, was ich hier vermisse? Vielen Dank!

+3

Ich habe keine Ahnung von MongoDB-Verschlüsselung, aber ich würde denken, dass Sie die Verschlüsselung einer vorhandenen Datenbank nicht aktivieren können.Vielleicht können Sie eine leere Datenbank mit aktivierter Verschlüsselung erstellen und dann alle Daten in die verschlüsselte Datenbank kopieren. –

+1

@ Gurkha Nun, es würde helfen, wenn Sie es verstanden haben. Wenn Sie eine Datenverschlüsselung wünschen, müssen Sie mit einem leeren Datenverzeichnis beginnen. Sichern Sie also zuerst die Daten, löschen Sie das aktuelle Datenverzeichnis und legen Sie neue Optionen fest. Dann können Sie Daten wiederherstellen und fortfahren. Der gleiche Vorgang gilt für [Speicher-Engines wechseln] (https://docs.mongodb.org/manual/tutorial/change-standalone-wiredtiger/). Es ist einfach nicht möglich, diese Optionen zu wechseln und die Datenbank nur für Sie zu tun. –

+0

Werfen Sie einen Blick - https://docs.mongodb.org/manual/tutorial/configure-encryption/#local-key-management ... Außerdem müssen Sie sicherstellen, dass Ihre Datenbank auf der WiredTiger-Speicher-Engine läuft. –

Antwort

2

MongoDB auf den verschlüsselten Speicher-Engine unterstützt zwei Schlüssel-Management-Optionen:

  • Key Manager: Integration mit Fremdschlüsselmanagement-Appliance über das Key Management Interoperability Protocol (KMIP).
  • Local Key: Verwendung der lokalen Schlüsselverwaltung über eine Schlüsseldatei.

erwähnenswert, dass ein Schlüssel-Manager Richtlinien regulatorischen Schlüsselverwaltung erfüllt und Key-Management über das lokale empfohlen.

Wenn Sie die Key Manager-Option verwenden, lesen Sie bitte KMIP Master Key Rotation.

Da Sie die Option Lokaler Schlüssel verwenden, können Sie Replica Set deploymentrotate the replica set member. Dies würde re-sync Daten von der unverschlüsselten zu der verschlüsselten mongod.

Alternativ, wenn Sie nur eine eigenständige mongod, man konnte:

  1. Back Up Ihre Datenbankdateien.
  2. Stop mongod Prozess.
  3. Löschen oder verschieben Sie vorhandene Datenbankdateien in dbpath. Üben Sie besondere Vorsicht! - Wenn Sie löschen, vergewissern Sie sich, dass Sie eine backup data haben.
  4. Neustart mongod mit --enableEncryption und --encryptionKeyFile.
  5. Wiederherstellen von Sicherungsdateien auf dem neugestarteten und verschlüsselten mongod.

Als Beispiel, könnten Sie mongodump verwenden, um die Daten zu entleeren, und verwenden Sie mongorestore die Dump-Dateien wiederherzustellen.

Schließlich ist zu beachten, dass MongoDB Enterprise Edition ein kommerziell unterstütztes Produkt ist. Ich würde vorschlagen, einen Supportfall zu eröffnen, wenn Sie ein kommerzielles Support-Abonnement haben.

+0

ich danke Ihnen für Ihre Schritt für Schritt Anleitung. Ich entleerte das Datenverzeichnis, neu generiert den lokalen Schlüssel und startete die MongoDB-Instanz. Jetzt funktioniert es wie ein Charme – Gurkha

+0

Ich erhalte diesen Fehler: Fehler beim Parsen der Befehlszeile: unerkannte Option '--enableEncryption' – null1941

+3

@ null1941 Die obige Antwort bezieht sich auf MongoDB Enterprise (v3 .2 +) Feature, das '--enableEncryption' unterstützt. –