Všichni uživatelé vytvoření v MongoDB 3.x jsou vytvořeni pomocí SCRAM-SHA1, což narušuje zpětnou kompatibilitu s nástroji, které očekávají MongoDB-CR. Existuje seznam nástrojů a ovladačů, které ještě nebyly aktualizovány, aby podporovaly SCRAM-SHA1, jako jsou Robomongo a MongoVUE.
V některých případech, i když je k dispozici novější verze ovladače/ORM, možná nebudete připraveni na aktualizaci ovladače kvůli problémům s kompatibilitou.
MongoDB podporuje dvě metody ověřování:
- MongoDB-CR (Challenge-response)
Mechanismus pro ověřování uživatelů pomocí hesel. Výchozí mechanismus ověřování do 2.6.x. Další podrobnosti naleznete v dokumentaci. - SCRAM-SHA1
Toto je standard IETF pro mechanismy odezvy na výzvu pro ověřování uživatelů pomocí hesel. Toto je novější a bezpečnější systém. Není zpětně kompatibilní s MongoDB-CR. Další podrobnosti naleznete v dokumentaci.
MongoDB CR je starší autentizační systém. MongoDB 3.X přepnul výchozí systém ověřování uživatelů na SCRAM-SHA1. Takže všichni noví uživatelé vytvoření v systému jsou uživatelé SCRAM-SHA1. Vzhledem k tomu, že SCRAM-SHA1 není zpětně kompatibilní, prolomí ověření u všech uživatelů používajících mechasim MONGODB-CR.
Možná však budete chtít použít nový modul úložiště WiredTiger, který je k dispozici v MongoDB 3.x. Zde jsou kroky ke konfiguraci MONGODB-CR jako výchozího mechanismu ověřování v MongoDB 3.x za předpokladu, že používáte sadu replik:
- Vytvořte cluster 3.x MongoDB.
- Zastavte všechny uzly sady replik jiné než primární.
- Zakažte ověření na primárním a restartujte uzel. Udělal jsem to tak, že jsem okomentoval následující položky v souboru MongoDB conf a restartoval server:
#security: # authorization: enabled # keyFile: /var/lib/mongo/rskey #replication: # replSetName: RS-rsname-0
- Připojte se k primárnímu a změňte verzi schématu:
use admin; var schema = db.system.version.findOne({"_id" : "authSchema"}); schema.currentVersion = 3; db.system.version.save(schema)
- Vraťte zpět změny v souboru mongodb.conf v kroku 3 výše a restartujte MongoDB.
- Restartujte MongoDB na ostatních uzlech sady replik a ujistěte se, že sada replik je v pořádku. Jakmile to uděláte, všichni uživatelé vytvoření v systému budou uživatelé MongoDB-CR. Můžete to ověřit provedením následujícího příkazu:
db.system.users.find().pretty();
Upozorňujeme však, že by se mělo jednat pouze o dočasné řešení. Bezpečnější dlouhodobější opravou je upgradovat váš server MongoDB tak, aby používal model SCRAM-SHA1. Jakmile budete připraveni upgradovat, spusťte následující skript a upgradujte verzi schématu vašich uživatelů na SCRAM-SHA1:
db.getSiblingDB("admin").runCommand({authSchemaUpgrade});