Crear usuario y agregar rol en MongoDB

En MongoDB, podemos crear nuevos usuarios para la base de datos. Cada usuario de MongoDB solo accede a los datos que se requieren para su rol. Un rol en MongoDB otorga privilegios para realizar un conjunto de operaciones en un recurso determinado. En MongoDB, los usuarios se crean utilizando el método createUser(). Este método crea un nuevo usuario para la base de datos, si el usuario especificado ya está presente en la base de datos, este método devolverá un error.

Sintaxis:

 db.createUser(usuario, escribirPreocupación)

Parámetros: 

1. usuario: Contiene información de autenticación y acceso sobre el usuario a crear. es un documento

  • usuario: Nombre del usuario
  • pwd: Contraseña de usuario. Este campo no es necesario si usa este método en una base de datos $externa para crear un usuario cuyas credenciales se almacenan externamente. El valor de este campo puede ser de tipo string o passwordPrompt().
  • customData: información asociativa del usuario. Es un campo opcional.
  • roles : Nivel de acceso o Privilegio de un usuario. También puede crear un usuario sin roles pasando una array vacía []. En este campo, utiliza funciones integradas o puede crear su propia función mediante el método db.createRole(role, writeConcern) . Para especificar los roles, puede usar cualquiera de las siguientes sintaxis:

Simplemente especifique el nombre del rol:

 «leer»

O puede especificar un documento que contenga los campos rol y db. Generalmente se usa cuando el rol se especifica en una base de datos diferente.

{función:<función>, db: <base de datos>}

  • authenticationRestrictions: Permiso de autenticación del usuario. Es un campo opcional.
  • mecanismos: Se utiliza para especificar los mecanismos SCRM o mecanismos para crear credenciales de usuario SCRM. Es un campo opcional.
  • passwordDigestor: Se utiliza para comprobar si el servidor o el cliente digieren la contraseña. Es un campo opcional.

2. writeConcern: Es un parámetro opcional. Gestiona el nivel de Preocupación de escritura para la operación de creación. Toma el mismo campo que toma el comando getLastError. 

Notas:

  • En MongoDB, el primer usuario creado en la base de datos debe ser el usuario administrador. El usuario administrador tiene los privilegios para mantener a todos los usuarios. Además, no puede crear usuarios en la base de datos local.
  • db.createUser() envía la contraseña y todos los demás datos a la instancia de MongoDB sin ningún tipo de cifrado. Para cifrar la contraseña durante la transmisión, utilice TLS/SSL para cifrarla.

¿Cómo crear un usuario administrativo?

En MongoDB, puede crear un usuario administrativo utilizando el método createUser(). En este método, podemos crear el nombre, la contraseña y las funciones de un usuario administrativo. Analicemos este concepto con la ayuda de un ejemplo:

Ejemplo:

En este ejemplo, vamos a crear un usuario administrativo en la base de datos de administración y le damos al usuario acceso de lectura y escritura a la base de datos de configuración, lo que le permite cambiar ciertas configuraciones para los clústeres fragmentados.

db.createUser(
{ 
 user: "hello_admin",
 pwd:  "hello123",
 roles:
 [
 { role:"readWrite",db:"config"},
 "clusterAdmin"
 ] } );

Entonces, para crear un usuario administrativo, primero usamos la base de datos de administración. En esta base de datos, creamos un usuario administrador usando el método createUser(). En este método, establecemos que el nombre de usuario es «hello_admin», la contraseña es «hello123» y las funciones del usuario administrador son readWrite, config, clusterAdmin. 

¿Cómo crear un usuario normal sin roles?

En MongoDB, podemos crear un usuario sin ningún rol especificando una array vacía[] en el campo de rol en el método createUser().

Sintaxis:

db.createUser({ usuario:”User_Name”, pwd:”Your_Password”, roles:[]});

Analicemos este concepto con la ayuda de un ejemplo:

Ejemplo:

En el siguiente ejemplo, vamos a crear un usuario sin roles.

db.createUser({user:"geeks", pwd: "computer", roles:[]});

