Documento de recurso sobre sistemas autogerenciados
O documento de recursos especifica os recursos nos quais um privilégio permite actions
.
Banco de dados e/ou recurso de coleção
Para especificar banco de dados e/ou coleções, use a seguinte sintaxe:
{ db: <database>, collection: <collection> }
Especifique uma Coleção de um Banco de Dados como Recurso
Se o documento de recurso especificar os campos db
e collection
como cadeias de caracteres não vazias, o recurso será a coleção especificada no banco de dados especificado. Por exemplo, o documento a seguir especifica um recurso da coleção inventory
no banco de dados products
:
{ db: "products", collection: "inventory" }
Para uma função definida pelo usuário com escopo para um banco de dados não admin
, a especificação do recurso para seus privilégios deve especificar o mesmo banco de dados da função. As funções definidas pelo usuário com escopo para o banco de dados admin
podem especificar outros bancos de dados.
Especificar um banco de dados como recurso
Se apenas o campo collection
for uma string vazia (""
), o recurso será o banco de banco de dados especificado , excluindo ascollections do sistema . Por exemplo, o seguinte documento de recurso especifica o recurso do banco de banco de dados test
, excluindo as collections do sistema:
{ db: "test", collection: "" }
Para uma função definida pelo usuário com escopo para um banco de dados não admin
, a especificação do recurso para seus privilégios deve especificar o mesmo banco de dados da função. As funções definidas pelo usuário com escopo para o banco de dados admin
podem especificar outros bancos de dados.
Observação
Quando você especifica um banco de dados como recurso, as coleções do sistema são excluídas, a menos que você as nomeie explicitamente, como a seguir:
{ db: "test", collection: "system.js" }
As coleções do sistema incluem entre outros:
Collection do
system.users
em Sistemas Autogerenciados no banco de banco de dados doadmin
Collection do
system.roles
em Sistemas Autogerenciados no banco de banco de dados doadmin
Especificar coleções entre bancos de dados como recurso
Se apenas o campo db
for uma string vazia (""
), o recurso será todas as coleções com o nome especificado em todos os bancos de dados. Por exemplo, o documento a seguir especifica o recurso de todas as coleções de accounts
em todos os bancos de dados:
{ db: "", collection: "accounts" }
Para funções definidas pelo usuário, somente as funções com escopo para o banco de dados admin
podem ter essa especificação de recurso para seus privilégios.
Especificar todas as coleções que não são do sistema em todos os bancos de dados
Se ambos os campos db
e collection
forem strings vazias (""
), o recurso será todas as coleções, exceto as coleções do sistema, em todos os banco de dados:
{ db: "", collection: "" }
Para funções definidas pelo usuário, somente as funções com escopo para o banco de dados admin
podem ter essa especificação de recurso para seus privilégios.
Recurso de cluster
Para especificar o cluster como o recurso, use a seguinte sintaxe:
{ cluster : true }
Use o recurso cluster
para ações que afetam o estado do sistema em vez de agir em um conjunto específico de bancos de dados ou coleções. Alguns exemplos dessas ações são shutdown
, replSetReconfig
e addShard
. Por exemplo, o documento a seguir concede a ação shutdown
no cluster
.
{ resource: { cluster : true }, actions: [ "shutdown" ] }
Para funções definidas pelo usuário, somente as funções com escopo para o banco de dados admin
podem ter essa especificação de recurso para seus privilégios.
anyResource
O anyResource
de recursos internos dá acesso a todos os recursos do sistema e destina-se ao uso interno. Não utilize esse recurso, exceto em circunstâncias excepcionais. A sintaxe deste recurso é { anyResource: true }
.