Definição
db.updateUser( username, update, writeConcern )Atualiza o perfil do usuário no banco de dados no qual você executa o método. Uma atualização em um campo substitui completamente os valores do campo anterior. Isso inclui atualizações na array
rolesdo usuário.Aviso
Ao atualizar a matriz
roles, você substitui completamente os valores da matriz anterior. Para adicionar ou remover funções sem substituir todas as funções existentes do usuário, utilize os métodosdb.grantRolesToUser()oudb.revokeRolesFromUser().The
db.updateUser()method uses the following syntax:Dica
Você pode usar o método
passwordPrompt()em conjunto com vários métodos e comandos de gerenciamento de autenticação de usuário para solicitar a senha em vez de especificar a senha diretamente na chamada de método ou comando. No entanto, você ainda pode especificar a senha diretamente como faria com versões anteriores do shellmongo.db.updateUser( "<username>", { customData : { <any information> }, roles : [ { role: "<role>", db: "<database>" } | "<role>", ... ], pwd: passwordPrompt(), // Or "<cleartext password>" authenticationRestrictions: [ { clientSource: ["<IP>" | "<CIDR range>", ...], serverAddress: ["<IP>", | "<CIDR range>", ...] }, ... ], mechanisms: [ "<SCRAM-SHA-1|SCRAM-SHA-256>", ... ], passwordDigestor: "<server|client>" }, writeConcern: { <write concern> } ) The
db.updateUser()method has the following arguments.ParâmetroTipoDescriçãousernamestring
O nome do usuário a ser atualizado.
updatedocumento
Um documento contendo os dados de substituição para o usuário. Esses dados substituem completamente os dados correspondentes para o usuário.
writeConcerndocumento
Opcional. O nível da write concern para a operação. Consulte Especificação de write concern.
O documento
updateespecifica os campos para atualizar e seus novos valores. Todos os campos no documentoupdatesão opcionais, mas deve incluir pelo menos um campo.O documento
updatetem os seguintes campos:CampoTipoDescriçãocustomDatadocumento
Opcional. Qualquer informação arbitrária.
rolesarray
Opcional. As funções concedidas ao usuário. Uma atualização na array
rolessubstitui os valores da array anterior.pwdstring
Opcional. A senha do usuário. O valor pode ser:
a senha do usuário em string de texto não criptografado ou
passwordPrompt()para solicitar a senha do usuário.
Você pode usar o método
passwordPrompt()em conjunto com vários métodos e comandos de gerenciamento de autenticação de usuário para solicitar a senha em vez de especificar a senha diretamente na chamada de método ou comando. No entanto, você ainda pode especificar a senha diretamente como faria com versões anteriores do shellmongo.authenticationRestrictionsarray
Opcional. As restrições de autenticação que o servidor impõe ao usuário. Especifica uma lista de endereços IP e faixas CIDR a partir das quais o usuário tem permissão para se conectar ao servidor ou a partir das quais o servidor pode aceitar usuários.
mechanismsarray
Opcional. O mecanismo ou mecanismos SCRAM específicos para as credenciais do usuário. Se
authenticationMechanismsfor especificado, você só poderá especificar um subconjunto deauthenticationMechanisms.Se atualizar o campo de mecanismos sem a senha, você só poderá especificar um subconjunto dos mecanismos atuais do usuário, e somente as credenciais de usuário existentes para o mecanismo ou mecanismos especificados serão mantidas.
Se atualizar a senha junto com os mecanismos, o novo conjunto de credenciais será armazenado para o usuário.
Os valores válidos são:
"SCRAM-SHA-1"- Utiliza a função de hash
SHA-1.
"SCRAM-SHA-256"Utiliza a função de hash
SHA-256.Exige featureCompatibilityVersion definido para
4.0.Requer que o passwordDigestor seja
server.
passwordDigestorstring
Opcional. Indica se o servidor ou o cliente digere a senha.
Os valores disponíveis são:
"server"(Padrão)- O servidor recebe senha não digerida do cliente e digere a senha.
"client"(Não compatível comSCRAM-SHA-256)- O cliente digere a senha e passa a senha digerida para o servidor.
Funções
No campo roles, é possível especificar roles incorporadas e roles definidas pelo usuário.
To specify a role that exists in the same database where db.updateUser() runs, you can either specify the role with the name of the role:
"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
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 |
|---|---|---|
| Array de endereços IP e/ou intervalos 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. |
| Array de endereços IP e/ou intervalos 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 em implementações autogerenciadas.
The db.updateUser() method wraps the updateUser command.
Compatibilidade
Esse método está disponível em implantações hospedadas nos seguintes ambientes:
Importante
Este comando não é aceito em clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, 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
Comportamento
réplicaSet
If run on a replica set, db.updateUser() is executed using "majority" write concern by default.
Criptografia
Aviso
By default, db.updateUser() sends all specified data to the MongoDB instance in cleartext, even if using passwordPrompt(). Use TLS transport encryption to protect communications between clients and the server, including the password sent by db.updateUser(). For instructions on enabling TLS transport encryption, see Configure MongoDB Instances for TLS/SSL Encryption.
O MongoDB não armazena a senha no cleartext. A senha só estará vulnerável em trânsito entre o cliente e o servidor e somente se a criptografia de transporte TLS não estiver habilitada.
Acesso necessário
Você deve ter acesso que inclua a revokeRole ação em todos os bancos de dados para atualizar a array roles de um usuário.
É necessário ter a grantRole ação no banco de dados de uma função para adicionar uma função a um usuário.
Para alterar o campo pwd ou de outro customData usuário, é necessário ter as changePassword ações changeCustomData e, respectivamente, no banco de dados desse usuário.
Para modificar sua própria senha e dados personalizados, você deve ter privilégios que concedam changeOwnPassword e changeOwnCustomData ações respectivamente no banco de dados do usuário.
Exemplo
Dado um usuário appClient01 no banco de dados do products com as seguintes informações de usuário:
{ _id : "products.appClient01", userId : UUID("c5d88855-3f1e-46cb-9c8b-269bef957986"), user : "appClient01", db : "products", customData : { empID : "12345", badge : "9156" }, roles : [ { role : "readWrite", db : "products" }, { role : "read", db : "inventory" } ], mechanisms : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ], authenticationRestrictions : [ { clientSource: ["69.89.31.226"], serverAddress: ["172.16.254.1"] } ] }
The following db.updateUser() method completely replaces the user's customData and roles data:
use products db.updateUser( "appClient01", { customData : { employeeId : "0x3039" }, roles : [ { role : "read", db : "assets" } ] } )
O usuário appClient01 no banco de dados do products agora tem as seguintes informações de usuário:
{ _id : "products.appClient01", userId : UUID("c5d88855-3f1e-46cb-9c8b-269bef957986"), user : "appClient01", db : "products", customData : { employeeId : "0x3039" }, roles : [ { role : "read", db : "assets" } ], mechanisms : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ], authenticationRestrictions : [ { clientSource: ["69.89.31.226"], serverAddress: ["172.16.254.1"] } ] }
Atualizar usuário para usar apenas SCRAM-SHA-256 credenciais
Observação
Para usar SCRAM-SHA-256, o featureCompatibilityVersion deve ser configurado para 4.0. Para mais informações sobre featureCompatibilityVersion, consulte Obter FeatureCompatibilityVersion e setFeatureCompatibilityVersion.
A seguinte operação atualiza um usuário que atualmente tem credenciais do SCRAM-SHA-256 e SCRAM-SHA-1 para ter somente credenciais do SCRAM-SHA-256.
Observação
Se a senha não for especificada junto com o
mechanisms, você somente poderá atualizar omechanismspara um subconjunto dos mecanismos SCRAM atuais para o usuário.Se a senha for especificada junto com o
mechanisms, você poderá especificar qualquer mecanismo ou mecanismo SCRAM suportado.Para
SCRAM-SHA-256, opasswordDigestordeve ser o valor padrão"server".
use reporting db.updateUser( "reportUser256", { mechanisms: [ "SCRAM-SHA-256" ] } )