Para autenticar un cliente en MongoDB, se debe añadir el usuario correspondiente a MongoDB.
Gestión de usuarios
Puede agregar un usuario con el db.createUser() método usando
mongosh. El primer usuario que cree debe contar con privilegios para crear otros usuarios. Los roles de userAdmin o userAdminAnyDatabase otorgan el privilegio de crear otros usuarios.
Puede otorgar privilegios a un usuario asignándole roles cuando lo cree. También puede otorgar o revocar roles y actualizar contraseñas actualizando los usuarios existentes. Para obtener una lista completa de los métodos de gestión de usuarios, consulte Gestión de usuarios.
Base de datos de autenticación
La base de datos donde se agrega un usuario es su base de datos de autenticación.
Los privilegios de un usuario no se limitan a su base de datos de autenticación y pueden abarcar varias bases de datos. Para obtener más información sobre los roles, consulte Control de acceso basado en roles en implementaciones autogestionadas.
El nombre de un usuario y la base de datos de autenticación sirven como identificador único para ese usuario. MongoDB asocia un usuario con un userId único en el momento de la creación en MongoDB. Sin embargo, los usuarios gestionados por LDAP creados en un servidor LDAP no tienen un documento asociado en la colección system.users y, por tanto, no tienen un campouserId asociado.
Si dos usuarios tienen el mismo nombre pero se crean en bases de datos diferentes, son dos usuarios distintos. Si se desea tener un solo usuario con permisos en varias bases de datos, se debe crear un solo usuario con un rol para cada base de datos aplicable.
Datos de usuario centralizados
MongoDB almacena toda la información del usuario, incluidos name, password y la authentication
database del usuario, en la colección system.users en la base de datos admin.
No modifiques esta colección directamente. Para gestionar usuarios, utiliza los comandos de gestión de usuarios designados.
Usuarios de clúster particionado
Para crear usuarios para un clúster particionado, se debe hacer una conexión a una instancia mongos y añadir los usuarios. Para autenticarse como usuario creado en una instanciamongos, se debe autenticar a través de una instanciamongos.
En los clústeres particionados, MongoDB almacena los datos de configuración de los usuarios en la base de datos admin de los servidores de configuración.
Usuarios locales de la partición
Algunas operaciones de mantenimiento, como compact o rs.reconfig(), requieren conexiones directas a particiones concretas de un clúster. Para realizar estas operaciones, se debe conectar directamente a la partición y autenticarse como usuario administrativo local de la partición.
Para crear un usuario administrativo local a la partición, conéctese directamente al primario de la partición y cree el usuario. Para obtener instrucciones sobre cómo crear un administrador de usuarios local de partición, consulta el tutorial Autenticación mediante archivo de claves para clústeres con particionamiento administrados por el usuario.
MongoDB almacena a los usuarios locales de la partición en la base de datos admin de la partición misma. Estos usuarios locales de particiones son independientes de los usuarios agregados al clúster a través de un mongos. Los usuarios locales de la partición son locales a la partición y mongos no puede acceder a ellos.
A partir de MongoDB 8.0, se puede utilizar el rol directShardOperations para realizar operaciones de mantenimiento que requieren ejecutar comandos directamente contra un fragmento.
Las conexiones directas a una partición solo deben usarse para el mantenimiento y la configuración específicos de la partición. En general, los clientes deben conectarse al clúster particionado a través de mongos.
Advertencia
Ejecutar comandos usando el rol directShardOperations puede hacer que su clúster deje de funcionar correctamente y puede causar corrupción de datos. Utiliza el rol directShardOperations únicamente con fines de mantenimiento o bajo la orientación del soporte de MongoDB. Deja de usar el rol directShardOperations cuando termines de realizar operaciones de mantenimiento.