sql >> Databáze >  >> NoSQL >> MongoDB

Konfigurace ověřování MongoDB-CR jako výchozí na MongoDB 3.x

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í:

  1. 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.
  2. 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:

  1. Vytvořte cluster 3.x MongoDB.
  2. Zastavte všechny uzly sady replik jiné než primární.
  3. 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
    
  4. 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)
    
  5. Vraťte zpět změny v souboru mongodb.conf v kroku 3 výše a restartujte MongoDB.
  6. 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});


  1. Aktualizace meteorologické sbírky s tradičním id

  2. Jak provést vložení, pokud neexistuje jiná aktualizace pomocí mongoengine?

  3. Top 5 výhod sdíleného hostingu MongoDB

  4. Celer error:result.get timeout