Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Referencia
/ / / /

system.roles Colección en implementaciones autogestionadas

La colección system.roles en la base de datos admin almacena los roles definidos por el usuario. Para crear y administrar estos roles definidos por el usuario, MongoDB proporciona comandos de gestión de roles.

Los documentos en 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 contiene los siguientes campos:

admin.system.roles.role

El campo role es una cadena que especifica el nombre del rol.

admin.system.roles.db

El campo db es una string que especifica la base de datos a la que pertenece el rol. MongoDB identifica de manera única cada rol mediante la combinación de su nombre (es decir, role) y su base de datos.

admin.system.roles.privileges

El privileges arreglo contiene los documentos de privilegios que definen los privilegios del rol.

Un documento de privilegio presenta la siguiente sintaxis:

{
resource: { <resource> },
actions: [ "<action>", ... ]
}

Cada documento de privilegio tiene los siguientes campos:

admin.system.roles.privileges[n].resource

Un documento que especifica los recursos a los que se actions aplica el privilegio. El documento tiene uno de los siguientes formatos:

{ db: <database>, collection: <collection> }

or

{ cluster : true }

Consulta el documento de recursos sobre implementaciones autogestionadas para obtener más detalles.

admin.system.roles.privileges[n].actions

Conjunto de acciones permitidas en el recurso. Para ver la lista de acciones, consulte Acciones de privilegios.

admin.system.roles.roles

El roles arreglo contiene documentos de roles que especifican 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 contiene los siguientes campos:

admin.system.roles.roles[n].role

El nombre del rol. Un rol puede ser un rol incorporado proporcionado por MongoDB o un rol definido por el usuario.

admin.system.roles.roles[n].db

El nombre de la base de datos donde se define el rol.

Considera los siguientes documentos de muestra encontrados en la colección system.roles de la base de datos admin.

A continuación se muestra un documento de ejemplo 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: []
}

El arreglo 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 la base de datos myApp excepto en sus colecciones del sistema. Consulte Especificar una base de datos como recurso.

  • Los dos siguientes privilegios permiten acciones adicionales en colecciones específicas, logs y data, en la base de datos myApp. Consulte Especificar una colección de una base de datos como recurso.

  • El último privilegio permite acciones en una colección de sistema en la base de datos myApp. Mientras que el primer privilegio otorga permisos a nivel de base de datos para la acción find, la acción no aplica a las colecciones de sistema de myApp. Para otorgar acceso a una colección del sistema, un privilegio debe especificar explícitamente la colección. Consulta el Documento recurso sobre las implementaciones autogestionadas.

Como lo indica el arreglo vacío roles, appUser no hereda privilegios adicionales 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" }
]
}

El arreglo privileges enumera los privilegios que especifica el rol appAdmin. Este rol tiene un único privilegio que permite sus acciones ( "insert", "dbStats", "collStats", "compact") en todas las colecciones de la base de datos myApp excluyendo sus 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.

Volver

Referencia

En esta página