Docs Menu
Docs Home
/ /

Cree un usuario en implementaciones autogestionadas

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 de usuario de esta página se aplica a las implementaciones autogestionadas alojadas en todos los siguientes entornos:

  • 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.

Para aprender a crear usuarios de bases de datos en una implementación de MongoDB Atlas, consulte Configurar usuarios de la base de datos.

Para poder crear usuarios, necesitas:

Para la creación rutinaria de usuarios, debe poseer los siguientes permisos:

Los userAdmin y userAdminAnyDatabase roles integrados proporcionan acciones createUser y grantRole sobre sus respectivos recursos.

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:

1

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.

2

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.

3

Importante

No es posible cambiar entre usuarios en la misma sesión de mongosh. Autenticarte como usuario diferente significa que la sesión tiene los privilegios de ambos usuarios autenticados. Para cambiar entre usuarios, debes salir y reiniciar mongosh.

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.

4

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 } )

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" }
]
}
)

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:

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:

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:

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.

Volver

Autenticación

Obtén una insignia de habilidad

Domine "Secure MongoDB Autogestionado: AuthN y AuthZ" de forma gratuita.

Más información

En esta página