La colecci贸n system.roles de la base de datos admin almacena los roles definidos por el usuario. Para crear y administrar estos roles, MongoDB proporciona comandos de gesti贸n de roles.
system.roles Esquema
Los documentos de la colecci贸n system.roles tienen el siguiente esquema:
{ _id: <system-defined id>, role: "<role name>", db: "<database>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], roles: [ { role: "<role name>", db: "<database>" }, ... ] }
Un documento system.roles tiene los siguientes campos:
admin.system.roles.roleEl
rolecampo es una cadena que especifica el nombre del rol.
admin.system.roles.dbEl campo es una cadena que especifica la base de datos a la que pertenece
dbroleel rol. MongoDB identifica de forma 煤nica cada rol mediante la combinaci贸n de su nombre (es decir,) y su base de datos.
admin.system.roles.privilegesLa matriz contiene
privilegeslos documentos de privilegios que definen los privilegios para el rol.Un documento de privilegio tiene la siguiente sintaxis:
{ resource: { <resource> }, actions: [ "<action>", ... ] } Cada documento de privilegio tiene los siguientes campos:
admin.system.roles.privileges[n].resourceUn documento que especifica los recursos a los que se
actionsaplica el privilegio. El documento tiene uno de los siguientes formatos:{ db: <database>, collection: <collection> } or
{ cluster : true } Consulte el documento de recursos sobre implementaciones autogestionadas para obtener m谩s detalles.
admin.system.roles.privileges[n].actionsConjunto de acciones permitidas en el recurso. Para ver la lista de acciones, consulte Acciones de privilegios.
admin.system.roles.rolesLa matriz contiene documentos de roles que
rolesespecifican los roles de los cuales este rol hereda privilegios.Un documento de rol tiene la siguiente sintaxis:
{ role: "<role name>", db: "<database>" } Un documento de rol tiene los siguientes campos:
admin.system.roles.roles[n].roleEl nombre del rol. Un rol puede ser un rol integrado proporcionado por MongoDB o un rol definido por el usuario.
Ejemplos
Considere los siguientes documentos de muestra que se encuentran en la colecci贸n system.roles de la base de datos admin.
Un rol definido por el usuario especifica privilegios
El siguiente es un documento de muestra para un rol definido por el usuario appUser definido para la base de datos myApp:
{ _id: "myApp.appUser", role: "appUser", db: "myApp", privileges: [ { resource: { db: "myApp" , collection: "" }, actions: [ "find", "createCollection", "dbStats", "collStats" ] }, { resource: { db: "myApp", collection: "logs" }, actions: [ "insert" ] }, { resource: { db: "myApp", collection: "data" }, actions: [ "insert", "update", "remove", "compact" ] }, { resource: { db: "myApp", collection: "system.js" }, actions: [ "find" ] }, ], roles: [] }
La matriz privileges enumera los cinco privilegios que especifica el rol appUser:
El primer privilegio permite sus acciones
"find""createCollection""dbStats""collStats"(,,,) en todas las colecciones de lamyAppbase de datos, excepto las colecciones del sistema. Consulte Especificar una base de datos como recurso.Los dos siguientes privilegios permiten realizar acciones adicionales en colecciones espec铆ficas,
logsdatay, de lamyAppbase de datos. Consulte Especificar una colecci贸n de una base de datos como recurso.El 煤ltimo privilegio permite realizar acciones en una colecci贸n del sistema de la
myAppbase de datos. Si bien el primer privilegio otorga permiso a toda la base de datos para lafindacci贸n, esta no se aplica a lasmyAppcolecciones del sistema de. Para otorgar acceso a una colecci贸n del sistema, un privilegio debe especificarla expl铆citamente. Consulte el documento de recursos sobre implementaciones autogestionadas.
Como lo indica la matriz roles vac铆a, appUser no hereda privilegios adicionales de otros roles.
El rol definido por el usuario hereda de otros roles
El siguiente es un documento de ejemplo para un rol definido por el usuario appAdmin definido para la base de datos myApp: El documento muestra que el rol appAdmin especifica privilegios e incluso hereda privilegios de otros roles:
{ _id: "myApp.appAdmin", role: "appAdmin", db: "myApp", privileges: [ { resource: { db: "myApp", collection: "" }, actions: [ "insert", "dbStats", "collStats", "compact" ] } ], roles: [ { role: "appUser", db: "myApp" } ] }
La privileges matriz enumera los privilegios que appAdmin especifica el rol. Este rol tiene un 煤nico privilegio que permite sus acciones"insert" "dbStats""collStats""compact"(,,,) en todas las colecciones de la myApp base de datos, excepto las colecciones del sistema. Consulte Especificar una base de datos como recurso.
La matriz roles enumera los roles, identificados por los nombres de roles y las bases de datos, de los cuales el rol appAdmin hereda privilegios.