Con el control de acceso habilitado, los usuarios deben identificarse. Debe otorgarle al usuario una o más credenciales. Roles. Un rol otorga a un usuario privilegios para realizar ciertas acciones en los recursosde MongoDB.
Cada aplicación y usuario de un sistema MongoDB debe corresponder a un usuario distinto. Este principio de aislamiento de acceso facilita la revocación del acceso y el mantenimiento continuo de los usuarios. Para garantizar un sistema de mínimo privilegio, concede solo el conjunto mínimo de privilegios necesarios a un usuario.
La información del usuario en esta página se aplica a las implementaciones autogestionadas en todos los siguientes entornos host, a menos que se especifique lo contrario:
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Compatibilidad de MongoDB Atlas
Las siguientes limitaciones se aplican únicamente a las implementaciones alojadas en MongoDB Atlas. Si alguno de estos límites representa un problema para la organización, se debe contactar a soporte de Atlas.
Debe usar la CLI de Atlas, la API de administración de Atlas, la interfaz de usuario de Atlas o una integración compatible para agregar, modificar o eliminar usuarios de bases de datos en clústeres de MongoDB Atlas. De lo contrario, MongoDB Atlas revierte cualquier modificación de usuario. Para agregar usuarios en MongoDB Atlas, consulte "Crear usuarios de bases de datos" en la documentación de MongoDB Atlas.
Los roles integrados disponibles en MongoDB Atlas y los privilegios específicos brindan soporte a un subconjunto de comandos de MongoDB. Consulta Comandos no admitidos en clústeres M10+ para obtener más información.
MongoDB Atlas admite un máximo de 100 usuarios de base de datos por proyecto de MongoDB Atlas. Si necesitas más de 100 usuarios de base de datos en un proyecto, ponte en contacto con el soporte de Atlas.
Requisitos previos
Para poder crear usuarios, necesitas:
Para la creación rutinaria de usuarios, debe poseer los siguientes permisos:
Para crear un nuevo usuario en una base de datos, debe tener la
createUseracción en ese recurso de base de datos.Para otorgar roles a un usuario, debe tener la acción
grantRoleen la base de datos del rol.
Los userAdmin y userAdminAnyDatabase roles integrados proporcionan acciones createUser y grantRole sobre sus respectivos recursos.
Pasos
Nota
Los siguientes procedimientos utilizan la autenticación SCRAM. Para obtener información adicional sobre otros mecanismos de autenticación, consulta Ejemplos adicionales.
Para configurar los usuarios de base de datos para su implementación autogestionada de MongoDB Enterprise o MongoDB Community, siga estos pasos:
Conéctese y autentíquese
Usando mongosh, se debe realizar la conexión al mongod primario o, en un clúster, se debe realizar la conexión al mongos y realizar la autenticación como administrador de usuario o usuario con los privilegios requeridos:
Comienza mongosh con las opciones de línea de comandos -u
<username>, -p y --authenticationDatabase <database>:
mongosh --port 27017 --authenticationDatabase \ "admin" -u "myUserAdmin" -p
Se debe ingresar la contraseña cuando se pida.
Utilizando mongosh, se debe realizar la implementación de la base de datos:
mongosh --port 27017
En mongosh, cambia a la base de datos de autenticación (en este caso, admin) y utiliza el método db.auth(<username>, <pwd>) para autenticarte:
use admin db.auth("myUserAdmin", passwordPrompt()) // or cleartext password
Tip
El método passwordPrompt() solicita introducir la contraseña. También se puede especificar la contraseña directamente como un string. Recomendamos utilizar el método passwordPrompt() para evitar que la contraseña sea visible en la pantalla y se filtre potencialmente al historial del shell.
Introduzca la contraseña cuando se lo pidan.
Cree usuarios adicionales para su implementación
Nota
El siguiente paso utiliza la autenticación SCRAM. Para obtener información adicional sobre otros mecanismos de autenticación, consulta Ejemplos adicionales.
Después de autenticarte como el administrador de usuarios, utiliza el método db.createUser() para crear usuarios adicionales. Puedes asignar cualquier rol incorporado o rol definido por el usuario a los usuarios.
La siguiente operación añade un usuario myTester a la base de datos test que tiene el rol de readWrite en la base de datos test así como el rol de read en la base de datos reporting.
use test db.createUser( { user: "myTester", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "readWrite", db: "test" }, { role: "read", db: "reporting" } ] } )
Tip
El método passwordPrompt() solicita introducir la contraseña. También se puede especificar la contraseña directamente como un string. Recomendamos utilizar el método passwordPrompt() para evitar que la contraseña sea visible en la pantalla y se filtre potencialmente al historial del shell.
La base de datos donde creas al usuario (en este ejemplo, test) es la base de datos de autenticación de ese usuario. Aunque el usuario se autentica en esta base de datos, el usuario puede tener roles en otras bases de datos. La base de datos de autenticación del usuario no limita los privilegios del usuario.
Después de crear los usuarios adicionales, salga mongosh.
Conéctate a la instancia y autentícate como myTester
Importante
Después de salir de mongosh como myUserAdmin, vuelva a conectarse como myTester:
Comienza mongosh con las opciones de línea de comandos -u
<username>, -p y --authenticationDatabase <database>:
mongosh --port 27017 -u "myTester" \ --authenticationDatabase "test" -p
Se debe ingresar la contraseña del usuario cuando se solicite.
Utilizando mongosh, se debe realizar la implementación de la base de datos:
mongosh --port 27017
En mongosh, cambia a la base de datos de autenticación (en este caso, admin) y utiliza el método db.auth(<username>, <pwd>) para autenticarte:
use test db.auth("myTester", passwordPrompt()) // or cleartext password
Tip
El método passwordPrompt() solicita introducir la contraseña. También se puede especificar la contraseña directamente como un string. Recomendamos utilizar el método passwordPrompt() para evitar que la contraseña sea visible en la pantalla y se filtre potencialmente al historial del shell.
Se debe ingresar la contraseña del usuario cuando se solicite.
Inserta un documento como myTester
Como usuario myTester, tienes privilegios para realizar operaciones de lectura y para guardar en la base de datos test (así como para realizar operaciones de lectura en la base de datos reporting). Una vez autenticado como myTester, inserta un documento en una colección de la base de datos test. Por ejemplo, puedes realizar la siguiente operación de inserción en la base de datos test:
db.foo.insertOne( { x: 1, y: 1 } )
Ejemplos adicionales
Autenticación de nombre de usuario/contraseña
La siguiente operación crea un usuario en la base de datos reporting con el nombre, la contraseña y los roles especificados.
Tip
El método passwordPrompt() solicita introducir la contraseña. También se puede especificar la contraseña directamente como un string. Recomendamos utilizar el método passwordPrompt() para evitar que la contraseña sea visible en la pantalla y se filtre potencialmente al historial del shell.
use reporting db.createUser( { user: "reportsUser", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "read", db: "reporting" }, { role: "read", db: "products" }, { role: "read", db: "sales" }, { role: "readWrite", db: "accounts" } ] } )
Autenticación Kerberos
Los usuarios que se autentican en MongoDB utilizando un mecanismo de autenticación externo, como Kerberos, deben crearse en la base de datos $external, lo que permite a mongos o mongod consultar una fuente externa para la autenticación.
Para usar sesiones de cliente y garantías de coherencia causal con usuarios de autenticación $external (usuarios Kerberos, LDAP o X.509), los nombres de usuario no pueden superar los 10k bytes.
Para la autenticación de Kerberos, debe añadir el principal de Kerberos como nombre de usuario. No necesita especificar una contraseña.
La siguiente operación añade el principal de Kerberos reportingapp@EXAMPLE.NET con acceso de solo lectura a la base de datos records:
use $external db.createUser( { user: "reportingapp@EXAMPLE.NET", roles: [ { role: "read", db: "records" } ] } )
Tip
Para obtener más información sobre cómo configurar la autenticación Kerberos para su implementación de MongoDB, consulte los siguientes tutoriales:
Autenticación LDAP
Los usuarios que se autentican en MongoDB utilizando un mecanismo de autenticación externo, como LDAP, deben ser creados en la base de datos $external, lo que permite a mongos o mongod consultar una fuente externa para la autenticación.
Para usar sesiones de cliente y garantías de coherencia causal con usuarios de autenticación $external (usuarios Kerberos, LDAP o X.509), los nombres de usuario no pueden superar los 10k bytes.
Para la autenticación LDAP, debe especificar un nombre de usuario. No necesita especificar la contraseña, ya que eso lo maneja el servicio LDAP.
La siguiente operación añade al usuario reporting con acceso de solo lectura a la base de datos records:
use $external db.createUser( { user: "reporting", roles: [ { role: "read", db: "records" } ] } )
Tip
Para obtener más información sobre cómo configurar la autenticación LDAP para su implementación de MongoDB, consulte los siguientes tutoriales:
X.509 Autenticación de certificado del cliente
Los usuarios que se autentican en MongoDB utilizando un mecanismo externo de autenticación, como la Autenticación de Certificado de Cliente X.509, deben crearse en la base de datos $external, lo que permite a mongos o mongod consultar una fuente externa para la autenticación.
Para usar sesiones de cliente y garantías de coherencia causal con usuarios de autenticación $external (usuarios Kerberos, LDAP o X.509), los nombres de usuario no pueden superar los 10k bytes.
Para la autenticación del certificado del cliente X.509, debe agregar el valor del subject del certificado del cliente como usuario de MongoDB. Cada certificado de cliente X.509 único corresponde a un único usuario de MongoDB. No es necesario que especifique una contraseña.
La siguiente operación añade al usuario sujeto del certificado de cliente CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry con acceso de solo lectura a la base de datos records.
use $external db.createUser( { user: "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry", roles: [ { role: "read", db: "records" } ] } )
Tip
Para obtener más información sobre cómo configurar la autenticación de certificado del cliente X.509 para su implementación de MongoDB, consulte los siguientes tutoriales:
Próximos pasos
Para gestionar usuarios, asignar roles y crear roles personalizados para su implementación autogestionada de MongoDB Enterprise o MongoDB Community, consulte Gestionar usuarios y roles en implementaciones autogestionadas.