Docs Menu
Docs Home
/ /
Usuarios de base de datos

Roles de funcionalidad incorporada

MongoDB otorga acceso a datos y comandos a través de Autorización basada en roles y roles integrados que proporcionan los diferentes niveles de acceso necesarios en un sistema de bases de datos. Además, se pueden crear roles definidos por el usuario.

Un rol otorga privilegios para realizar conjuntos de acciones sobre recursos definidos. Un rol determinado se aplica a la base de datos en la que está definido y puede otorgar acceso hasta un nivel de granularidad de colección.

Las Colecciones del sistema incluyen las de:

  • <database>.system.* namespace

  • local.replset.* namespace del set de réplicas

Para obtener más detalles, consultar System colecciones.

Colecciones ajenas al sistema son aquellas que no están en los namespaces de la lista anterior.

Cada uno de los roles integrados de MongoDB define el acceso a nivel de base de datos para todas las colecciones que no pertenecen al sistema en la base de datos del rol y a nivel de colección para todas las colecciones del sistema.

Esta sección describe los privilegios de cada rol incorporado. También puedes ver los privilegios de un rol incorporado en cualquier momento emitiendo el comando rolesInfo con los campos showPrivileges y showBuiltinRoles ambos establecidos en true.

Aunque los usuarios de base de datos en MongoDB Atlas tienen roles incorporados diferentes a los de las implementaciones autogestionadas, los roles incorporados para cada tipo de implementación se crean a partir del mismo conjunto de acciones de privilegios.

Para los roles de usuario de base de datos incorporados para implementaciones alojadas en MongoDB Atlas, consulta Roles y privilegios incorporados de Atlas.

Puedes crear usuarios de base de datos y asignar roles incorporados en la interfaz de usuario de MongoDB Atlas. Para obtener más información, consulta Agregar usuarios de base de datos.

MongoDB ofrece los siguientes roles incorporados en implementaciones autogestionadas:

Cada base de datos incluye los siguientes roles de cliente:

read

Ofrece la capacidad de leer datos en todas las colecciones que no son del sistema y en la colección system.js.

Nota

El rol no otorga privilegios para acceder directamente a la colección system.namespaces.

El rol otorga acceso de lectura al conceder las siguientes acciones:

Si el usuario no tiene la acción de privilegio listDatabases, los usuarios pueden ejecutar el comando listDatabases para devolver una lista de bases de datos para las que el usuario tiene privilegios (incluidas las bases de datos para las que el usuario tiene privilegios en colecciones específicas) si el comando se ejecuta con la opción authorizedDatabases sin especificar o establecida como true.

readWrite

Brinda todos los privilegios del rol read más la capacidad de modificar datos en todas las colecciones que no sean del sistema y en la colección system.js.

El rol otorga las siguientes acciones en esas colecciones:

Cada base de datos incluye los siguientes roles de administración de bases de datos:

dbAdmin

Proporciona la capacidad de realizar tareas administrativas, como tareas relacionadas con esquemas, la indexación y la recopilación de estadísticas. Este rol no otorga privilegios para la gestión de usuarios y roles.

Específicamente, el rol otorga los siguientes privilegios:

Resource
Acciones permitidas

Todas las colecciones que no son del sistema (es decir, recurso de base de datos)

dbOwner

El propietario de la base de datos puede realizar cualquier acción administrativa en la base de datos. Este rol combina los privilegios otorgados por los roles readWrite, dbAdmin y userAdmin.

userAdmin

Proporciona la capacidad de crear y modificar roles y usuarios en la base de datos actual. Dado que el rol userAdmin permite a los usuarios otorgar cualquier privilegio a cualquier usuario, incluidos ellos mismos, el rol también proporciona indirectamente acceso de superuser a la base de datos o, si está limitado al ámbito de la base de datos admin, al clúster.

El rol userAdmin brinda explícitamente las siguientes acciones:

Advertencia

