Página inicial do Docs → Desenvolver aplicações → Manual do MongoDB
função de atualização
Nesta página
Definição
updateRole
Atualiza um role definido pelo usuário. O comando
updateRole
deve ser executado no banco de dados do role.Dica
Em
mongosh
, esse comando também pode ser executado por meio do método auxiliardb.updateRole()
.Os métodos auxiliares são convenientes 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 conveniência não for necessária ou os campos de retorno adicionais forem necessários, use o comando de banco de dados.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, use um ou mais dos seguintes comandos:
Aviso
Uma atualização na array
privileges
ouroles
substitui completamente os valores da matriz anterior.O comando
updateRole
utiliza a seguinte sintaxe. Para atualizar uma função, você deve fornecer a arrayprivileges
, a arrayroles
ou ambas:{ updateRole: "<role>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ], authenticationRestrictions: [ { clientSource: ["<IP>" | "<CIDR range>", ...], serverAddress: ["<IP>", ...] }, ... ] writeConcern: <write concern document>, comment: <any> } O comando
updateRole
tem os seguintes campos:CampoTipoDescriçãoupdateRole
stringO nome da role definida pelo usuário a ser atualizada.privileges
variedadeOpcional. Obrigatório se você não especificar o arrayroles
. Os privilégios para conceder a role. Uma atualização no arrayprivileges
substitui os valores do array anterior. Para saber a sintaxe para especificar um privilégio, consulte o arrayprivileges
.roles
variedadeOpcional. Obrigatório se você não especificar o arrayprivileges
. As roles das quais esta herda privilégios. Uma atualização no arrayroles
substitui os valores do array anterior.authenticationRestrictions
variedadeOpcional. .. include:: /includes/fact-auth-restrictions-role-desc.rstwriteConcern
documentoOpcional. O nível da write concern para a operação. Consulte Especificação de write concern.
comment
qualquerOpcional. 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:
mensagens de log do mongod, no campo
attr.command.cursor.comment
.Saída do perfil do banco de dados, no campo
command.comment
.Saída de
currentOp
, no campocommand.comment
.
Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc).
Funções
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 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.
Restrições de autenticação
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 intervalosCIDR | 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.
Comportamento
Os privilégios de um role se aplicam ao banco de dados onde o role é criado. O papel pode herdar privilégios de outros papéis em seu banco de dados. Um papel criado no banco de dados do admin
pode incluir privilégios que se aplicam a todos os bancos de dados ou ao agrupamento e pode herdar privilégios de papéis em outros bancos de dados.
Acesso obrigatório
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.
Exemplo
A seguir está um exemplo do comando updateRole
que atualiza a função myClusterwideAdmin
no banco de dados admin
. Embora as arrays privileges
e roles
sejam opcionais, pelo menos uma das duas é necessária:
db.adminCommand( { updateRole: "myClusterwideAdmin", privileges: [ { resource: { db: "", collection: "" }, actions: [ "find" , "update", "insert", "remove" ] } ], roles: [ { role: "dbAdminAnyDatabase", db: "admin" } ], writeConcern: { w: "majority" } } )
Para visualizar os privilégios de uma role, utilize o comando rolesInfo
.