Docs Menu
Docs Home
/ /

db.updateUser() (método mongosh)

db.updateUser( username, update, writeConcern )

Actualiza el perfil del usuario en la base de datos donde se ejecuta el método. Una actualización de un campo reemplaza completamente los valores del campo anterior. Esto incluye las actualizaciones de la roles matriz del usuario.

Advertencia

Al actualizar la matriz roles, se reemplazan completamente los valores de la matriz anterior. Para agregar o eliminar roles sin reemplazar todos los roles existentes del usuario, utilice el comando db.grantRolesToUser() o db.revokeRolesFromUser() métodos.

El db.updateUser() El método utiliza la siguiente sintaxis:

Tip

Puedes usar el método passwordPrompt() en conjunto con varios métodos y comandos de gestión de autenticación de usuarios para solicitar la contraseña en lugar de especificar la contraseña directamente en la llamada al método o comando. Sin embargo, aún puedes especificar la contraseña directamente como lo harías con las versiones anteriores del 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> }
)

El método tiene los siguientes db.updateUser() argumentos.

Parameter
Tipo
Descripción

username

string

El nombre del usuario a actualizar.

update

Documento

Un documento que contiene los datos de reemplazo del usuario. Estos datos reemplazan completamente los datos correspondientes del usuario.

writeConcern

Documento

El update documento especifica los campos que se actualizarán y sus nuevos valores. Todos los campos del update documento son opcionales, pero deben incluir al menos uno.

El documento update tiene los siguientes campos:

Campo
Tipo
Descripción

customData

Documento

Opcional. Cualquier información arbitraria.

roles

arreglo

Opcional. Los roles asignados al usuario. Una actualización de la matriz roles anula los valores de la matriz anterior.

pwd

string

Opcional. La contraseña del usuario. El valor puede ser:

  • la contraseña del usuario en string de texto sin formato, o

  • passwordPrompt() para solicitar la contraseña del usuario.

Puedes usar el método passwordPrompt() en conjunto con varios métodos y comandos de gestión de autenticación de usuarios para solicitar la contraseña en lugar de especificar la contraseña directamente en la llamada al método o comando. Sin embargo, aún puedes especificar la contraseña directamente como lo harías con las versiones anteriores del shell mongo.

authenticationRestrictions

arreglo

Opcional. Las restricciones de autenticación que el servidor impone al usuario. Especifica una lista de direcciones IP y RangosCIDR desde los cuales el usuario puede conectarse al servidor o desde los cuales el servidor puede aceptar usuarios.

mechanisms

arreglo

Opcional. El mecanismo o mecanismos SCRAM específicos para las credenciales de usuario. Si se especifica, solo se puede especificar un authenticationMechanisms subconjunto authenticationMechanisms de.

Si se actualiza el campo de mecanismos sin la contraseña, solo se puede especificar un subconjunto de los mecanismos actuales del usuario y solo se conservan las credenciales de usuario existentes para el mecanismo o los mecanismos especificados.

Si se actualiza la contraseña junto con los mecanismos, se almacena un nuevo conjunto de credenciales para el usuario.

Los valores válidos son:

  • "SCRAM-SHA-1"

    • Utiliza la función de hash SHA-1.

  • "SCRAM-SHA-256"

    • Utiliza la función de hash SHA-256.

    • Se debe establecer featureCompatibilityVersion en 4.0.

    • Requiere que passwordDigestor sea server.

passwordDigestor

string

Opcional. Indica si el servidor o el cliente procesa la contraseña.

Los valores disponibles son:

  • "server" (por defecto)
    El servidor recibe la contraseña sin procesar del cliente y la procesa.
  • "client" (No es compatible con SCRAM-SHA-256)
    El cliente procesa la contraseña y la pasa al servidor.

En el campo roles, puede especificar tanto roles de funcionalidad incorporada como roles definidos por el usuario.

Para especificar un rol que existe en la misma base de datos donde se ejecuta db.updateUser(), puedes especificar el rol utilizando el nombre del rol:

"readWrite"

O puede especificar el rol con un documento, como en:

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

Para especificar un rol que existe en una base de datos diferente, especifique el rol mediante un documento.

El documento authenticationRestrictions solo puede contener los campos siguientes. El servidor genera un error si el documento authenticationRestrictions contiene un campo no reconocido:

Nombre de campo
Valor
Descripción

clientSource

Arreglo de direcciones IP y/o rangos CIDR

Si está presente, al autenticar a un usuario, el servidor verifica que la dirección IP del cliente esté en la lista proporcionada o que pertenezca a un rango CIDR de la lista. Si la dirección IP del cliente no está presente, el servidor no autentica al usuario.

serverAddress

Arreglo de direcciones IP y/o rangos CIDR

Una lista de direcciones IP o rangos CIDR a los que el cliente puede conectarse. Si está presente, el servidor verificará que la conexión del cliente haya sido aceptada mediante una dirección IP de la lista proporcionada. Si la conexión fue aceptada desde una dirección IP no reconocida, el servidor no autentica al usuario.

Importante

Si un usuario hereda múltiples roles con restricciones de autenticación incompatibles, ese usuario se vuelve inutilizable.

Por ejemplo, si un usuario hereda un rol en el que el campo clientSource es ["198.51.100.0"] y otro rol en el que el campo clientSource es ["203.0.113.0"], el servidor no puede autenticar al usuario.

Para obtener más información sobre la autenticación en MongoDB, consulta Autenticación en implementaciones autogestionadas.

El método db.updateUser() envuelve el comando updateUser.

Este método está disponible en implementaciones alojadas en los siguientes entornos:

Importante

Este comando no es compatible con los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulta Comandos no compatibles.

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

Si se ejecuta en un set de réplicas, db.updateUser() se ejecuta utilizando el nivel de confirmación de escritura "majority" por defecto.

Advertencia

Por defecto, db.updateUser() envía todos los datos especificados a la instancia de MongoDB en texto sin formato, incluso si utiliza passwordPrompt(). Utilice el cifrado de transporte TLS para proteger las comunicaciones entre los clientes y el servidor, incluida la contraseña enviada por db.updateUser(). Para obtener instrucciones sobre cómo habilitar el cifrado de transporte TLS, consulte Configurar instancias de MongoDB para TLS/SSL en implementaciones autogestionadas.

MongoDB no almacena la contraseña en texto sin formato. La contraseña es vulnerable solo durante el tránsito entre el cliente y el servidor, y únicamente si el cifrado de transporte TLS no está activado.

Debe tener acceso que incluya la revokeRole acción en todas las bases de datos para poder actualizar la matriz roles de un usuario.

Debe tener la grantRole acción en la base de datos de un rol para agregar un rol a un usuario.

Para cambiar el campo pwd o de otro customData usuario, debe tener las changePassword acciones changeCustomData y respectivamente en la base de datos de ese usuario.

Para modificar su propia contraseña y datos personalizados, debe tener privilegios que otorguen changeOwnPassword y changeOwnCustomData acciones respectivamente en la base de datos del usuario.

Dado un usuario appClient01 en la base de datos products con la siguiente información de usuario:

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

El siguiente db.updateUser() método reemplaza completamente customData los roles datos y del usuario:

use products
db.updateUser( "appClient01",
{
customData : { employeeId : "0x3039" },
roles : [
{ role : "read", db : "assets" }
]
} )

El usuario appClient01 en la base de datos products ahora tiene la siguiente información de usuario:

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

Nota

Para utilizar SCRAM-SHA-256, featureCompatibilityVersion debe configurarse en 4.0. Para obtener más información sobre featureCompatibilityVersion, consulte Obtener FeatureCompatibilityVersion y setFeatureCompatibilityVersion.

La siguiente operación actualiza un usuario que actualmente tiene credenciales SCRAM-SHA-256 y SCRAM-SHA-1 para que solo tenga credenciales SCRAM-SHA-256.

Nota

  • Si no se especifica la contraseña junto con mechanisms, solo puede actualizar mechanisms a un subconjunto de los mecanismos SCRAM actuales para el usuario.

  • Si se especifica la contraseña junto con mechanisms, puede especificar cualquier mecanismo o mecanismos SCRAM compatibles.

  • Para SCRAM-SHA-256, passwordDigestor debe ser el valor predeterminado "server".

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

Volver

db.revokeRolesFromUser

En esta página