sql >> Base de Datos >  >> NoSQL >> MongoDB

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

MongoDB es una base de datos multiplataforma orientada a documentos que hace que el almacenamiento y la recuperación de datos sean rápidos y fáciles. La base de datos utiliza una estructura similar a JSON para los documentos, principalmente familiar para las aplicaciones modernas.

MongoDB usa colecciones y manuscritos en los que los documentos consisten en pares clave-valor, la unidad básica de datos en MongoDB. Por el contrario, las colecciones contienen funciones y documentos equivalentes a tablas de bases de datos relacionales.

Crear un nuevo usuario en MongoDB

Para agregar nuevos usuarios al sistema, MongoDB proporciona una técnica interna conocida como db.createUser(). A diferencia de los sistemas de bases de datos tradicionales, los usuarios de MongoDB están vinculados a una base de datos local denominada base de datos de autenticación. Por lo tanto, no están vinculados globalmente, como las bases de datos SQL convencionales.

Además, la base de datos de autenticación y el nombre del usuario sirven como un identificador único. Por lo tanto, si se crean dos usuarios en diferentes bases de datos pero comparten los mismos nombres, se identifican como dos usuarios separados. Por lo tanto, si desea crear un solo usuario con permisos en varias bases de datos, debe permitir que un solo usuario tenga derechos/roles en la base de datos aplicable en lugar de crear el usuario varias veces en diferentes bases de datos.

Ejemplo:

