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.roleO campo
roleé uma string que especifica o nome do papel.
admin.system.roles.dbO 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.privilegesA array
privilegesconté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].resourceUm documento que especifica os recursos sobre os quais o privilégio
actionsse 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].actionsUma série de ações permitidas no recurso. Para uma lista de ações, consulte Ações de Privilégio.
admin.system.roles.rolesA matriz
rolesconté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].roleO 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 dadosmyAppexcluindo 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,
logsedata, 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.