system.roles
Collection em sistemas autogerenciados
Nesta página
A coleção system.roles
no banco de banco de dados admin
armazena os papéis definidos pelo usuário. Para criar e gerenciar essas funções definidas pelo usuário, o MongoDB fornececomandos de gerenciamento de funções .
system.roles
Esquema
Os documentos na coleção system.roles
têm o seguinte esquema:
{ _id: <system-defined id>, role: "<role name>", db: "<database>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], roles: [ { role: "<role name>", db: "<database>" }, ... ] }
Um documento system.roles
tem os seguintes campos:
admin.system.roles.role
O campo
role
é uma string que especifica o nome do papel.
admin.system.roles.db
O campo
db
é uma string que especifica o banco de dados ao qual a função pertence. O MongoDB identifica cada função exclusivamente pelo emparelhamento do nome da função (por exemplo,role
) e seu banco de dados.
admin.system.roles.privileges
A array
privileges
contém os documentos de privilégio que definem os privilégios para a função.Um documento de privilégio tem a seguinte sintaxe:
{ resource: { <resource> }, actions: [ "<action>", ... ] } Cada documento de privilégio tem os seguintes campos:
admin.system.roles.privileges[n].resource
Um documento que especifica os recursos sobre os quais o privilégio
actions
se aplica. O documento tem um dos seguintes formatos:{ db: <database>, collection: <collection> } ou
{ cluster : true } Consulte o Documento de recurso sobre implementações autogerenciadas para obter mais detalhes.
admin.system.roles.privileges[n].actions
Uma série de ações permitidas no recurso. Para obter uma lista de ações, consulte Ações de privilégio para implementações autogerenciadas.
admin.system.roles.roles
A matriz
roles
contém documentos de função que especificam as funções das quais esta role herda privilégios.Um documento de função tem a seguinte sintaxe:
{ role: "<role name>", db: "<database>" } Um documento de função tem os seguintes campos:
admin.system.roles.roles[n].role
O nome da função. Um papel pode ser um papel embutido fornecido pelo MongoDB ou um papel definido pelo usuário.
Exemplos
Considere os seguintes documentos de amostra encontrados na coleção system.roles
do banco de banco de dados admin
.
Uma role definida pelo usuário especifica privilégios
Veja a seguir um documento de exemplo para uma função estabelecida pelo usuário appUser
definida para o banco de dados 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: [] }
A array privileges
lista os cinco privilégios que a função appUser
especifica:
O primeiro privilégio permite suas ação (
"find"
,"createCollection"
,"dbStats"
,"collStats"
) em todas as coleções do banco de dadosmyApp
excluindo suas coleções do sistema. Consulte Especificar um banco de dados como recurso.Os próximos dois privilégios permitem ações adicionais em collections específicas,
logs
edata
, no banco de banco de dadosmyApp
. Consulte Especificar uma collection de um banco de dados como recurso.O último privilégio permite ações em um sistema de collections no banco de banco de dados
myApp
. Enquanto o primeiro privilégio dá permissão em todo o banco de dados para a açãofind
, a ação não se aplica às collections do sistema demyApp
. Para conceder acesso a uma collection do sistema, um privilégio deve especificar explicitamente a collection. Consulte o Documento de recursos sobre implementações autogerenciadas.
Conforme indicado pela array roles
vazia, appUser
não herda privilégios adicionais de outras funções.
Heranças de roles definidas pelo usuário de outras roles
A seguir está um exemplo de documento de uma função appAdmin
definida pelo usuário para o banco de dados myApp
: o documento mostra que a função appAdmin
especifica privilégios e herda privilégios de outras funções:
{ _id: "myApp.appAdmin", role: "appAdmin", db: "myApp", privileges: [ { resource: { db: "myApp", collection: "" }, actions: [ "insert", "dbStats", "collStats", "compact" ] } ], roles: [ { role: "appUser", db: "myApp" } ] }
A array privileges
lista os privilégios que a função appAdmin
especifica. Esta função tem um único privilégio que permite suas ações ( "insert"
, "dbStats"
, "collStats"
, "compact"
) em todas as coleções do banco de dados myApp
, excluindo suas coleções do sistema. Consulte Especificar um banco de dados como recurso.
A array roles
lista as funções, identificadas pelos nomes das funções e banco de dados, a partir dos quais a função appAdmin
herda privilégios.