Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
Gestión de usuarios

updateUser

updateUser

Actualiza el perfil del usuario en la base de datos en la que se ejecuta el comando. Una actualización a un campo reemplaza completamente los valores anteriores del campo, incluyendo actualizaciones en los arreglos roles y authenticationRestrictions del usuario.

Advertencia

Cuando actualices el arreglo roles, reemplazarás completamente los valores del arreglo anterior. Para añadir o remover roles sin reemplazar todos los roles existentes de un usuario, utiliza la grantRolesToUser o revokeRolesFromUser comandos.

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

Importante

Este comando no es compatible con los clústeres M0, M2, M5 y M10+ Para obtener más información, consulta Comandos no admitidos.

  • 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.

El comando updateUser utiliza la siguiente sintaxis. Para actualizar un usuario, debes especificar el campo updateUser y al menos otro campo, además de writeConcern:

Tip

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

{
updateUser: "<username>",
pwd: passwordPrompt(), // Or "<cleartext password>"
customData: { <any information> },
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
authenticationRestrictions: [
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>", | "<CIDR range>", ...]
},
...
],
mechanisms: [ "<scram-mechanism>", ... ],
digestPassword: <boolean>,
writeConcern: { <write concern> },
comment: <any>
}

El comando toma los siguientes campos:

Campo
Tipo
Descripción

updateUser

string

El nombre del usuario a actualizar.

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.

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

customData

Documento

Opcional. Cualquier información arbitraria.

roles

arreglo

opcional. Los roles asignados al usuario. Una actualización del arreglo roles sobrescribe los valores del arreglo anterior.

writeConcern

Documento

opcional. El nivel de nivel de confirmación de escritura (write concern) para la operación de actualización. El documento writeConcern toma los mismos campos que el comando getLastError.

authenticationRestrictions

arreglo

opcional. Las restricciones de autenticación que el servidor aplica al usuario. Especifica una lista de direcciones IP y Rangos CIDR desde los que se permite al usuario conectarse al servidor o desde los que el servidor puede aceptar usuarios.

mechanisms

arreglo

opcional. El mecanismo o mecanismos SCRAM específicos para las credenciales de usuario. Si authenticationMechanisms está especificado, solo puedes especificar un subconjunto de las authenticationMechanisms.

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 hash SHA-1.

  • "SCRAM-SHA-256" - Utiliza la función de hash SHA-256. - Requiere que featureCompatibilityVersion esté establecido en 4.0. - Requiere que digestPassword sea true.

digestPassword

booleano

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

Si true (por defecto), el servidor recibe la contraseña sin digerir del cliente y digiere la contraseña.

Si false, el cliente digiere la contraseña y transmite la contraseña digerida al servidor. No compatible con SCRAM-SHA-256

comment

any

Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:

Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.).

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 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.

Novedad en la versión 3.6.

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.

Advertencia

Por defecto, updateUser envía todos los datos especificados a la instancia de MongoDB en texto claro, incluso si se utiliza passwordPrompt(). Utiliza el cifrado de transporte TLS para proteger las comunicaciones entre los clientes y el servidor, incluida la contraseña enviada por updateUser. Para instrucciones sobre cómo habilitar el cifrado de transporte TLS, consulta Configurar mongod y mongos para TLS/SSL.

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 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.

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

El siguiente comando updateUser reemplaza completamente los datos customData y roles del usuario:

use products
db.runCommand( {
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"
]
}

Volver

revocarRolesDeUsuario

En esta página