sql >> Base de Datos >  >> NoSQL >> MongoDB

Configuración de la autenticación MongoDB-CR como predeterminada en MongoDB 3.x

Todos los usuarios creados en MongoDB 3.x se crean con SCRAM-SHA1, lo que rompe la compatibilidad con versiones anteriores con herramientas que esperan MongoDB-CR. Hay una larga lista de herramientas y controladores que aún no se han actualizado para admitir SCRAM-SHA1, como Robomongo y MongoVUE.

En algunos casos, incluso si está disponible la versión más reciente del controlador/ORM, es posible que no esté listo para actualizar su controlador debido a algunos problemas de compatibilidad.

MongoDB admite dos métodos de autenticación:

  1. MongoDB- CR (desafío-respuesta)
    Mecanismo para autenticar usuarios con contraseñas. Mecanismo de autenticación predeterminado hasta 2.6.x. Consulte la documentación para obtener más detalles.
  2. SCRAM-SHA1
    Este es un estándar IETF para mecanismos de respuesta de desafío para autenticar usuarios con contraseñas. Este es el sistema más nuevo y más seguro. No es retrocompatible con MongoDB-CR. Consulte la documentación para obtener más detalles.

MongoDB CR es el sistema de autenticación heredado. MongoDB 3.X cambió el sistema de autenticación de usuario predeterminado a SCRAM-SHA1. Por lo tanto, todos los nuevos usuarios creados en el sistema son usuarios de SCRAM-SHA1. Dado que SCRAM-SHA1 no es compatible con versiones anteriores, interrumpe la autenticación con todos los usuarios que utilizan el mecanismo MONGODB-CR.

Sin embargo, es posible que desee utilizar el nuevo motor de almacenamiento WiredTiger que está disponible en MongoDB 3.x. Estos son los pasos para configurar MONGODB-CR como el mecanismo de autenticación predeterminado en MongoDB 3.x, suponiendo que esté ejecutando un conjunto de réplicas:

  1. Cree un clúster MongoDB 3.x.
  2. Detenga todos los nodos del conjunto de réplicas que no sean el principal.
  3. Desactive la autenticación en el nodo principal y reinicie el nodo. Hice esto comentando las siguientes entradas en el archivo de configuración de MongoDB y reiniciando el servidor:
    #security:
    #  authorization: enabled
    #  keyFile: /var/lib/mongo/rskey
    #replication:
    #  replSetName: RS-rsname-0
    
  4. Conéctese al primario y cambie la versión del esquema:
    use admin;
    var schema = db.system.version.findOne({"_id" : "authSchema"});
    schema.currentVersion = 3;
    db.system.version.save(schema)
    
  5. Deshacer los cambios en el archivo mongodb.conf en el paso 3 anterior y reiniciar MongoDB.
  6. Reinicie MongoDB en los otros nodos del conjunto de réplicas y asegúrese de que el conjunto de réplicas esté en buen estado. Una vez hecho esto, todos los usuarios creados en el sistema serán usuarios de MongoDB-CR. Puede validar esto ejecutando el siguiente comando:
    db.system.users.find().pretty();
    

Tenga en cuenta, sin embargo, que esto solo debería ser una solución temporal. La solución más segura a largo plazo es actualizar su servidor MongoDB para usar el modelo SCRAM-SHA1. Una vez que esté listo para actualizar, ejecute el siguiente script para actualizar la versión de esquema de sus usuarios a SCRAM-SHA1:

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