sql >> Databasteknik >  >> NoSQL >> MongoDB

Konfigurera MongoDB-CR-autentisering som standard på MongoDB 3.x

Alla användare skapade i MongoDB 3.x skapas med SCRAM-SHA1 som bryter bakåtkompatibiliteten med verktyg som förväntar sig MongoDB-CR. Det finns en tvättlista med verktyg och drivrutiner som ännu inte har uppdaterats för att stödja SCRAM-SHA1, som Robomongo och MongoVUE.

I vissa fall, även om den nyare versionen av drivrutinen/ORM är tillgänglig, kanske du inte är redo att uppgradera din drivrutin på grund av vissa kompatibilitetsproblem.

MongoDB stöder två autentiseringsmetoder:

  1. MongoDB-CR (Challenge-response)
    Mekanism för att autentisera användare med lösenord. Standard autentiseringsmekanism fram till 2.6.x. Se dokumentationen för mer information.
  2. SCRAM-SHA1
    Detta är en IETF-standard för utmaningssvarsmekanismer för autentisering av användare med lösenord. Detta är det nyare och säkrare systemet. Den är inte bakåtkompatibel med MongoDB-CR. Se dokumentationen för mer information.

MongoDB CR är det äldre autentiseringssystemet. MongoDB 3.X bytte standardanvändarautentiseringssystemet till SCRAM-SHA1. Så alla nya användare som skapas i systemet är SCRAM-SHA1-användare. Eftersom SCRAM-SHA1 inte är bakåtkompatibel bryter den autentisering med alla användare som använder MONGODB-CR-mekanismen.

Men du kanske vill använda den nya WiredTiger-lagringsmotorn som är tillgänglig i MongoDB 3.x. Här är stegen för att konfigurera MONGODB-CR som standardautentiseringsmekanism i MongoDB 3.x, förutsatt att du kör en replikuppsättning:

  1. Skapa ett 3.x MongoDB-kluster.
  2. Stoppa alla noder i replikuppsättningen förutom den primära.
  3. Inaktivera autentisering på den primära och starta om noden. Jag gjorde detta genom att kommentera följande poster i MongoDB conf-filen och starta om servern:
    #security:
    #  authorization: enabled
    #  keyFile: /var/lib/mongo/rskey
    #replication:
    #  replSetName: RS-rsname-0
    
  4. Anslut till det primära och ändra schemaversionen:
    use admin;
    var schema = db.system.version.findOne({"_id" : "authSchema"});
    schema.currentVersion = 3;
    db.system.version.save(schema)
    
  5. Ångra ändringar i mongodb.conf-filen i steg 3 ovan och starta om MongoDB.
  6. Starta om MongoDB på de andra noderna i replikuppsättningen och se till att replikuppsättningen är frisk. När detta är gjort kommer alla användare som skapats på systemet att vara MongoDB-CR-användare. Du kan validera detta genom att utföra följande kommando:
    db.system.users.find().pretty();
    

Observera dock att detta bara bör vara en tillfällig lösning. Den säkrare långsiktiga lösningen är att uppgradera din MongoDB-server för att använda SCRAM-SHA1-modellen. När du är redo att uppgradera, kör följande skript för att uppgradera schemaversionen av dina användare till SCRAM-SHA1:

db.getSiblingDB("admin").runCommand({authSchemaUpgrade});


  1. Finns det MGET-analog för Redis-haschar?

  2. Exportera en mongoose-databasmodul

  3. Hur man hittar slumpmässiga poster i Mongoose

  4. phpredis på windows 7 64bit xampp