Alle in MongoDB 3.x erstellten Benutzer werden mit SCRAM-SHA1 erstellt, wodurch die Abwärtskompatibilität mit Tools unterbrochen wird, die MongoDB-CR erwarten. Es gibt eine lange Liste mit Tools und Treibern, die noch nicht aktualisiert wurden, um SCRAM-SHA1 zu unterstützen, wie z. B. Robomongo und MongoVUE.
In manchen Fällen sind Sie aufgrund von Kompatibilitätsproblemen möglicherweise nicht bereit, Ihren Treiber zu aktualisieren, selbst wenn die neuere Version des Treibers/ORM verfügbar ist.
MongoDB unterstützt zwei Authentifizierungsmethoden:
- MongoDB-CR (Challenge-Response)
Mechanismus zur Authentifizierung von Benutzern mit Passwörtern. Standard-Authentifizierungsmechanismus bis 2.6.x. Weitere Einzelheiten finden Sie in der Dokumentation. - SCRAM-SHA1
Dies ist ein IETF-Standard für Challenge-Response-Mechanismen zur Authentifizierung von Benutzern mit Passwörtern. Dies ist das neuere und sicherere System. Es ist nicht abwärtskompatibel mit MongoDB-CR. Weitere Einzelheiten finden Sie in der Dokumentation.
MongoDB CR ist das Legacy-Authentifizierungssystem. MongoDB 3.X hat das standardmäßige Benutzerauthentifizierungssystem auf SCRAM-SHA1 umgestellt. Alle neu im System erstellten Benutzer sind also SCRAM-SHA1-Benutzer. Da SCRAM-SHA1 nicht abwärtskompatibel ist, unterbricht es die Authentifizierung bei allen Benutzern, die den MONGODB-CR-Mechanismus verwenden.
Möglicherweise möchten Sie jedoch die neue WiredTiger-Speicher-Engine verwenden, die in MongoDB 3.x verfügbar ist. Hier sind die Schritte zum Konfigurieren von MONGODB-CR als Standardauthentifizierungsmechanismus in MongoDB 3.x, vorausgesetzt, Sie führen einen Replikatsatz aus:
- Erstellen Sie einen 3.x-MongoDB-Cluster.
- Stoppen Sie alle Knoten des Replikatsatzes außer dem primären.
- Deaktivieren Sie die Authentifizierung auf dem Primärknoten und starten Sie den Knoten neu. Dazu habe ich die folgenden Einträge in der MongoDB-Konfigurationsdatei auskommentiert und den Server neu gestartet:
#security: # authorization: enabled # keyFile: /var/lib/mongo/rskey #replication: # replSetName: RS-rsname-0
- Verbinden Sie sich mit dem primären und ändern Sie die Schemaversion:
use admin; var schema = db.system.version.findOne({"_id" : "authSchema"}); schema.currentVersion = 3; db.system.version.save(schema)
- Machen Sie die Änderungen an der Datei mongodb.conf in Schritt 3 oben rückgängig und starten Sie MongoDB neu.
- Starten Sie MongoDB auf den anderen Knoten des Replikatsatzes neu und stellen Sie sicher, dass der Replikatsatz fehlerfrei ist. Sobald dies erledigt ist, werden alle auf dem System erstellten Benutzer MongoDB-CR-Benutzer sein. Sie können dies überprüfen, indem Sie den folgenden Befehl ausführen:
db.system.users.find().pretty();
Beachten Sie jedoch, dass dies nur eine vorübergehende Problemumgehung sein sollte. Die sicherere längerfristige Lösung besteht darin, Ihren MongoDB-Server für die Verwendung des SCRAM-SHA1-Modells zu aktualisieren. Sobald Sie für das Upgrade bereit sind, führen Sie das folgende Skript aus, um die Schemaversion Ihrer Benutzer auf SCRAM-SHA1 zu aktualisieren:
db.getSiblingDB("admin").runCommand({authSchemaUpgrade});