Es importante comprender las implicancias de seguridad de otorgar el rol userAdmin: un usuario con este rol para una base de datos puede asignarse cualquier privilegio en esa base de datos. Conceder el rol de userAdmin en la base de datos admin tiene implicancias de seguridad adicionales, ya que esto ofrece indirectamente acceso de superusuario a un clúster. Con el alcance de admin, un usuario con el rol userAdmin puede otorgar roles o privilegios a nivel de clúster, incluyendo userAdminAnyDatabase.

La base de datos admin incluye los siguientes roles para la administración de todo el sistema en lugar de solo una base de datos. Estos roles incluyen, pero no se limitan a funciones administrativas de sets de réplicas y clústeres particionados.

clusterAdmin

Ofrece el acceso más completo para la gestión de clústeres. Este rol combina los privilegios concedidos por los roles clusterManager, clusterMonitor y hostManager. Además, el rol ofrece la acción dropDatabase.

clusterManager

Otorga acciones de gestión y supervisión en el clúster. Un usuario con este rol puede acceder a las bases de datos config y local, que se utilizan para la partición y la replicación, respectivamente.

En la base de datos config permite las siguientes acciones:

En la base de datos local permite las siguientes acciones:

clusterMonitor

Ofrece acceso de solo lectura a herramientas de supervisión, como MongoDB Cloud Manager y el agente de supervisión de Ops Manager.

Permite las siguientes acciones en el clúster en su totalidad:

Permite las siguientes acciones en todas las bases de datos del clúster:

Permite la acción find en todas las colecciones system.profile en el clúster.

En la base de datos config permite las siguientes acciones:

En la base de datos local permite las siguientes acciones:

enableSharding

Proporciona la capacidad de habilitar el particionado para una colección y modificar las claves de partición existentes.

Proporciona las siguientes acciones en todas las colecciones no del sistema:

hostManager

Proporciona la capacidad de supervisar y gestionar servidores.

En el clúster en su totalidad, otorga las siguientes acciones:

En todas las bases de datos del clúster, otorga las siguientes acciones:

La base de datos admin incluye los siguientes roles para realizar copias de seguridad y restaurar datos:

backup

Ofrece los privilegios mínimos necesarios para realizar una copia de seguridad de los datos. Este rol proporciona privilegios suficientes para usar el agente de copias de seguridad de MongoDB Cloud Manager, el agente de copias de seguridad de Ops Manager o para usar mongodump para realizar una copia de seguridad de una instancia completa de mongod.

Otorga las acciones insert y update en la colección settings de la base de datos config.

En anyResource, proporciona el

En el clúster en su conjunto, proporciona el

Otorga la acción find en lo siguiente:

Otorga las acciones insert y update sobre la colección config.settings.

El rol backup otorga privilegios adicionales para respaldar la colección system.profile que existe cuando se ejecuta con perfilado de base de datos.

restore

Otorga convertToCapped en colecciones que no son del sistema.

Ofrece los privilegios necesarios para restaurar datos de las copias de seguridad si no se incluyen datos de la colección system.profile y se ejecuta mongorestore sin la opción --oplogReplay.

Si los datos de la copia de seguridad incluyen datos de la colección system.profile o si ejecutas con --oplogReplay, necesitas privilegios adicionales:

system.profile

Si los datos de copia de seguridad incluyen datos de la colección system.profile y la base de datos de destino no contiene la colección system.profile, mongorestore intenta crear la colección aunque el programa en realidad no restaura los documentos system.profile. Por lo tanto, el usuario requiere privilegios adicionales para realizar las acciones createCollection y convertToCapped en la colección system.profile de una base de datos.

Tanto los roles incorporados dbAdmin como dbAdminAnyDatabase proporcionan los privilegios adicionales.

--oplogReplay

Para ejecutar con --oplogReplay, crea un rol definido por el usuario que tenga anyAction en anyResource.

Se concede solo a los usuarios que deben ejecutar mongorestore con --oplogReplay.

Otorga la siguiente acción en el clúster en su totalidad:

Otorga las siguientes acciones en todas las colecciones que no son del sistema:

Otorga las siguientes acciones en la colección system.js:

Otorga la siguiente acción en anyResource:

