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

Configurazione dell'autenticazione MongoDB-CR come predefinita su MongoDB 3.x

Tutti gli utenti creati in MongoDB 3.x vengono creati con SCRAM-SHA1 che interrompe la compatibilità con le versioni precedenti con gli strumenti che si aspettano MongoDB-CR. C'è una lunga lista di strumenti e driver che non sono stati ancora aggiornati per supportare SCRAM-SHA1, come Robomongo e MongoVUE.

In alcuni casi, anche se è disponibile la versione più recente del driver/ORM, potresti non essere pronto per aggiornare il driver a causa di alcuni problemi di compatibilità.

MongoDB supporta due metodi di autenticazione:

  1. MongoDB-CR (Sfida-risposta)
    Meccanismo per autenticare gli utenti con password. Meccanismo di autenticazione predefinito fino alla 2.6.x. Fare riferimento alla documentazione per maggiori dettagli.
  2. SCRAM-SHA1
    Questo è uno standard IETF per i meccanismi di risposta alle sfide per l'autenticazione degli utenti con password. Questo è il sistema più nuovo e più sicuro. Non è retrocompatibile con MongoDB-CR. Fare riferimento alla documentazione per maggiori dettagli.

MongoDB CR è il sistema di autenticazione legacy. MongoDB 3.X ha cambiato il sistema di autenticazione utente predefinito in SCRAM-SHA1. Quindi, tutti i nuovi utenti creati nel sistema sono utenti SCRAM-SHA1. Poiché SCRAM-SHA1 non è compatibile con le versioni precedenti, interrompe l'autenticazione con tutti gli utenti che utilizzano il meccanismo MONGODB-CR.

Tuttavia, potresti voler utilizzare il nuovo motore di archiviazione WiredTiger disponibile in MongoDB 3.x. Di seguito sono riportati i passaggi per configurare MONGODB-CR come meccanismo di autenticazione predefinito in MongoDB 3.x, supponendo che tu stia eseguendo un set di repliche:

  1. Crea un cluster MongoDB 3.x.
  2. Arresta tutti i nodi del set di repliche diversi dal primario.
  3. Disabilita l'autenticazione sul primario e riavvia il nodo. L'ho fatto commentando le seguenti voci nel file di configurazione di MongoDB e riavviando il server:
    #security:
    #  authorization: enabled
    #  keyFile: /var/lib/mongo/rskey
    #replication:
    #  replSetName: RS-rsname-0
    
  4. Connettiti al primario e modifica la versione dello schema:
    use admin;
    var schema = db.system.version.findOne({"_id" : "authSchema"});
    schema.currentVersion = 3;
    db.system.version.save(schema)
    
  5. Annulla le modifiche al file mongodb.conf nel passaggio 3 sopra e riavvia MongoDB.
  6. Riavvia MongoDB sugli altri nodi del set di repliche e assicurati che il set di repliche sia integro. Al termine, tutti gli utenti creati sul sistema saranno utenti MongoDB-CR. Puoi convalidarlo eseguendo il seguente comando:
    db.system.users.find().pretty();
    

Nota, tuttavia, questa dovrebbe essere solo una soluzione temporanea. La soluzione più sicura a lungo termine consiste nell'aggiornare il server MongoDB per utilizzare il modello SCRAM-SHA1. Quando sei pronto per l'aggiornamento, esegui il seguente script per aggiornare la versione dello schema dei tuoi utenti a SCRAM-SHA1:

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