Definición
db.grantPrivilegesToRole(rolename, privileges, writeConcern)Subvenciones adicionales privilegios a un rol definido por el usuario.
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, consulta el comando
grantPrivilegesToRole.Para los drivers de API de MongoDB, consulte la documentación del driver de MongoDB específica del lenguaje.
El método utiliza la siguiente
db.grantPrivilegesToRole()sintaxis:db.grantPrivilegesToRole( "< rolename >", [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], { < writeConcern > } ) El método toma los siguientes
db.grantPrivilegesToRole()argumentos:ParameterTipoDescripciónrolenamestring
El nombre del rol al que se le otorgarán privilegios.
privilegesarreglo
Los privilegios que se agregan al rol. Para conocer el formato de un privilegio,
privilegesconsulte.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 método puede otorgar uno o más privilegios.
db.grantPrivilegesToRole()Cada<privilege>tiene la siguiente sintaxis:{ resource: { <resource> }, actions: [ "<action>", ... ] }
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.grantPrivilegesToRole() se ejecuta utilizando el nivel de confirmación de escritura "majority" por defecto.
Alcance
A excepción de los roles creados en la base de datos admin, un rol solo puede incluir privilegios que se apliquen a su base de datos
Un rol creado en la admin base de datos puede incluir privilegios que se aplican a la admin base de datos, a otras bases de datos o al recurso del clúster.
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
Debe tener la grantRole acción en la base de datos a la que se dirige un privilegio para otorgar el privilegio. Para otorgar un privilegio en varias bases de datos o en el cluster recurso, debe tener la acción en grantRole la admin base de datos.
Ejemplo
La siguiente operación otorga dos privilegios adicionales db.grantPrivilegesToRole() al inventoryCntrl01 rol, que existe en la products base de datos. La operación se ejecuta en esa base de datos:
use products db.grantPrivilegesToRole( "inventoryCntrl01", [ { resource: { db: "products", collection: "" }, actions: [ "insert" ] }, { resource: { db: "products", collection: "system.js" }, actions: [ "find" ] } ], { w: "majority" } )
El primer privilegio permite a los usuarios con este rol realizar la insert acción en todas las colecciones de la products base de datos, excepto las colecciones del sistema. Para acceder a una colección del sistema, el privilegio debe especificarla explícitamente en el documento de recursos, como en el segundo privilegio.
El segundo privilegio permite a los usuarios con este rol realizar la find acción en la product colección del sistema de la base de datos system.js denominada.