Otorga las siguientes acciones en todas las colecciones que no son del sistema en las bases de datos config y local:

Otorga las siguientes acciones en admin.system.version

Proporciona la siguiente acción en admin.system.roles

Proporciona las siguientes acciones en admin.system.users y colecciones heredadas de system.users:

Aunque restore incluye la capacidad de modificar los documentos en la colección admin.system.users mediante operaciones de modificación normales, solo modifica estos datos utilizando los métodos de gestión de usuarios.

Proporciona la siguiente acción en la colección <database>.system.views:

En el clúster en su totalidad, se otorgan las siguientes acciones:

Los siguientes roles están disponibles en la base de datos admin y otorgan privilegios que se aplican a todas las bases de datos excepto local y config:

readAnyDatabase

Proporciona los mismos privilegios de solo lectura que read en todas las bases de datos excepto local y config. El rol también proporciona la acción listDatabases en el clúster en su totalidad.

Consulta también los roles clusterManager y clusterMonitor para acceder a las bases de datos config y local.

readWriteAnyDatabase

Otorga los mismos privilegios que readWrite en todas las bases de datos excepto local y config. El rol también otorga:

Consulta también los roles clusterManager y clusterMonitor para acceder a las bases de datos config y local.

userAdminAnyDatabase

Proporciona el mismo acceso a las operaciones de administración de usuarios que userAdmin en todas las bases de datos excepto local y config.

userAdminAnyDatabase también otorga las siguientes acciones de privilegio en el clúster:

El rol otorga las siguientes acciones de privilegio sobre las colecciones system.users y system.roles en la base de datos admin, y en las colecciones heredadas system.users de versiones de MongoDB anteriores a la 2.6:

El rol userAdminAnyDatabase no restringe los privilegios que un usuario puede conceder. Como resultado, los usuarios de userAdminAnyDatabase pueden concederse a sí mismos privilegios que exceden sus privilegios actuales e incluso pueden concederse todos los privilegios, a pesar de que el rol no autoriza explícitamente privilegios más allá de la administración de usuarios. Este rol es efectivamente un superusuario del sistema MongoDB.

Consulta también los roles clusterManager y clusterMonitor para acceder a las bases de datos config y local.

dbAdminAnyDatabase

Otorga los mismos privilegios que dbAdmin en todas las bases de datos excepto local y config. El rol también ofrece la acción listDatabases en el clúster en su totalidad.

Consulta también los roles clusterManager y clusterMonitor para acceder a las bases de datos config y local.

A partir de MongoDB 5.0, dbAdminAnyDatabase incluye la acción de privilegio applyOps.

Varios roles brindan acceso de superusuario, ya sea indirecto o directo, en todo el sistema.

Los siguientes roles proporcionan la capacidad de asignar a cualquier usuario cualquier privilegio en cualquier base de datos, lo que significa que los usuarios con uno de estos roles pueden asignarse a sí mismos cualquier privilegio en cualquier base de datos:

El siguiente rol otorga privilegios completos sobre todos los recursos:

root

Proporciona acceso a las operaciones y a todos los recursos de los siguientes roles combinados:

También proporciona la validate acción de privilegio en system. colecciones.

Cambiado en la versión 6.0: El rol root incluye find y remove privilegios en la colección system.preimages en la base de datos config.

__system

MongoDB asigna este rol a objetos de usuario que representan a los miembros del clúster, como los miembros del set de réplicas y las instancias de mongos. El rol otorga a su titular el derecho de realizar cualquier acción contra cualquier objeto en la base de datos.

No se debe asignar este rol a objetos de usuario que representen aplicaciones o administradores humanos, salvo en circunstancias excepcionales.

Si se necesita acceso a todas las acciones en todos los recursos, por ejemplo, para ejecutar comandos applyOps, no se debe asignar este rol. En su lugar, se debe crear un rol definido por el usuario que conceda anyAction en anyResource y asegurarse de que solo los usuarios que necesitan acceso a estas operaciones tengan ese acceso.

Volver

Usuarios de base de datos

En esta página