Cómo crear un usuario y agregar un rol en MongoDB

⚡ Resumen inteligente

Crear un usuario y agregar un rol en MongoDB Se basa en el método db.createUser() para definir credenciales, asignar roles integrados y delimitar privilegios a bases de datos específicas, lo que refuerza el control de acceso en cuentas administrativas y de bases de datos individuales.

  • 🔑 Método principal: El comando db.createUser() crea una cuenta especificando el usuario, la contraseña y una matriz de roles en una sola instrucción.
  • 🛡️ Ámbito del administrador: El rol userAdminAnyDatabase otorga derechos de administración en todas las bases de datos, mientras que userAdmin limita el control a una base de datos específica.
  • 🎯 Asignación de roles: Los roles integrados, como lectura y lectura/escritura, se corresponden precisamente con las acciones que un usuario puede realizar en una colección.
  • 👥 Múltiples bases de datos: Una sola cuenta puede tener diferentes roles en varias bases de datos dentro de una misma matriz de roles.
  • Verificación: El método db.getUsers() y el resultado devuelto confirman que las cuentas y los privilegios se aprovisionaron correctamente.

Cómo crear un usuario y agregar un rol en MongoDB

¿Qué son los roles integrados en? MongoDB?

Antes de crear una cuenta, es útil comprender los roles integrados que MongoDB Un rol es un conjunto de privilegios con nombre, y cada privilegio asocia un recurso (una base de datos o colección) con las acciones permitidas sobre él. Por lo tanto, asignar un rol durante la creación del usuario determina con precisión las acciones que esa cuenta puede realizar.

MongoDB Agrupa sus roles integrados en roles de usuario de base de datos, roles de administración de base de datos, roles de administración de clúster, roles de copia de seguridad y restauración, y roles de superusuario. La siguiente tabla resume los roles más utilizados al administrar usuarios:

Rol Categoría Privilegios otorgados
read Usuario de la base de datos Acceso de solo lectura a todas las colecciones que no pertenecen al sistema en una base de datos.
leerEscribir Usuario de la base de datos Acceso de lectura, además de insertar, actualizar y eliminar en las colecciones.
dbAdmin Administrador de base de datos Gestión de esquemas, indexación y estadísticas para una base de datos.
administrador de usuario Administrador de base de datos Cree y modifique usuarios y roles en una única base de datos.
userAdminAnyDatabase superusuario Administración de usuarios en todas las bases de datos de la instancia.
raíz superusuario Acceso completo a todos los recursos y operaciones.

MongoDB Crear usuario administrador

Crear un administrador de usuarios en MongoDB Se realiza mediante el método createUser. El siguiente ejemplo muestra cómo se puede hacer.

db.createUser(
{	user: "Guru99",
	pwd: "password",

	roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})

MongoDB Crear usuario administrador

Code Explicación:

  1. El primer paso es especificar el "nombre de usuario" y la "contraseña" que deben crearse.
  2. El segundo paso es asignar un rol al usuario. Dado que debe ser un administrador de base de datos, en cuyo caso le hemos asignado el rol “userAdminAnyDatabase”. Este rol permite al usuario tener privilegios administrativos en todas las bases de datos. MongoDB.
  3. El parámetro db especifica la base de datos de administración, que es una base de datos Meta especial dentro de MongoDB que contiene la información de este usuario.

Si el comando se ejecuta correctamente, se mostrará la siguiente salida:

Salida:

MongoDB Crear usuario administrador

La salida muestra que un usuario llamó “GuruSe creó el usuario 99 y ese usuario tiene privilegios sobre todas las bases de datos en MongoDB.

MongoDB Crear usuario para base de datos única

Para crear un usuario que administre una sola base de datos, podemos usar el mismo comando mencionado anteriormente, pero solo necesitamos usar la opción "userAdmin".

El siguiente ejemplo muestra cómo se puede hacer esto:

MongoDB Crear usuario para base de datos única

db.createUser(
{
	user: "Employeeadmin",

	pwd: "password",

	roles:[{role: "userAdmin" , db:"Employee"}]})

Code Explicación:

  1. El primer paso es especificar el "nombre de usuario" y la "contraseña" que deben crearse.
  2. El segundo paso consiste en asignar un rol al usuario, que en este caso, al ser administrador de base de datos, se denomina "userAdmin". Este rol le otorga privilegios administrativos únicamente sobre la base de datos especificada en la opción db.
  3. El parámetro db especifica la base de datos sobre la cual el usuario debe tener privilegios administrativos.

Si el comando se ejecuta correctamente, se mostrará la siguiente salida:

Salida:

MongoDB Crear usuario para base de datos única

El resultado muestra que se creó un usuario llamado "Employeeadmin" y que ese usuario tiene privilegios solo en la base de datos "Empleado".

Administrar usuarios

