Definición
db.createRole(role, writeConcern)Crea un rol en una base de datos. Puede especificar privilegios para el rol enumerándolos explícitamente, haciendo que herede los privilegios de otros roles o ambas cosas. El rol se aplica a la base de datos donde se ejecuta el método.
Importante
Método mongosh
Esta página documenta un método
mongosh. Esta no es la documentación para los comandos de base de datos ni para los drivers específicos de lenguajes, como Nodo.js.Para el comando de base de datos, consulte el
createRoledominio.Para los drivers de API de MongoDB, consulte la documentación del driver de MongoDB específica del lenguaje.
El método acepta los siguientes
db.createRole()argumentos:ParameterTipoDescripciónroleDocumento
Un documento que contiene el nombre del rol y la definición del rol.
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
roletiene el siguiente formato:{ role: "<name>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ], authenticationRestrictions: [ { clientSource: ["<IP>" | "<CIDR range>", ...], serverAddress: ["<IP>" | "<CIDR range>", ...] }, ... ] } El documento
roletiene los siguientes campos:CampoTipoDescripciónrolestring
El nombre del nuevo rol.
privilegesarreglo
Los privilegios para otorgar el rol. Un privilegio consta de un recurso y las acciones permitidas. Para conocer la sintaxis de un privilegio, consulte la
privilegesmatriz.Debe incluir el
privilegescampo. Use una matriz vacía para especificar que no hay privilegios.rolesarreglo
Una serie de roles de los cuales este rol hereda privilegios.
Debe incluir el
rolescampo. Use una matriz vacía para especificar que no hay roles de los que heredar.authenticationRestrictionsarreglo
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.
Roles
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.createRole(), 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.
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,consulte Autenticación.
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
Si se ejecuta en un set de réplicas, db.createRole() se ejecuta utilizando el nivel de confirmación de escritura "majority" por defecto.
Alcance
Excepto por los roles creados en la base de datos admin, un rol solo puede incluir privilegios que se aplican a su base de datos y solo puede heredar de otros roles en su base de datos.
Un rol creado en la base de datos admin puede incluir privilegios que se aplican a la base de datos admin, a otras bases de datos o al recurso clúster, y puede heredar de roles en otras bases de datos, así como de la base de datos admin.
El método db.createRole() devuelve un error de rol duplicado si el rol ya existe en la base de datos.
Privilegios
Cuando especifica la privileges matriz, puede especificar privilegios para aplicar a múltiples colecciones en una base de datos o a una base de datos completa.
La siguiente sintaxis especifica privilegios en múltiples colecciones en la base de datos products.
privileges: [ { resource: { db: 'products', collection: 'coll1' }, actions: [ 'bypassDocumentValidation' ] }, { resource: { db: 'products', collection: 'coll2' }, actions: [ 'bypassDocumentValidation' ] } ]
La siguiente sintaxis especifica privilegios en todas las colecciones en la base de datos products.
privileges: [ { resource: { db: 'products', collection: '' }, actions: [ 'bypassDocumentValidation' ] } ]
Acceso requerido
Para crear un rol en una base de datos, se debe tener:
la acción
createRolesobre ese recurso de base de datos.la acción
grantRoleen esa base de datos para especificar los privilegios del nuevo rol, así como para especificar los roles de los que heredará.
Los roles de funcionalidad incorporada userAdmin y userAdminAnyDatabase proporcionan acciones createRole y grantRole sobre sus respectivos recursos.
Para crear un rol con authenticationRestrictions especificado, debes tener la acción setAuthenticationRestriction sobre el recurso de base de datos en el que se crea el rol.
Ejemplo
El siguiente método crea db.createRole() el myClusterwideAdmin rol en la admin base de datos:
use admin db.createRole( { role: "myClusterwideAdmin", privileges: [ { resource: { cluster: true }, actions: [ "addShard" ] }, { resource: { db: "config", collection: "" }, actions: [ "find", "update", "insert", "remove" ] }, { resource: { db: "users", collection: "usersCollection" }, actions: [ "update", "insert", "remove" ] }, { resource: { db: "", collection: "" }, actions: [ "find" ] } ], roles: [ { role: "read", db: "admin" } ] }, { w: "majority" , wtimeout: 5000 } )