sql >> Database >  >> NoSQL >> MongoDB

MongoDB-CR-verificatie als standaard configureren op MongoDB 3.x

Alle gebruikers die in MongoDB 3.x zijn gemaakt, zijn gemaakt met SCRAM-SHA1 die achterwaartse compatibiliteit met tools die MongoDB-CR verwachten, doorbreekt. Er is een waslijst met tools en stuurprogramma's die nog niet zijn bijgewerkt om SCRAM-SHA1 te ondersteunen, zoals Robomongo en MongoVUE.

In sommige gevallen, zelfs als de nieuwere versie van het stuurprogramma/ORM beschikbaar is, bent u misschien niet klaar om uw stuurprogramma te upgraden vanwege compatibiliteitsproblemen.

MongoDB ondersteunt twee authenticatiemethoden:

  1. MongoDB-CR (Challenge-respons)
    Mechanisme om gebruikers te authenticeren met wachtwoorden. Standaard authenticatiemechanisme tot 2.6.x. Raadpleeg de documentatie voor meer details.
  2. SCRAM-SHA1
    Dit is een IETF-standaard voor challenge-responsmechanismen voor het authenticeren van gebruikers met wachtwoorden. Dit is het nieuwere en veiligere systeem. Het is niet achterwaarts compatibel met MongoDB-CR. Raadpleeg de documentatie voor meer details.

MongoDB CR is het oude authenticatiesysteem. MongoDB 3.X heeft het standaard gebruikersauthenticatiesysteem overgeschakeld naar SCRAM-SHA1. Dus alle nieuwe gebruikers die in het systeem worden aangemaakt, zijn SCRAM-SHA1-gebruikers. Aangezien SCRAM-SHA1 niet achterwaarts compatibel is, wordt de authenticatie verbroken met alle gebruikers die het MONGODB-CR-mechanisme gebruiken.

Misschien wilt u echter de nieuwe WiredTiger-opslagengine gebruiken die beschikbaar is in MongoDB 3.x. Hier zijn de stappen om MONGODB-CR te configureren als het standaard authenticatiemechanisme in MongoDB 3.x, ervan uitgaande dat u een replicaset gebruikt:

  1. Maak een 3.x MongoDB-cluster.
  2. Stop alle knooppunten van de replicaset behalve de primaire.
  3. Schakel auth uit op de primaire en start het knooppunt opnieuw. Ik deed dit door commentaar te geven op de volgende vermeldingen in het MongoDB-configuratiebestand en de server opnieuw op te starten:
    #security:
    #  authorization: enabled
    #  keyFile: /var/lib/mongo/rskey
    #replication:
    #  replSetName: RS-rsname-0
    
  4. Maak verbinding met de primaire versie en wijzig de schemaversie:
    use admin;
    var schema = db.system.version.findOne({"_id" : "authSchema"});
    schema.currentVersion = 3;
    db.system.version.save(schema)
    
  5. Maak de wijzigingen aan het bestand mongoDB.conf in stap 3 hierboven ongedaan en start MongoDB opnieuw.
  6. Start MongoDB opnieuw op de andere knooppunten van de replicaset en zorg ervoor dat de replicaset in orde is. Zodra dit is gebeurd, zijn alle gebruikers die op het systeem zijn gemaakt, MongoDB-CR-gebruikers. U kunt dit valideren door het volgende commando uit te voeren:
    db.system.users.find().pretty();
    

Houd er echter rekening mee dat dit slechts een tijdelijke oplossing zou moeten zijn. De veiligere oplossing voor de langere termijn is om uw MongoDB-server te upgraden om het SCRAM-SHA1-model te gebruiken. Zodra u klaar bent om te upgraden, voert u het volgende script uit om de schemaversie van uw gebruikers te upgraden naar SCRAM-SHA1:

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


  1. Welke parameters worden doorgegeven aan Mongoose-callbacks

  2. Jest en Redis (probleem met unit-tests met databasecache)

  3. Hoe krijg je alle waarden die een deel van een string bevatten met behulp van mangoest find?

  4. Flask - Bad Request De browser (of proxy) heeft een verzoek verzonden dat deze server niet kon begrijpen