Definición
rolesInfoDevuelve información sobre la herencia y los privilegios de los roles especificados, incluyendo tanto Roles definidos por el usuario y roles integrados.
La
rolesInfoel comando también puede recuperar todos los roles limitados a una base de datos.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte 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.
Sintaxis
El comando tiene la siguiente sintaxis:
db.runCommand( { rolesInfo: { role: <name>, db: <db> }, showAuthenticationRestrictions: <Boolean>, showBuiltinRoles: <Boolean>, showPrivileges: <Boolean>, comment: <any> } )
Campos de comandos
El comando toma los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| string, documento, arreglo o entero | El(los) rol(es) sobre el(los) cual(es) devolver información. Para conocer la sintaxis para especificar los roles, consulte Comportamiento. |
| booleano | opcional. Establezca este campo en De forma predeterminada, este campo es |
| booleano | opcional. Cuando el campo |
| booleano | Opcional. Configure el campo como |
| 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.). |
Comportamiento
Información de retorno para un rol único
Para especificar un rol de la base de datos actual, especifique el rol por su nombre:
{ rolesInfo: "<rolename>" }
Para especificar un rol de otra base de datos, especifique el rol mediante un documento que especifique el rol y la base de datos:
{ rolesInfo: { role: "<rolename>", db: "<database>" } }
Información de retorno para roles múltiples
Para especificar varios roles, use una matriz. Especifique cada rol de la matriz como un documento o una cadena. Use una cadena solo si el rol existe en la base de datos donde se ejecuta el comando:
{ rolesInfo: [ "<rolename>", { role: "<rolename>", db: "<database>" }, ... ] }
Información de retorno para todos los roles en la Base de Datos
Para especificar todos los roles en la base de datos donde se ejecuta el comando, especifique rolesInfo: 1. Por defecto, MongoDB muestra todos los roles definidos por el usuario en la base de datos. Para incluir también roles integrados, incluyes el par de valor de parámetro showBuiltinRoles: true:
{ rolesInfo: 1, showBuiltinRoles: true }
Acceso requerido
Para ver la información de un rol, debe tener el rol otorgado explícitamente o debe tener la viewRole acción en la base de datos del rol.
Salida
rolesInfo.dbLa base de datos donde se define el rol. Cada base de datos tiene roles predefinidos. Una base de datos también puede tener roles definidos por el usuario.
rolesInfo.isBuiltinUn valor de
trueindica que el rol es un rol incorporado. Un valor defalseindica que el rol es un rol definido por el usuario.
rolesInfo.rolesLos roles que proporcionan directamente privilegios a este rol y las bases de datos en las que se definen los roles.
rolesInfo.inheritedRolesTodos los roles de los que este rol hereda privilegios. Esto incluye los roles en el arreglo
rolesInfo.rolesasí como los roles de los que los roles en el arreglorolesInfo.rolesheredan privilegios. Todos los privilegios se aplican al rol actual. Los documentos en este campo enumeran los roles y las bases de datos en las que están definidos.
rolesInfo.privilegesLos privilegios especificados directamente por este rol; es decir, el arreglo excluye privilegios heredados de otros roles. Por defecto, la salida no incluye el campo
privileges. Para incluir el campo, especifiqueshowPrivileges: trueal ejecutar el comandorolesInfo.Cada documento de privilegio especifica los recursos y las acciones permitidas sobre los recursos.
rolesInfo.inheritedPrivilegesTodos los privilegios concedidos por este rol, incluidos los heredados de otros roles. Por defecto, la salida no incluye el campo
inheritedPrivileges. Para incluir el campo, especificashowPrivileges: trueal ejecutar el comandorolesInfo.Cada documento de privilegio especifica los recursos y las acciones permitidas sobre los recursos.
Ejemplos
Los ejemplos de esta sección muestran cómo utilizar el comando rolesInfo para:
Ver información para un rol individual
El siguiente comando devuelve la información sobre la herencia de roles para el rol associate definido en la base de datos products:
db.runCommand( { rolesInfo: { role: "associate", db: "products" } } )
El siguiente comando devuelve la información de herencia de roles para el rol siteManager en la base de datos en la que se ejecuta el comando:
db.runCommand( { rolesInfo: "siteManager" } )
El siguiente comando devuelve tanto la herencia del rol como los privilegios para el rol associate definido en la products base de datos:
db.runCommand( { rolesInfo: { role: "associate", db: "products" }, showPrivileges: true } )
Ver información de varios roles
El siguiente comando devuelve información para dos roles en dos bases de datos diferentes:
db.runCommand( { rolesInfo: [ { role: "associate", db: "products" }, { role: "manager", db: "resources" } ] } )
Se devuelven los siguientes tanto la herencia de roles como los privilegios:
db.runCommand( { rolesInfo: [ { role: "associate", db: "products" }, { role: "manager", db: "resources" } ], showPrivileges: true } )
Ver todos los roles definidos por el usuario para una base de datos
La siguiente operación devuelve todos los roles definidos por el usuario en la base de datos donde se ejecuta el comando e incluye privilegios:
db.runCommand( { rolesInfo: 1, showPrivileges: true } )
Ejemplo de salida (abreviado para facilitar la lectura):
{ roles: [ { _id: 'products.associate', role: 'associate', db: 'products', privileges: [ { resource: { db: 'products', collection: '' }, actions: [ 'bypassDocumentValidation' ] } ], roles: [ { role: 'readWrite', db: 'products' } ], isBuiltin: false, inheritedRoles: [ { role: 'readWrite', db: 'products' } ], inheritedPrivileges: [ { resource: { db: 'products', collection: '' }, actions: [ 'bypassDocumentValidation' ] }, { resource: { db: 'products', collection: '' }, actions: [ 'changeStream', 'collStats', 'compactStructuredEncryptionData', ... ] }, ... ] } ], ok: 1 }
Ver todos los roles definidos por el usuario y las funcionalidades incorporadas para una base de datos
La siguiente operación devuelve todos los roles en la base de datos en la que se ejecuta el comando, incluidos los roles integrados y definidos por el usuario:
db.runCommand( { rolesInfo: 1, showBuiltinRoles: true } )
Ejemplo de salida (abreviado para facilitar la lectura):
{ roles: [ { role: 'enableSharding', db: 'products', isBuiltin: true, roles: [], inheritedRoles: [] }, { role: 'userAdmin', db: 'products', isBuiltin: true, roles: [], inheritedRoles: [] }, { role: 'read', db: 'products', isBuiltin: true, roles: [], inheritedRoles: [] }, ... ], ok: 1 }
Ver Restricciones de autenticación para roles
La siguiente operación devuelve todos los roles definidos por el usuario en la base de datos products e incluye restricciones de autenticación:
db.runCommand( { rolesInfo: 1, showAuthenticationRestrictions: true } )
Ejemplo de salida:
{ roles: [ { _id: 'products.associate', role: 'associate', db: 'products', roles: [ { role: 'readWrite', db: 'products' } ], authenticationRestrictions: [ [ { clientSource: [ '198.51.100.0' ] } ] ], isBuiltin: false, inheritedRoles: [ { role: 'readWrite', db: 'products' } ], inheritedAuthenticationRestrictions: [ [ { clientSource: [ '198.51.100.0' ] } ] ] } ], ok: 1 }