Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ /

system.roles collection

Nesta página

  • system.roles Esquema
  • Exemplos

A coleção system.roles no 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 fornece comandos de gerenciamento de funções.

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 da função.

admin.system.roles.db

O campo db é uma string que especifica o banco de dados ao qual o papel pertence. O MongoDB identifica exclusivamente cada papel pelo emparelhamento de seu nome (ou seja, role) e seu banco de dados.

admin.system.roles.privileges

A matriz 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 Documento de Recurso para obter mais detalhes.

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

Uma série de ações permitidas no recurso. Para uma lista de ações, consulte Ações de Privilégio.

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.

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

O nome do banco de dados onde o papel é definido.

Considere os seguintes documentos de amostra encontrados na coleção system.roles do banco de dados admin .

O seguinte é um documento de amostra para um papel definido pelo usuário appUser definido para o banco de dados do 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ções ( "find", "createCollection", "dbStats", "collStats") em todas as collections no banco de dados myApp excluindo suas collections 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 e data, no banco de dados do myApp . 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 dados myApp . Enquanto o primeiro privilégio dá permissão em todo o banco de dados para a ação find , a ação não se aplica às collections do sistema de myApp. Para conceder acesso a uma collection do sistema, um privilégio deve especificar explicitamente a collection. Consulte o Documento de Recurso.

Conforme indicado pela array roles vazia, appUser não herda privilégios adicionais de outras funções.

A seguir, um documento de exemplo para uma função definida pelo usuário appAdmin definida 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 role tem um único privilégio que permite suas ações ( "insert", "dbStats", "collStats", "compact") em todas as collections no banco de dados myApp excluindo suas collections do sistema. Consulte Especificar um banco de dados como recurso.

A array roles lista as roles, identificadas pelos nomes das roles e bancos de dados, dos quais a role appAdmin herda privilégios.

← Referência de segurança