conceder privilégios à função
Definição
grantPrivilegesToRole
Assigns additional privileges to a user-defined role defined on the database on which the command is run.
Dica
Em
mongosh
, esse comando também pode ser executado por meio do método auxiliardb.grantPrivilegesToRole()
.Os métodos auxiliares são práticos para os usuários
mongosh
, mas podem não retornar o mesmo nível de informações que os comandos do banco de dados. Nos casos em que a praticidade não for necessária ou os campos de retorno adicionais forem necessários, use o comando de banco de dados.O comando
grantPrivilegesToRole
utiliza a seguinte sintaxe:
db.runCommand( { grantPrivilegesToRole: "<role>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], writeConcern: { <write concern> }, comment: <any> } )
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Importante
Esse comando não é suportado em clusters M0, M2, M5 e Flex. Para obter mais informações, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Campos de comando
O comando tem os seguintes campos:
Campo | Tipo | Descrição |
---|---|---|
| string | The name of the user-defined role to grant privileges to. |
| array | Os privilégios para adicionar à role. Para saber o formato de um privilégio, consulte |
| documento | Opcional. O nível da write concern para a operação. Consulte Especificação de write concern. |
| any | Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:
Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc). |
Comportamento
A role's privileges apply to the database where the role is created. A
role created on the admin
database can include privileges that apply
to all databases or to the cluster.
Acesso necessário
Você deve ter a ação
grantRole
no banco de dados que é alvo do privilégio para conceder o privilégio. Para conceder um privilégio em vários bancos de dados ou no recurso cluster
, você deve ter a ação grantRole
no banco de dados admin
.
Exemplo
The following grantPrivilegesToRole
command grants two
additional privileges to the service
role that exists in the
products
database:
use products db.runCommand( { grantPrivilegesToRole: "service", privileges: [ { resource: { db: "products", collection: "" }, actions: [ "find" ] }, { resource: { db: "products", collection: "system.js" }, actions: [ "find" ] } ], writeConcern: { w: "majority" , wtimeout: 5000 } } )
The first privilege in the privileges
array allows the user to
search on all non-system collections in the products
database. The
privilege does not allow queries on system collections, such as the system.js
collection. To grant access to these
system collections, explicitly provision access in the privileges
array. See Documento de recurso sobre sistemas autogerenciados.
The second privilege explicitly allows the find
action on
system.js
collections on all
databases.