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

Una descripción general de la gestión de usuarios de MongoDB

La administración de usuarios de la base de datos es una parte particularmente importante de la seguridad de los datos, ya que debemos comprender quién accede a la base de datos y establecer los derechos de acceso de cada usuario. Si una base de datos no tiene una gestión de usuarios adecuada, el acceso de los usuarios se volverá muy complicado y difícil de mantener con el paso del tiempo.

MongoDB es una base de datos NoSQL y un almacén de documentos. La aplicación del concepto RBAC (Control de acceso basado en roles) es clave para implementar una administración de usuarios adecuada para administrar las credenciales de los usuarios.

¿Qué es el control de acceso basado en funciones (RBAC)?

RBAC es un enfoque que restringe el sistema solo a usuarios autorizados. En una organización se crean roles para varias funciones laborales, en la base de datos luego se crean los derechos de acceso para realizar algunas operaciones asignadas a un rol en particular.

A los miembros del personal (u otros usuarios del sistema) se les asignan ciertos roles y, a través de ellos, se les asignan permisos para realizar funciones del sistema informático. Los usuarios no reciben permisos directamente, sino que solo los obtienen a través de su rol (o roles). Administrar los derechos de los usuarios individuales se convierte en una cuestión de simplemente colocar el rol apropiado en la cuenta del usuario; esto simplifica las operaciones generales (como agregar usuarios o cambiar departamentos de usuarios).

Se establecen tres reglas principales para RBAC:

  • Asignación de roles :Un sujeto puede ejecutar permisos solo si el sujeto ha sido elegido o se le ha asignado un rol.
  • La función de la autorización :el papel activo de un sujeto debe ser autorizado para el sujeto. Con la regla 1 anterior, esta regla garantiza que los usuarios puedan asumir roles solo para aquellos que están autorizados.
  • Autorización de permiso :Un sujeto puede ejecutar permisos solo si el permiso está autorizado para el rol activo del sujeto. Con las reglas 1 y 2, esta regla garantiza que los usuarios puedan ejercer el permiso solo para aquellos que están autorizados.

Este blog revisará brevemente el control de acceso basado en roles en la base de datos de MongoDB.

Funciones de usuario de MongoDB

MongoDB tiene varios tipos de roles en la base de datos, esos son...

Funciones integradas

Proporciona acceso a datos y acciones a MongoDB mediante autorización basada en roles y tiene roles integrados que brindan varios niveles de acceso en la base de datos.

Role otorga varios privilegios para hacer algo en el recurso que se ha creado. Los roles integrados de MongoDB tienen varias categorías:

  • Base de datos de usuarios :Roles Los usuarios de la base de datos tienen un rol para manipular datos en la recopilación que no es del sistema. Ejemplos de funciones de la base de datos de usuario son:leer, leer y escribir.
  • Administración de la base de datos :Roles La administración de la base de datos se ocupa de la gestión administrativa de las bases de datos, como la administración de usuarios, el esquema y los objetos que contiene.
  • Ejemplos de roles de administración de base de datos son:dbAdmin, userAdmin, dbOwner.
  • Administración de clústeres :La función de la administración del clúster es administrar todo el sistema MongoDB, incluidos sus conjuntos de réplicas y fragmentos. Ejemplos de roles de administración de clústeres son:clusterAdmin, clusterManager.
  • Copia de seguridad y restauración :este rol es específico para las funciones relacionadas con la copia de seguridad de la base de datos en MongoDB. Ejemplos de funciones son:copia de seguridad, restauración.
  • Roles de todas las bases de datos :Los roles están en el administrador de la base de datos y tienen acceso a todas las bases de datos excepto local y config. Los ejemplos son:readAnyDatabase, readWriteAnyDatabase, userAdminAnyDatabase.
  • Superusuario :Roles tiene la capacidad de otorgar acceso a todos los usuarios, a todos los privilegios, en todas las bases de datos. Ejemplo de este rol:root

Roles definidos por el usuario

Además de los roles incorporados, podemos crear nuestros propios roles según nuestras necesidades, qué privilegios le daremos a esos roles. Para crear roles, puede usar el comando de función db.createRole (). Además de poder crear roles, hay varias otras funciones para administrar roles existentes, como:db.dropRole () que es útil para eliminar roles existentes en la base de datos, db.getRole () funciones para obtener toda la información de roles específicos. /P>

Acciones de privilegio en MongoDB

