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

system.roles Collection em sistemas autogerenciados

Nesta página

  • system.roles Esquema
  • Exemplos

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 .

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.

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

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

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

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 dados myApp 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 e data, no banco de banco de dados 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 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 recursos sobre implementações autogerenciadas.

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

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.

Voltar

Referência