sql >> Database teknologi >  >> NoSQL >> MongoDB

Konfiguration af MongoDB-CR-godkendelse som standard på MongoDB 3.x

Alle brugere oprettet i MongoDB 3.x er oprettet med SCRAM-SHA1, som bryder bagudkompatibiliteten med værktøjer, der forventer MongoDB-CR. Der er en vaskeri liste over værktøjer og drivere, der endnu ikke er blevet opdateret til at understøtte SCRAM-SHA1, såsom Robomongo og MongoVUE.

I nogle tilfælde, selvom den nyere version af driveren/ORM er tilgængelig, er du muligvis ikke klar til at opgradere din driver på grund af nogle kompatibilitetsproblemer.

MongoDB understøtter to godkendelsesmetoder:

  1. MongoDB-CR (Challenge-response)
    Mekanisme til at autentificere brugere med adgangskoder. Standard godkendelsesmekanisme indtil 2.6.x. Se dokumentationen for flere detaljer.
  2. SCRAM-SHA1
    Dette er en IETF-standard for udfordringsreaktionsmekanismer til autentificering af brugere med adgangskoder. Dette er det nyere og mere sikre system. Den er ikke bagudkompatibel med MongoDB-CR. Se dokumentationen for flere detaljer.

MongoDB CR er det gamle autentificeringssystem. MongoDB 3.X skiftede standardbrugergodkendelsessystemet til SCRAM-SHA1. Så alle nye brugere, der oprettes i systemet, er SCRAM-SHA1-brugere. Da SCRAM-SHA1 ikke er bagudkompatibel, bryder den godkendelsen med alle brugere, der bruger MONGODB-CR-mekanismen.

Du vil dog måske bruge den nye WiredTiger-lagringsmotor, der er tilgængelig i MongoDB 3.x. Her er trinene til at konfigurere MONGODB-CR som standardgodkendelsesmekanismen i MongoDB 3.x, forudsat at du kører et replikasæt:

  1. Opret en 3.x MongoDB-klynge.
  2. Stop alle noder i replikasættet bortset fra det primære.
  3. Deaktiver godkendelse på den primære, og genstart noden. Jeg gjorde dette ved at kommentere følgende poster i MongoDB conf-filen og genstarte serveren:
    #security:
    #  authorization: enabled
    #  keyFile: /var/lib/mongo/rskey
    #replication:
    #  replSetName: RS-rsname-0
    
  4. Opret forbindelse til den primære og skift skemaversionen:
    use admin;
    var schema = db.system.version.findOne({"_id" : "authSchema"});
    schema.currentVersion = 3;
    db.system.version.save(schema)
    
  5. Fortryd ændringer af mongodb.conf-filen i trin 3 ovenfor, og genstart MongoDB.
  6. Genstart MongoDB på de andre noder i replikasættet, og sørg for, at replikasættet er sundt. Når dette er gjort, vil alle de brugere, der er oprettet på systemet, være MongoDB-CR-brugere. Du kan validere dette ved at udføre følgende kommando:
    db.system.users.find().pretty();
    

Bemærk dog, at dette kun bør være en midlertidig løsning. Den mere sikre langsigtede løsning er at opgradere din MongoDB-server til at bruge SCRAM-SHA1-modellen. Når du er klar til at opgradere, skal du køre følgende script for at opgradere skemaversionen af ​​dine brugere til SCRAM-SHA1:

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


  1. NodeJS + MongoDB:Henter data fra indsamling med findOne ()

  2. MongoDB $dateFromParts

  3. $lookup flere niveauer uden $unwind?

  4. Hvordan konfigurerer man forårssessioner til at arbejde med Redis i xml?