Aquí, estamos trabajando en la base de datos » ejemplo » y creamos un usuario llamado «geeks» sin roles.

¿Cómo crear un usuario con algunos roles específicos?

En MongoDB, podemos crear un usuario con algunos roles específicos utilizando el método createUser(). En este método, podemos especificar los roles que el usuario hará después de crear. Analicemos este concepto con la ayuda de un ejemplo:

Ejemplo:

En este ejemplo, vamos a crear un usuario con algunos roles específicos.

db.createUser(
...{
...user: "new_one_role",
...pwd: with_roles",
...roles:["readWrite", "dbAdmin"]
...}
...);

Aquí, creamos un usuario cuyo nombre es «new_one_role», la contraseña es «with_roles» y los roles especificados son:

  • Rol de lectura y escritura: este rol proporciona todos los privilegios del rol de lectura más la capacidad de modificar datos en todas las colecciones que no son del sistema.
  • Rol dbAdmin: este rol otorga al usuario la capacidad de realizar tareas administrativas, como tareas relacionadas con esquemas, indexación. No otorga privilegios para la Gestión de Usuarios y Roles.

¿Cómo crear un usuario para una sola base de datos?

En MongoDB, también podemos crear un usuario para una sola base de datos utilizando el método createUser(). Analicemos este concepto con la ayuda de un ejemplo:

Ejemplo:

db.createUser(
{
user: "robert",
pwd:  "hellojose",
roles:[{role: "userAdmin" , db:"example"}]})

Aquí, creamos un usuario cuyo nombre de usuario es «Robert», la contraseña es «hellojose», y asignamos un rol para el usuario que en este caso debe ser un administrador de la base de datos, por lo que se asigna al rol «userAdmin». Este rol le permitirá al usuario tener privilegios administrativos solo en la base de datos especificada en la opción db, es decir, «ejemplo».

¿Cómo crear un usuario con restricciones de autenticación?

En MongoDB, la autenticación es un proceso que comprueba si el usuario/cliente que intenta acceder a la base de datos es conocido o desconocido. Si se conoce al usuario, entonces les permite conectarse con el servidor. También podemos crear un usuario con restricciones de autenticación utilizando el método createUser() estableciendo el valor del campo autenticaciónRestrictions. Este campo proporciona permiso de autenticación del usuario y contiene los siguientes campos:

  • clientSource: si el valor de este campo está presente, entonces cuando un usuario se autentica, el servidor verifica la IP del cliente al verificar la dirección IP en la lista dada o el rango CIDR en la lista. Si la IP del cliente está presente en la lista, el servidor autenticará al cliente o, de lo contrario, el servidor no autenticará al usuario.
  • serverAddress: Es una lista de direcciones IP o rangos CIDR a los que el cliente puede conectarse. Si el valor de este campo está presente en la lista, el servidor verifica la conexión del cliente y, si la conexión se estableció a través de una dirección IP no reconocida, el servidor no autentica al usuario.

Analicemos este concepto con la ayuda de un ejemplo:

Ejemplo:

En este ejemplo, vamos a crear un usuario con restricciones de autenticación:

use admin
db.createUser(
   {
     user: "restrict",
     pwd: passwordPrompt(),      
     roles: [ { role: "readWrite", db: "example" } ],
     authenticationRestrictions: [ {
        clientSource: ["192.168.65.10"],
        serverAddress: ["198.157.56.0"]
     } ]
   }
)

Aquí creamos un usuario llamado «restringir» en la base de datos de administración. Por lo tanto, este usuario solo puede autenticarse si se conecta desde la dirección IP 192.168.65.10 a esta dirección IP del servidor 198.157.56.0 .

¿Cómo dar de baja a un usuario?

En Mongodb, también podemos eliminar a un usuario usando el método dropUser(). Este método devuelve verdadero cuando se elimina el usuario; de lo contrario, devuelve falso.

Sintaxis:

db.dropUser(“Nombre de usuario”)

Ejemplo:

En este ejemplo, eliminaremos un usuario cuyo nombre es Robert.

db.dropUser("robert")

Publicación traducida automáticamente

Artículo escrito por nishanthec19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *