Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

db.updateUser()

Nesta página

  • Definição
  • Comportamento
  • Acesso necessário
  • Exemplo
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 roles do 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étodos db.grantRolesToUser() ou db.revokeRolesFromUser() .

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

Dica

Você pode usar o método passwordPrompt() em conjunto com vários métodos/comandos de autenticação/gerenciamento de usuário para solicitar a senha em vez de especificar a senha diretamente na chamada de método/comando. No entanto, você ainda pode especificar a senha diretamente como faria com versões anteriores do shell mongo .

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> }
)

O método db.updateUser() tem os seguintes argumentos.

Parâmetro
Tipo
Descrição
username
string
O nome do usuário a ser atualizado.
update
documento
Um documento contendo os dados de substituição para o usuário. Esses dados substituem completamente os dados correspondentes para o usuário.
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 para atualizar e seus novos valores. Todos os campos no documento update são opcionais, mas deve incluir pelo menos um campo.

O documento update tem os seguintes campos:

Campo
Tipo
Descrição
customData
documento
Opcional. Qualquer informação arbitrária.
roles
array
Opcional. As funções concedidas ao usuário. Uma atualização na array roles substitui os valores da array anterior.
pwd
string

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.

Dica

Você pode usar o método passwordPrompt() em conjunto com vários métodos/comandos de autenticação/gerenciamento de usuário para solicitar a senha em vez de especificar a senha diretamente na chamada de método/comando. No entanto, você ainda pode especificar a senha diretamente como faria com versões anteriores do shell mongo .

authenticationRestrictions
array

Opcional. As restrições de autenticação que o servidor impõe ao usuário. Especifica uma lista de endereços IP e intervalos CIDR a partir dos quais o usuário tem permissão para se conectar ao servidor ou a partir dos quais o servidor pode aceitar usuários.

Novidade na versão 3.6.

mechanisms
array

Opcional. O mecanismo ou mecanismos SCRAM específicos para as credenciais do usuário. Se authenticationMechanisms for especificado, você só poderá especificar um subconjunto de authenticationMechanisms.

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.

passwordDigestor
string

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 com SCRAM-SHA-256)
    O cliente digere a senha e passa a senha digerida para o servidor.

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

Para especificar uma função que existe no mesmo banco de dados onde o db.updateUser() é executado, você pode especificar a função com o próprio 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.

O método db.updateUser() encapsula o comando updateUser.

Se executado em um conjunto de réplicas, db.updateUser() é executado usando a preocupação de gravação "majority" por padrão.

Aviso

Por padrão, db.updateUser() envia todos os dados especificados para a instância do MongoDB em texto não criptografado, mesmo se estiver usando passwordPrompt(). Use a criptografia de transporte TLS para proteger as comunicações entre clientes e o servidor, incluindo a senha enviada pelo db.updateUser(). Para obter instruções sobre como habilitar a criptografia de transporte TLS, consulte Configurar mongod e mongos para TLS/SSL.

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.

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.

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"]
} ]
}

O método db.updateUser() a seguir substitui completamente os dados customData e roles do usuário:

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"]
} ]
}

Observação

Para usar o SCRAM-SHA-256, o featureCompatibilityVersion deve ser configurado para 4.0. Para obter mais informações sobre featureCompatibilityVersion, consulte Visualizar 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 o mechanisms para 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, o passwordDigestor deve ser o valor padrão "server".

use reporting
db.updateUser(
"reportUser256",
{
mechanisms: [ "SCRAM-SHA-256" ]
}
)

Voltar

db.revokeRolesFromUser

Próximo

passwordPrompt