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 Métododb.createUser() usando mongosh. El primer usuario que crees debe tener privilegios para crear otros usuarios. El userAdmin o el userAdminAnyDatabase rol confieren ambos el privilegio de crear otros usuarios.
Puedes otorgar privilegios a un usuario asignándole roles cuando creas al usuario. También puede otorgar o revocar roles, así como actualizar contraseñas, al actualizar usuarios existentes. Para obtener una lista completa de métodos de gestión de usuarios, consulta Gestión de usuarios.
Un usuario se identifica unívocamente por su nombre y la base de datos de autenticación asociada. MongoDB asocia un usuario con un userId único en el momento de la creación en MongoDB.
Usuarios gestionados por LDAP
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 campo userId asociado.
Base de datos de autenticación
Cuando se añade un usuario, este se crea en una base de datos específica. La base de datos en la que se crea el usuario es la base de datos de autenticación para el usuario.
Sin embargo, los privilegios de un usuario no se limitan a su base de datos de autenticación. Por lo tanto, un usuario puede tener privilegios en diferentes bases de datos. Para obtener más información sobre los roles, se puede consultar Control de accesos 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
Para los usuarios creados en MongoDB, 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 cleanupOrphaned, compact o rs.reconfig(), requieren conexiones directas a particiones específicas en un clúster. Para realizar estas operaciones, debe conectarse directamente a la partición y autenticarse como un usuario administrativo local de la partición.
Para crear un usuario administrativo local de partición, se debe conectar directamente al primario de la partición y crear el usuario. Para obtener instrucciones sobre cómo crear un usuario administrador local de partición, se puede consultar el tutorial Implementar un clúster particionado autogestionado con autenticación mediante archivo de claves.
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.
Se deben usar conexiones directas a una partición únicamente para tareas de mantenimiento y configuración específicas de la partición o para cargas de trabajo de análisis dirigidas. En general, los clientes deben conectarse al clúster fragmentado a través de mongos.