MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Configuration de l'authentification MongoDB-CR par défaut sur MongoDB 3.x

Tous les utilisateurs créés dans MongoDB 3.x sont créés avec SCRAM-SHA1 qui rompt la compatibilité descendante avec les outils qui attendent MongoDB-CR. Il existe une longue liste d'outils et de pilotes qui n'ont pas encore été mis à jour pour prendre en charge SCRAM-SHA1, tels que Robomongo et MongoVUE.

Dans certains cas, même si la version la plus récente du pilote/ORM est disponible, vous n'êtes peut-être pas prêt à mettre à niveau votre pilote en raison de problèmes de compatibilité.

MongoDB prend en charge deux méthodes d'authentification :

  1. MongoDB- CR (défi-réponse)
    Mécanisme pour authentifier les utilisateurs avec des mots de passe. Mécanisme d'authentification par défaut jusqu'à 2.6.x. Reportez-vous à la documentation pour plus de détails.
  2. SCRAM-SHA1
    Il s'agit d'une norme IETF pour les mécanismes de défi-réponse permettant d'authentifier les utilisateurs avec des mots de passe. Il s'agit du système le plus récent et le plus sécurisé. Il n'est pas rétrocompatible avec MongoDB-CR. Reportez-vous à la documentation pour plus de détails.

MongoDB CR est le système d'authentification hérité. MongoDB 3.X a basculé le système d'authentification utilisateur par défaut sur SCRAM-SHA1. Ainsi, tous les nouveaux utilisateurs créés dans le système sont des utilisateurs SCRAM-SHA1. Étant donné que SCRAM-SHA1 n'est pas rétrocompatible, il rompt l'authentification avec tous les utilisateurs utilisant le mécanisme MONGODB-CR.

Cependant, vous souhaiterez peut-être utiliser le nouveau moteur de stockage WiredTiger disponible dans MongoDB 3.x. Voici les étapes pour configurer MONGODB-CR comme mécanisme d'authentification par défaut dans MongoDB 3.x, en supposant que vous exécutez un jeu de réplicas :

  1. Créez un cluster MongoDB 3.x.
  2. Arrêtez tous les nœuds du jeu de répliques autres que le nœud principal.
  3. Désactivez l'authentification sur le nœud principal et redémarrez le nœud. Pour ce faire, j'ai commenté les entrées suivantes dans le fichier de configuration MongoDB et redémarré le serveur :
    #security:
    #  authorization: enabled
    #  keyFile: /var/lib/mongo/rskey
    #replication:
    #  replSetName: RS-rsname-0
    
  4. Connectez-vous au serveur principal et modifiez la version du schéma :
    use admin;
    var schema = db.system.version.findOne({"_id" : "authSchema"});
    schema.currentVersion = 3;
    db.system.version.save(schema)
    
  5. Annulez les modifications apportées au fichier mongodb.conf à l'étape 3 ci-dessus et redémarrez MongoDB.
  6. Redémarrez MongoDB sur les autres nœuds du jeu de répliques et assurez-vous que le jeu de répliques est sain. Une fois cela fait, tous les utilisateurs créés sur le système seront des utilisateurs MongoDB-CR. Vous pouvez le valider en exécutant la commande suivante :
    db.system.users.find().pretty();
    

Notez cependant que cela ne devrait être qu'une solution de contournement temporaire. La solution la plus sécurisée à long terme consiste à mettre à niveau votre serveur MongoDB pour utiliser le modèle SCRAM-SHA1. Une fois que vous êtes prêt à mettre à niveau, exécutez le script suivant pour mettre à niveau la version de schéma de vos utilisateurs vers SCRAM-SHA1 :

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