Всички потребители, създадени в MongoDB 3.x, са създадени със SCRAM-SHA1, което нарушава обратната съвместимост с инструменти, които очакват MongoDB-CR. Има списък с инструменти и драйвери, които все още не са актуализирани, за да поддържат SCRAM-SHA1, като Robomongo и MongoVUE.
В някои случаи, дори ако е налична по-новата версия на драйвера/ORM, може да не сте готови да надстроите драйвера си поради някои проблеми със съвместимостта.
MongoDB поддържа два метода за удостоверяване:
- MongoDB-CR (отговор на предизвикателство)
Механизъм за удостоверяване на потребители с пароли. Механизъм за удостоверяване по подразбиране до 2.6.x. Вижте документацията за повече подробности. - SCRAM-SHA1
Това е IETF стандарт за механизми за отговор на предизвикателство за удостоверяване на потребители с пароли. Това е по-новата и по-сигурна система. Не е обратно съвместим с MongoDB-CR. Вижте документацията за повече подробности.
MongoDB CR е наследената система за удостоверяване. MongoDB 3.X превключи системата за удостоверяване на потребител по подразбиране на SCRAM-SHA1. Така че всички нови потребители, създадени в системата, са потребители на SCRAM-SHA1. Тъй като SCRAM-SHA1 не е обратно съвместим, той прекъсва удостоверяването с всички потребители, използващи механизма MONGODB-CR.
Въпреки това, може да искате да използвате новата машина за съхранение на WiredTiger, която е налична в MongoDB 3.x. Ето стъпките за конфигуриране на MONGODB-CR като механизъм за удостоверяване по подразбиране в MongoDB 3.x, ако приемем, че използвате набор от реплика:
- Създайте 3.x MongoDB клъстер.
- Спрете всички възли от набора от реплика, различни от основния.
- Деактивирайте удостоверяването на основния и рестартирайте възела. Направих това, като коментирах следните записи в conf файла на MongoDB и рестартирах сървъра:
#security: # authorization: enabled # keyFile: /var/lib/mongo/rskey #replication: # replSetName: RS-rsname-0
- Свържете се с основната и променете версията на схемата:
use admin; var schema = db.system.version.findOne({"_id" : "authSchema"}); schema.currentVersion = 3; db.system.version.save(schema)
- Отменете промените във файла mongodb.conf в стъпка 3 по-горе и рестартирайте MongoDB.
- Рестартирайте MongoDB на другите възли от набора от реплики и се уверете, че наборът от реплики е здрав. След като това стане, всички потребители, създадени в системата, ще бъдат потребители на MongoDB-CR. Можете да потвърдите това, като изпълните следната команда:
db.system.users.find().pretty();
Имайте предвид обаче, че това трябва да бъде само временно решение. По-сигурното дългосрочно решение е да надстроите вашия MongoDB сървър, за да използвате модела SCRAM-SHA1. След като сте готови да надстроите, изпълнете следния скрипт, за да надстроите версията на схемата на вашите потребители до SCRAM-SHA1:
db.getSiblingDB("admin").runCommand({authSchemaUpgrade});