Las acciones de privilegios en MongoDB son acciones que puede realizar un usuario en un recurso. MongoDB tiene varias categorías de acción, a saber:

  • Acciones de administración de bases de datos, acciones relacionadas con comandos relacionados con la administración de bases de datos, como las acciones changePassword, createCollection, createIndex.
  • Acciones de consulta y escritura, acciones relacionadas con la ejecución de la manipulación de datos en una colección. Por ejemplo, en la acción de inserción, el comando que se puede ejecutar en esa acción es el comando de inserción que se puede insertar en los documentos.
  • Acciones de gestión de implementación, acciones relacionadas con cambios en la configuración de la base de datos. Algunas acciones que se incluyen en la categoría Gestión de implementación son cpuProfiler, storageDetails, killOp.
  • Acciones de replicación, acciones relacionadas con la ejecución de recursos de replicación de base de datos como replSetConfigure, replSetHeartbeat.
  • Acciones de administración del servidor, acciones relacionadas con los comandos de los recursos de administración del servidor en mongoDB, como las acciones logrotate que se utilizan para rotar las bases de datos de registro a nivel del sistema operativo.
  • Acciones de fragmentación, acciones relacionadas con comandos de bases de datos de fragmentación de bases de datos como addShard para agregar nuevos nodos de fragmentación.
  • Acciones de sesión, acciones relacionadas con sesiones de recursos en una base de datos como listSessions, killAnySession.
  • Acciones de diagnóstico, acciones relacionadas con el diagnóstico de recursos como dbStats para conocer las últimas condiciones en la base de datos.
  • Acciones de Monitoreo Gratuitas, acciones relacionadas con el monitoreo en la base de datos.

Gestión de usuarios y funciones de MongoDB

Puede crear un usuario y luego asignarle funciones integradas, por ejemplo, de la siguiente manera:

db.createUser( {

user: "admin",

pwd: "thisIspasswordforAdmin",

roles: [ { role: "root", db: "admin" } ]

} );

En la secuencia de comandos anterior, lo que significa que el usuario administrador se creará con una contraseña que se ha definido con funciones raíz integradas, donde la función se incluye en la categoría Superusuario.

Además de eso, puede asignar más de un rol a un usuario, aquí hay un ejemplo:

db.createUser(

{user:'businessintelligence', 

pwd:'BIpassw0rd', 

roles:[{'role':'read', 'db':'oltp'}, { 'role':'readWrite', 'db':'olapdb'}]

});

Los usuarios de Business Intelligence tienen 2 roles, primero los roles de lectura en la base de datos oltp y los roles de lectura y escritura en la base de datos olapdb.

La creación de funciones definidas por el usuario puede utilizar el comando db.createRole(). Debe determinar el propósito de crear el rol para poder determinar qué acciones habrá en ese rol. El siguiente es un ejemplo de creación de un rol para monitorear la base de datos Mongodb:

use admin

db.createRole(

   {

     role: "RoleMonitoring",

     privileges: [

       { resource: { cluster: true }, actions: [ "serverStatus" ] }

     ],

     roles: []

   }

)

Luego podemos asignar el rol definido por el usuario al usuario que vamos a crear, podemos usar el siguiente comando:

db.createUser( {

user: "monuser",

pwd: "thisIspasswordforMonitoring",

roles: [ { role: "RoleMonitoring", db: "admin" } ]

} );

Mientras tanto, para asignar el rol a un usuario existente, puede usar el siguiente comando:

db.grantRolesToUser(

    "existingmonuser",

    [

      { role: "RoleMonitoring", db: "admin" }

    ]

)

Para revocar un usuario existente de un rol, puede usar el siguiente comando:

db.revokeRolesFromUser(

    "oldmonguser",

    [

      { role: "RoleMonitoring", db: "admin" }

    ]

)

Al usar roles definidos por el usuario, podemos crear roles como deseemos de acuerdo con las acciones que tomaremos en esos roles, como roles para restringir que los usuarios solo puedan eliminar filas en ciertas bases de datos.

Conclusión

La aplicación de derechos de acceso puede mejorar la seguridad. La asignación de funciones y usuarios en la base de datos facilita la administración del acceso de los usuarios.

Asegúrese de que toda esta información sobre roles y derechos esté documentada correctamente con acceso restringido al documento. Esto lo ayuda a compartir la información con otros DBA o personal de soporte y es útil para auditorías y solución de problemas.