db.createUser(

{       user: "Foss",

        pwd: "password",

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

Comandos de gestión de usuarios

Nombre/s Descripción
createUser Este método crea un nuevo usuario.
dropAllUsersFromDatabase Elimina todos los usuarios de una base de datos.
dropUser Otorga una tarea y sus privilegios a un usuario.
grantRolesToUser Un rol y sus privilegios asociados se asignan a un usuario.
revocarRolesFromUser Elimina la función de un usuario.
actualizarUsuario Este método se utiliza para actualizar los datos de un usuario.
usersInfo Este método devuelve información sobre los usuarios proporcionados.

Agregar un usuario

Al agregar el usuario a una base de datos específica, use el método "db.createUser()". Es importante tener en cuenta que agregar usuarios con opciones es mucho más simple que insertar un documento de usuario en una base de datos no relacional.

Ejemplo:

use foss               // specify the DB

db.createUser(

  {

    user: "fosslinux",

    pwd: passwordPrompt(),  // or cleartext password if you wish

    roles: [

       { role: "read", db: "foss" },

       { role: "read", db: "articles" },

       { role: "read", db: "tutorials" },

       { role: "readWrite", db: "tutorialguides" }

    ]

  }

)

Una vez que haya conectado la instancia de MongoDB en el ejemplo anterior, puede adjuntarla a la base de datos de foss para ejecutar el comando db.createUser(). La base de datos utilizada actuará como la base de datos de autenticación del usuario.

La contraseña y el nombre de usuario se proporcionan en el documento que contiene nuestra llamada al método como pares clave-valor. El uso de roles controla el acceso a las bases de datos. Un usuario debe tener un rol para acceder a cualquier base de datos, incluso a su propia base de datos de autenticación. Además, un usuario tiene acceso a otras bases de datos en el sistema mediante roles. Por lo tanto, los privilegios de un usuario no se limitan a su base de datos de autenticación. Por lo tanto, esto permite a los usuarios tener varios privilegios en muchas bases de datos según sea necesario. El principio del privilegio mínimo permite a los usuarios mantener el alcance de acceso a la base de datos lo más pequeño posible.‍

Cómo crear un usuario administrador en MongoDB

La creación de un usuario administrador en MongoDB se realiza mediante el método db.createUser(), que le permite crear un usuario. Sin embargo, después de crear un usuario, debe asignar funciones de administrador. Estos roles otorgan al usuario privilegios de administrador.

Crear un usuario para una única base de datos en MongoDB

Si queremos crear un usuario que solo pueda trabajar con una base de datos, podemos usar un comando similar al anterior, pero debemos usar la opción "userAdmin" solo una vez.

Ejemplo:

db.createUser(

{        user: "Fosslinux",

         pwd: "password",

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

Desglose del código:

  1. En primer lugar, se debe especificar el "nombre de usuario" y la "contraseña" que se crearán.
  2. Asigne el rol para ese usuario, que es el administrador de la base de datos; esto se asigna a la función de "administrador de usuario" ya que la función le permite al usuario tener privilegios administrativos solo para la base de datos especificada en la base de datos
  3. Finalmente, el parámetro DB establece la base de datos sobre la cual el usuario debe tener derechos administrativos.

Administración de usuarios

Para administrar usuarios, es necesario comprender los roles que deben definirse, ya que MongoDB tiene una lista completa de funciones como el rol de lectura y el rol de lectura y escritura. El comando "read role" solo permite el acceso de solo lectura a las bases de datos. El "rol de lectura y escritura" proporciona acceso de lectura y escritura a la base de datos; esto significa que el usuario puede ejecutar los comandos de actualización, inserción y eliminación en las colecciones de esa base de datos.

Ejemplo:

db.createUser(
{
            user: "Foss",

            pwd: "password",

            roles:[

            {
                        role: "read" , db:"Tutorials"},

    {
                        role: "readWrite" , db:"Guides"}

            }
                          ]
})

El ejemplo anterior muestra que se crea un usuario conocido como Foss y se le asignan varios roles en varias bases de datos. En el mismo modelo, a Foss se le otorga permiso de solo lectura en la base de datos de "Tutoriales" y permisos de lectura y escritura en la base de datos de "Guías".

Agregar roles a MongoDB

Los roles otorgan a los usuarios acceso a los recursos de MongoDB. Además, MongoDB proporciona varios roles integrados que permiten a los administradores controlar el acceso a un sistema MongoDB. Sin embargo, cuando estos roles no pueden describir el conjunto de privilegios deseado, se pueden crear nuevos roles en una base de datos particular. A excepción de las funciones creadas en la base de datos de administración, una función solo puede incluir derechos que se aplican a su base de datos y los heredados de otras funciones.

Una función definida en la base de datos de administración puede contener derechos aplicables a la base de datos de administración, a otras bases de datos o al recurso del clúster, y puede heredar funciones de otras bases de datos. Para establecer un nuevo rol, use "db.createRole()" y especifique la matriz de derechos y la matriz de roles heredados.

MongoDB define roles de manera única al combinar el nombre de la base de datos con el nombre del rol. Cada función tiene como ámbito la base de datos que crea, pero MongoDB almacena toda la información de la función en la colección adminSystemRoles en la base de datos de administración. Por ejemplo, las acciones de roles creativos y otorgar roles en el recurso de la base de datos deben garantizar que los roles se creen y se otorguen en la base de datos. grantRole especifica los privilegios para los nuevos roles y los roles que se heredarán. El usuario AdminAnyDatabase y el administrador de usuarios de funciones integradas proporcionan CreateRole y otorgan acciones de funciones en sus respectivos recursos.

Para crear un rol con las restricciones de autenticación especificadas, se debe establecer la acción AuthenticationRetrictions en el recurso de la base de datos, y luego se crea la función.

El método db.grantRole to User () toma los siguientes argumentos;

Parámetro Tipo Descripción
Usuario Cadena Conlleva el nombre del Usuario al que se otorgan los roles.
Roles Matriz Implica una serie de roles adicionales para otorgar al Usuario.
Escribir preocupación Documento Es opcional y tiene como objetivo la modificación del comando. También toma los mismos campos con el comando obtener el último error.

El parámetro roles puede especificar funciones definidas por el usuario e integradas, lo que se puede lograr seleccionando el rol con su nombre. Esto se logra conectándose a mongod (un proceso daemon primario para el sistema MongoDB que maneja las solicitudes de datos, realiza operaciones de administración en segundo plano y administra el acceso a los datos). Alternativamente, mongos (que es responsable de establecer una conexión entre las aplicaciones cliente y el clúster fragmentado), con los derechos que se indican en la sección de requisitos. Por ejemplo, mi administrador de usuario creado en un control de acceso habilitado puede crear roles en el administrador y otras bases de datos.

Comandos de gestión de roles

Nombre\s Descripción
createRole Crea un rol y dice lo que puede hacer.
dropRole Elimina el rol establecido por el usuario.
dropAllRolesFromDatabase Elimina todos los roles que configuraron los usuarios de una base de datos.
grantPrivilegesToRole asigna privilegios a un rol que el usuario elige.
grantRolesToRole indica de qué roles puede heredar privilegios un rol definido por el usuario.
invalidateUserCache Cuando utiliza invalidateUserCache, la memoria caché de la información del usuario, como credenciales y funciones, se vacía.
revocarPrivilegiosDeRol elimina los privilegios de un rol definido por el usuario que los tiene.
revocarRolesFromRole elimina los roles heredados de un rol definido por el usuario que no desea.
rolesInfo devuelve información sobre el rol o los roles que desea.
updateRole Actualiza un rol que fue configurado por el usuario.

Conclusión

La base de datos MongoDB, que permite que el almacenamiento y la recuperación de datos sean fáciles y rápidos, puede permitirle crear un usuario usando el comando "db.createUser()". Por otro lado, el comando "AdminAnyDatabase" proporciona a los usuarios todos los privilegios para acceder a la base de datos bajo la función de administrador. Este artículo ha ido más allá e ilustra cómo otorgar roles y derechos. Esperamos que lo encuentre útil. En caso afirmativo, no olvide dejar un comentario en la sección de comentarios a continuación.