Primero, comprenda los roles que necesita definir. Hay una lista completa de roles disponibles en MongoDBPor ejemplo, existe el rol de "lectura", que solo permite el acceso de lectura a las bases de datos, y el rol de "lectura/escritura", que proporciona acceso de lectura y escritura a la base de datos. Esto significa que el usuario puede ejecutar comandos de inserción, eliminación y actualización en las colecciones de esa base de datos.

Administrar Usuarios

db.createUser(
{
	user: "Mohan",

	pwd: "password",

	roles:[
	{ role: "read" , db:"Marketing" },
	{ role: "readWrite" , db:"Sales" }
	]
})

El fragmento de código anterior muestra que se crea un usuario llamado Mohan y se le asignan varios roles en varias bases de datos. En el ejemplo anterior, se le otorga permiso de solo lectura para la base de datos "Marketing" y permiso de lectura y escritura para la base de datos "Sales".

Cómo ver y administrar MongoDB Usuarios

Una vez que existen cuentas, MongoDB Proporciona un conjunto de comandos para inspeccionarlos, actualizarlos y eliminarlos sin caídas.ping y recreando cada usuario. Estos comandos se ejecutan en la base de datos donde se creó el usuario, así que cambie a la base de datos correcta con la instrucción use antes de ejecutarlos.

Los comandos de administración de usuarios más comunes son:

  • db.getUsers() — Muestra una lista de todos los usuarios definidos en la base de datos actual, junto con los roles que desempeña cada uno.
  • db.getUser(“username”) — Devuelve los detalles de una sola cuenta, lo cual es útil para auditar privilegios.
  • db.grantRolesToUser() — agrega uno o más roles a un usuario existente sin afectar los roles actuales.
  • db.revokeRolesFromUser() — elimina roles específicos, restringiendo el acceso cuando cambian las responsabilidades.
  • db.changeUserPassword() — restablece la contraseña de una cuenta mientras se mantieneping sus funciones intactas.
  • db.dropUser() — Elimina permanentemente a un usuario de la base de datos.

El siguiente ejemplo otorga un rol adicional, revoca otro, restablece una contraseña y, finalmente, elimina la cuenta:

// List all users in the current database
db.getUsers()

// Grant an additional role to an existing user
db.grantRolesToUser("Employeeadmin", [{ role: "readWrite", db: "Employee" }])

// Remove a role from a user
db.revokeRolesFromUser("Employeeadmin", [{ role: "userAdmin", db: "Employee" }])

// Change a user's password
db.changeUserPassword("Employeeadmin", "newPassword")

// Delete a user
db.dropUser("Employeeadmin")

Al ejecutar db.getUsers() nuevamente después de estas operaciones, se confirma que los cambios se aplicaron y que solo permanecen las cuentas y los roles previstos.

Mejores prácticas para MongoDB Gestión de usuarios

Las cuentas de usuario bien planificadas mantienen una MongoDB Implementación segura y fácil de auditar. Las siguientes prácticas reducen el riesgo de exposición accidental de datos y uso indebido de privilegios:

  • Aplicar el mínimo privilegio: Asigne únicamente los roles que una cuenta realmente necesita, priorizando los permisos de lectura y escritura en una sola base de datos sobre los roles administrativos generales.
  • Evitar el rooteo en producción: Reserva los roles de root y userAdminAnyDatabase para tareas de configuración y emergencia, en lugar de para operaciones diarias.
  • Habilitar la autenticación: Inicie el servidor con la opción –auth para que las credenciales se apliquen correctamente.
  • Utilice contraseñas seguras: Combina longitud y complejidad, y rota las contraseñas con db.changeUserPassword() según un cronograma.
  • Auditar periódicamente: RevConsulta periódicamente la salida de db.getUsers() y elimina las cuentas que ya no sean necesarias.

En conjunto, estos hábitos garantizan que cada cuenta se corresponda con una necesidad real y que el acceso pueda ser traced siempre que se realice una revisión de seguridad.

Preguntas Frecuentes

Sí. Los asistentes de IA pueden convertir una descripción simple en un comando db.createUser() válido, asignar el array de roles correcto y definir su ámbito para una base de datos. Siempre pruebe el comando generado en una base de datos que no sea de producción antes de ejecutarlo.

Sí. Las herramientas de auditoría basadas en IA pueden leer la salida de db.getUsers(), identificar las cuentas con privilegios de root o userAdminAnyDatabase y sugerir roles con privilegios mínimos. Aun así, los administradores deben revisar cada recomendación antes de revocar el acceso en un sistema en producción.

El rol userAdmin administra usuarios y roles en una base de datos específica, mientras que userAdminAnyDatabase otorga privilegios de administración de usuarios en todas las bases de datos de la instancia. Use userAdmin para un control limitado y userAdminAnyDatabase solo para administradores de confianza.

Cambie a la base de datos donde existe el usuario con el comando use, luego ejecute db.dropUser(“username”). MongoDB Elimina la cuenta y sus roles en esa base de datos. Confirma la eliminación ejecutando db.getUsers() posteriormente.

Resumir este post con: