Definición
db.updateUser( username, update, writeConcern )Actualiza el perfil del usuario en la base de datos en la que se ejecuta el método. Una actualización de un campo reemplaza completamente los valores previos del campo. Esto incluye actualizaciones en el arreglo
rolesdel usuario.Advertencia
Cuando actualizas el arreglo
roles, reemplazas por completo los valores del arreglo anterior. Para agregar o remover roles sin reemplazar todos los roles existentes del usuario, utiliza los métodosdb.grantRolesToUser()odb.revokeRolesFromUser().The
db.updateUser()method uses the following syntax: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 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.ParameterTipoDescripciónusernamestring
El nombre del usuario a actualizar.
updateDocumento
Un documento que contiene los datos de reemplazo para el usuario. Estos datos reemplazan completamente los datos correspondientes del usuario.
writeConcernDocumento
Opcional. El nivel de confirmación de escritura (write concern) de la operación. Consulte Especificación de nivel de confirmación de escritura (write concern).
El documento
updateespecifica los campos que se deben actualizar y sus nuevos valores. Todos los campos en el documentoupdateson opcionales, pero deben incluir al menos un campo.El documento
updatetiene los siguientes campos:CampoTipoDescripcióncustomDataDocumento
Opcional. Cualquier información arbitraria.
rolesarreglo
opcional. Los roles asignados al usuario. Una actualización del arreglo
rolessobrescribe los valores del arreglo anterior.pwdstring
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 shellmongo.authenticationRestrictionsarreglo
Opcional. Las restricciones de autenticación que el servidor aplica al usuario. Especifica una lista de direcciones IP y rangos CIDR desde los cuales el usuario puede conectarse al servidor o desde los cuales el servidor puede aceptar usuarios.
mechanismsarreglo
opcional. El mecanismo o mecanismos SCRAM específicos para las credenciales de usuario. Si
authenticationMechanismsestá especificado, solo puedes especificar un subconjunto de lasauthenticationMechanisms.Si actualizas el campo de mecanismos sin la contraseña, solo puedes seleccionar un subconjunto de los mecanismos actuales del usuario, y solo se conservan las credenciales de usuario existentes para el 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.
passwordDigestorstring
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 conSCRAM-SHA-256)- El cliente procesa la contraseña y la pasa al servidor.
Roles
En el campo roles, puede especificar tanto roles de funcionalidad incorporada como roles definidos por el usuario.
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"
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.
Restricciones de autenticación
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 |
|---|---|---|
| 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. |
| 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.
The db.updateUser() method wraps the updateUser command.
Compatibilidad
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.
Comportamiento
Set de réplicas
If run on a replica set, db.updateUser() is executed using "majority" write concern by default.
Encriptación
Advertencia
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.
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.
Acceso requerido
Debe tener acceso que incluya la revokeRole acción en todas las bases de datos para actualizar el arreglo de roles de un usuario.
Debes tener la grantRole de acción en la base de datos de un rol para agregar un rol a una cuenta de usuario.
Para cambiar el campo pwd o customData de otro usuario, debes tener los changePassword y changeCustomData permisos, respectivamente, en la base de datos de ese usuario.
Para modificar tu propia contraseña y tus datos personalizados, debes tener privilegios que otorguen changeOwnPassword y changeOwnCustomData acciones respectivamente en la base de datos del usuario.
Ejemplo
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"] } ] }
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" } ] } )
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"] } ] }
Actualiza el usuario para que utilice solo credenciales de SCRAM-SHA-256
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 a un usuario que actualmente posee ambas credenciales SCRAM-SHA-256 y SCRAM-SHA-1 para que tenga solo la credencial SCRAM-SHA-256.
Nota
Si la contraseña no se especifica junto con el
mechanisms, solo se puede actualizar elmechanismsa un subconjunto de los mecanismos SCRAM actuales para el usuario.Si se especifica la contraseña junto con el
mechanisms, se puede especificar cualquier mecanismo SCRAM admitido o mecanismos admitidos.Para
SCRAM-SHA-256, elpasswordDigestordebe ser el valor por defecto"server".
use reporting db.updateUser( "reportUser256", { mechanisms: [ "SCRAM-SHA-256" ] } )