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.*namespacelocal.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.
Roles incorporados de MongoDB Atlas
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.
Roles incorporados en la base de datos
MongoDB ofrece los siguientes roles incorporados en implementaciones autogestionadas:
Roles de usuario de base de datos y administración de bases de datos en bases de datos específicas
Todos los demás roles solo en la base de datos
admin
Roles de usuario de base de datos
Cada base de datos incluye los siguientes roles de cliente:
readOfrece 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 comandolistDatabasespara 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ónauthorizedDatabasessin especificar o establecida comotrue.
Roles de Administración de Bases de Datos
Cada base de datos incluye los siguientes roles de administración de bases de datos:
dbAdminProporciona 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:
ResourceAcciones permitidasTodas las colecciones que no son del sistema (es decir, recurso de base de datos)
dbOwnerEl 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,dbAdminyuserAdmin.
userAdminProporciona la capacidad de crear y modificar roles y usuarios en la base de datos actual. Dado que el rol
userAdminpermite 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 datosadmin, al clúster.El rol
userAdminbrinda 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 deuserAdminen la base de datosadmintiene implicancias de seguridad adicionales, ya que esto ofrece indirectamente acceso de superusuario a un clúster. Con el alcance deadmin, un usuario con el roluserAdminpuede otorgar roles o privilegios a nivel de clúster, incluyendouserAdminAnyDatabase.
Roles de administración de clústeres
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.
clusterAdminOfrece el acceso más completo para la gestión de clústeres. Este rol combina los privilegios concedidos por los roles
clusterManager,clusterMonitoryhostManager. Además, el rol ofrece la accióndropDatabase.
clusterManagerOtorga acciones de gestión y supervisión en el clúster. Un usuario con este rol puede acceder a las bases de datos
configylocal, que se utilizan para la partición y la replicación, respectivamente.ResourceAccionesTodo databases
clusterManagerproporciona privilegios adicionales para las bases de datosconfigylocal.En la base de datos
configpermite las siguientes acciones:ResourceAccionesTodas las colecciones que no son del sistema en la base de datos
configEn la base de datos
localpermite las siguientes acciones:ResourceAccionesTodas las colecciones que no son del sistema en la base de datos
localsystem.replsetColección
clusterMonitorOfrece 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
finden todas las coleccionessystem.profileen el clúster.En la base de datos
configpermite las siguientes acciones:ResourceAccionesTodas las colecciones que no son del sistema en la base de datos
configsystem.jsColecciónEn la base de datos
localpermite las siguientes acciones:ResourceAccionesTodas las colecciones que no son del sistema en la base de datos
localsystem.jscollection
enableShardingProporciona 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:
hostManagerProporciona la capacidad de supervisar y gestionar servidores.
En el clúster en su totalidad, otorga las siguientes acciones:
rotateCertificates(Nuevo en la versión 5.0)
En todas las bases de datos del clúster, otorga las siguientes acciones:
Roles de copia de seguridad y restauración
La base de datos admin incluye los siguientes roles para realizar copias de seguridad y restaurar datos:
backupOfrece 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
mongodumppara realizar una copia de seguridad de una instancia completa demongod.Otorga las acciones
insertyupdateen la colecciónsettingsde la base de datosconfig.En
anyResource, proporciona ellistDatabasesacciónlistCollectionsacciónlistIndexesacciónlistSearchIndexesacción
En el clúster en su conjunto, proporciona el
setUserWriteBlockMode(A partir de MongoDB 6.0)
Otorga la acción
finden lo siguiente:todas las colecciones que no son del sistema en el clúster, incluidas las de las bases de datos
configylocalLas siguientes colecciones del sistema en el clúster:
Las colecciones
admin.system.usersyadmin.system.rolesLa colección
config.settingsColecciones heredadas
system.usersde versiones de MongoDB anteriores a la 2.6
Otorga las acciones
insertyupdatesobre la colecciónconfig.settings.El rol
backupotorga privilegios adicionales para respaldar la colecciónsystem.profileque existe cuando se ejecuta con perfilado de base de datos.
restoreOtorga
convertToCappeden 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.profiley se ejecutamongorestoresin la opción--oplogReplay.Si los datos de la copia de seguridad incluyen datos de la colección
system.profileo si ejecutas con--oplogReplay, necesitas privilegios adicionales:system.profileSi los datos de copia de seguridad incluyen datos de la colección
system.profiley la base de datos de destino no contiene la colecciónsystem.profile,mongorestoreintenta crear la colección aunque el programa en realidad no restaura los documentossystem.profile. Por lo tanto, el usuario requiere privilegios adicionales para realizar las accionescreateCollectionyconvertToCappeden la colecciónsystem.profilede una base de datos.Tanto los roles incorporados
dbAdmincomodbAdminAnyDatabaseproporcionan los privilegios adicionales.--oplogReplayPara ejecutar con
--oplogReplay, crea un rol definido por el usuario que tengaanyActionenanyResource.Se concede solo a los usuarios que deben ejecutar
mongorestorecon--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
configylocal:Otorga las siguientes acciones en
admin.system.versionProporciona la siguiente acción en
admin.system.rolesProporciona las siguientes acciones en
admin.system.usersy colecciones heredadas desystem.users:Aunque
restoreincluye la capacidad de modificar los documentos en la colecciónadmin.system.usersmediante 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:dropCollection(A partir de MongoDB 6.0)
En el clúster en su totalidad, se otorgan las siguientes acciones:
bypassWriteBlockingMode(A partir de MongoDB 6.0)setUserWriteBlockMode(A partir de MongoDB 6.0)
Roles de base de datos globales
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:
readAnyDatabaseProporciona los mismos privilegios de solo lectura que
readen todas las bases de datos exceptolocalyconfig. El rol también proporciona la acciónlistDatabasesen el clúster en su totalidad.Consulta también los roles
clusterManageryclusterMonitorpara acceder a las bases de datosconfigylocal.
readWriteAnyDatabaseOtorga los mismos privilegios que
readWriteen todas las bases de datos exceptolocalyconfig. El rol también otorga:la acción
listDatabasesen el clúster en su totalidadla acción
compactStructuredEncryptionData
Consulta también los roles
clusterManageryclusterMonitorpara acceder a las bases de datosconfigylocal.
userAdminAnyDatabaseProporciona el mismo acceso a las operaciones de administración de usuarios que
userAdminen todas las bases de datos exceptolocalyconfig.userAdminAnyDatabasetambién otorga las siguientes acciones de privilegio en el clúster:El rol otorga las siguientes acciones de privilegio sobre las colecciones
system.usersysystem.rolesen la base de datosadmin, y en las colecciones heredadassystem.usersde versiones de MongoDB anteriores a la 2.6:El rol
userAdminAnyDatabaseno restringe los privilegios que un usuario puede conceder. Como resultado, los usuarios deuserAdminAnyDatabasepueden 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
clusterManageryclusterMonitorpara acceder a las bases de datosconfigylocal.
dbAdminAnyDatabaseOtorga los mismos privilegios que
dbAdminen todas las bases de datos exceptolocalyconfig. El rol también ofrece la acciónlistDatabasesen el clúster en su totalidad.Consulta también los roles
clusterManageryclusterMonitorpara acceder a las bases de datosconfigylocal.A partir de MongoDB 5.0,
dbAdminAnyDatabaseincluye la acción de privilegio applyOps.
Roles de superusuario
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 rol
dbOwner, cuando se delimita al ámbito de la base de datosadminel rol
userAdmin, cuando se delimita al ámbito de la base de datosadmin
El siguiente rol otorga privilegios completos sobre todos los recursos:
rootProporciona acceso a las operaciones y a todos los recursos de los siguientes roles combinados:
También proporciona la
validateacción de privilegio ensystem.colecciones.
Rol interno
__systemMongoDB 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 concedaanyActionenanyResourcey asegurarse de que solo los usuarios que necesitan acceso a estas operaciones tengan ese acceso.