Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

updateRole (comando de base de datos)

updateRole

Updates a rol definido por el usuario. La updateRole el comando debe ejecutarse en la base de datos del rol.

Tip

En mongosh, este comando también se puede ejecutar a través del método asistente db.updateRole().

Los métodos asistente son convenientes para usuarios de mongosh, pero es posible que no proporcionen el mismo nivel de información que los comandos de base de datos. En los casos en que no se necesite la conveniencia o se requieran campos de retorno adicionales, utiliza el comando de base de datos.

Actualizar un campo reemplaza completamente los valores anteriores de ese campo. Para conceder o remover roles o privilegios sin reemplazar todos los valores, utilice uno o más de los siguientes comandos:

Advertencia

Una actualización de la matriz privileges o roles reemplaza completamente los valores de la matriz anterior.

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

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

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.

Para actualizar un rol, debes proporcionar el privileges arreglo, el roles arreglo o ambos.

El comando utiliza la siguiente sintaxis:

db.runCommand(
{
updateRole: "<role>",
privileges:
[
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
roles:
[
{ role: "<role>", db: "<database>" } | "<role>",
...
],
authenticationRestrictions:
[
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>", ...]
},
...
]
writeConcern: <write concern document>,
comment: <any>
}
)

El comando toma los siguientes campos:

Campo
Tipo
Descripción

updateRole

string

El nombre del rol definido por el usuario que se va a actualizar.

privileges

arreglo

opcional. Se requiere si no especifica el roles arreglo. Los privilegios para otorgar el rol. Una actualización del arreglo privileges anula los valores anteriores del arreglo. Para conocer la sintaxis para especificar un privilegio, consulte el privileges arreglo.

roles

arreglo

opcional. Se requiere si no especifica el privileges arreglo. Los roles de los cuales este rol hereda privilegios. Una actualización en el arreglo roles anula los valores anteriores del arreglo.

authenticationRestrictions

arreglo

Opcional.

Las restricciones de autenticación que el servidor aplica al rol. Especifica una lista de direcciones IP y Los rangosCIDR a los que se les otorga este rol pueden conectarse y/o desde los cuales pueden conectarse.

writeConcern

Documento

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

Los privilegios de un rol se aplican a la base de datos donde se creó. El rol puede heredar privilegios de otros roles en su base de datos. Un rol creado en la admin base de datos puede incluir privilegios que se aplican a todas las bases de datos o al clúster, y puede heredar privilegios de roles en otras bases de datos.

Debes tener la revokeRole acción en todas las bases de datos para actualizar un rol.

Debes tener la grantRole acción en la base de datos de cada rol en el arreglo roles para actualizar el arreglo.

Debe tener la grantRole acción en la base de datos de cada privilegio de la privileges matriz para actualizarla. Si el recurso de un privilegio abarca varias bases de datos, debe tener en grantRole la admin base de datos. Un privilegio abarca varias bases de datos si cumple alguno de los siguientes requisitos:

  • una colección en todas las bases de datos

  • todas las colecciones y todas las bases de datos

  • el recurso cluster

Debe tener la setAuthenticationRestriction acción en la base de datos del rol de destino para actualizar el documento authenticationRestrictions de un rol.

El siguiente es un ejemplo del comando updateRole que actualiza el rol myClusterwideAdmin en la base de datos admin. Si bien los arreglos privileges y roles son ambos opcionales, se requiere al menos uno de los dos:

db.adminCommand(
{
updateRole: "myClusterwideAdmin",
privileges:
[
{
resource: { db: "", collection: "" },
actions: [ "find" , "update", "insert", "remove" ]
}
],
roles:
[
{ role: "dbAdminAnyDatabase", db: "admin" }
],
writeConcern: { w: "majority" }
}
)

Para ver los privilegios de un rol, se utiliza el comando rolesInfo.

Volver

rolesInfo

En esta página