Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

db.updateRole()

Nesta página

  • Definição
  • Comportamento
  • Acesso obrigatório
  • Exemplo
db.updateRole( rolename, update, writeConcern )

Atualiza um role definido pelo usuário. O método db.updateRole() deve ser executado no banco de dados do role.

Importante

Método mongosh

Esta página documenta um método mongosh . Esta não é a documentação para comandos de banco de dados ou drivers específicos de idioma, como Node.js.

Para o comando do banco de dados, consulte o comando updateRole.

Para drivers de API do MongoDB, consulte a documentação do driver MongoDB específica do idioma.

Para a documentação de shell legada do mongo, consulte a documentação para a versão correspondente do MongoDB Server:

mongo shell v4.4

Uma atualização em um campo substitui completamente os valores do campo anterior. Para conceder ou remover roles ou privilégios sem substituir todos os valores, utilize um ou mais dos seguintes métodos:

Aviso

Uma atualização na array privileges ou roles substitui completamente os valores da matriz anterior.

O método db.updateRole() utiliza a seguinte sintaxe:

db.updateRole(
"<rolename>",
{
privileges:
[
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
roles:
[
{ role: "<role>", db: "<database>" } | "<role>",
...
],
authenticationRestrictions:
[
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>", | "<CIDR range>", ...]
},
...
]
},
{ <writeConcern> }
)

O método db.updateRole() aceita os seguintes argumentos:

Parâmetro
Tipo
Descrição
rolename
string
O nome da role definida pelo usuário a ser atualizada.
update
documento
Um documento contendo os dados de substituição para a role. Esses dados substituem por completo os dados correspondentes para a role.
writeConcern
documento

Opcional. O nível da write concern para a operação. Consulte Especificação de write concern.

O documento update especifica os campos a serem atualizados e os novos valores. Cada campo no documento update é opcional, mas o documento deve incluir pelo menos um campo. O documento update tem os seguintes campos:

Campo
Tipo
Descrição
privileges
variedade
Opcional. Obrigatório se você não especificar o array roles. Os privilégios para conceder a role. Uma atualização no array privileges substitui os valores do array anterior. Para saber a sintaxe para especificar um privilégio, consulte o array privileges.
roles
variedade
Opcional. Obrigatório se você não especificar o array privileges. As roles das quais esta herda privilégios. Uma atualização no array roles substitui os valores do array anterior.
authenticationRestrictions
variedade

Opcional.

As restrições de autenticação que o servidor impõe ao role. Especifica uma lista de endereços IP e os usuários do CIDR têm permissão para se conectar e/ou a partir da qual podem se conectar.

Novidade na versão 3.6.

O método db.updateRole() envolve o comando updateRole .

No campo roles, é possível especificar roles incorporadas e roles definidas pelo usuário.

Para especificar uma role que existe no mesmo banco de dados onde o db.updateRole() é executado, você pode especificar a role com o nome dela:

"readWrite"

Ou você pode especificar a role com um documento, como feito a seguir:

{ role: "<role>", db: "<database>" }

Para especificar uma role existente em outro banco de dados, especifique-a com um documento.

Novidade na versão 3.6.

O documento authenticationRestrictions pode conter apenas os seguintes campos. O servidor emitirá um erro se o documento authenticationRestrictions contiver um campo não reconhecido:

Nome do campo
Valor
Descrição
clientSource
Array de endereços IP e/ou faixas CIDR
Se presente, ao autenticar um usuário, o servidor verifica se o endereço IP do cliente está na lista fornecida ou se pertence a uma faixa CIDR na lista. Se o endereço IP do cliente não estiver presente, o servidor não autenticará o usuário.
serverAddress
Array de endereços IP e/ou faixas CIDR
Uma lista de endereços IP ou faixas CIDR às quais o cliente pode se conectar. Se estiver presente, o servidor verificará se a conexão do cliente foi aceita por meio de um endereço IP na lista fornecida. Se a conexão foi aceita por meio de um endereço IP não reconhecido, o servidor não autenticará o usuário.

Importante

Se um usuário herdar múltiplas roles com restrições de autenticação incompatíveis, esse usuário se tornará inutilizável.

Por exemplo, se um usuário herdar uma função na qual o campo clientSource é ["198.51.100.0"] e outra função na qual o campo clientSource é ["203.0.113.0"], o servidor não poderá autenticar o usuário.

Para obter mais informações sobre autenticação no MongoDB, consulte Autenticação.

Se executar em um conjunto de réplicas, o db.updateRole() será executado usando o write concern de "majority" por padrão.

Com exceção das funções criadas no banco de dados admin , uma função só pode incluir privilégios que se aplicam ao seu banco de dados e só pode herdar de outras funções em seu banco de dados.

Um papel criado no banco de dados do admin pode incluir privilégios que se aplicam ao banco de dados do admin, outros bancos de dados ou ao recurso cluster e pode herdar de papéis em outros bancos de dados, como também, o banco de dados do admin.

Você deve ter a ação revokeRole em todos os bancos de dados para atualizar uma role.

Você deve ter a ação grantRole no banco de dados de cada role no array roles para atualizar o array.

Você deve ter a ação grantRole no banco de dados de cada privilégio no array privileges para atualizar o array. Se o recurso de um privilégio abrange bancos de dados, você deverá ter grantRole no banco de dados admin. Um privilégio abrange bancos de dados se o privilégio for qualquer um dos seguintes:

  • uma collection em todos os bancos de dados

  • todas as collections e todos os bancos de dados

  • o recurso cluster

Você deve ter a ação setAuthenticationRestriction no banco de dados da role de destino para atualizar o documento authenticationRestrictions de uma role.

O método db.updateRole() a seguir substitui privileges e roles pela role inventoryControl que existe no banco de dados products . O método é executado no banco de dados que contém inventoryControl:

use products
db.updateRole(
"inventoryControl",
{
privileges:
[
{
resource: { db:"products", collection:"clothing" },
actions: [ "update", "createCollection", "createIndex"]
}
],
roles:
[
{
role: "read",
db: "products"
}
]
},
{ w:"majority" }
)

Para visualizar os privilégios de uma role, utilize o comando rolesInfo.

← db.revokeRolesFromRole()