Definición
rolesInfoDevuelve información de herencia y privilegios para roles específicos, incluidos ambos Roles definidos por el usuario y roles integrados.
El comando también puede recuperar todos los roles incluidos en una base de
rolesInfodatos.
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 |
|---|---|---|
| cadena, documento, matriz o entero | Los roles sobre los que se devolverá información. Para conocer la sintaxis para especificar roles, consulte Comportamiento. |
| booleano | Opcional. Configure este campo como De forma predeterminada, este campo es |
| booleano | Opcional. Si el |
| 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>" }, ... ] }
Devolver información para todos los roles en la base de datos
Para especificar todos los roles en la base de datos donde se ejecuta el comando,rolesInfo: 1 especifique. De forma predeterminada, MongoDB muestra todos los roles definidos por el usuario en la base de datos. Para incluir también los roles integrados, incluya el par showBuiltinRoles: true parámetro-valor:
{ 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 integrado. Un valor defalseindica que el rol es un rol definido por el usuario.
rolesInfo.rolesLos roles que proporcionan privilegios directamente 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 de la matriz, así como los roles
rolesInfo.rolesrolesInfo.rolesde los que los roles de la matriz heredan privilegios. Todos los privilegios se aplican al rol actual. Los documentos de 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, la matriz excluye los privilegios heredados de otros roles. Por defecto, la salida no incluye el campo. Para incluirlo,
privilegesespecifiqueshowPrivileges: trueal ejecutar elrolesInfocomando.Cada documento de privilegio especifica los recursos y las acciones permitidas sobre los recursos.
rolesInfo.inheritedPrivilegesTodos los privilegios otorgados por este rol, incluidos los heredados de otros roles. De forma predeterminada, la salida no incluye el
inheritedPrivilegescampo. Para incluirlo, especifiqueshowPrivileges: trueal ejecutar elrolesInfocomando.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 todos los roles definidos por el usuario para una base de datos
Ver todos los roles definidos por el usuario e integrados para una base de datos
Ver información para un rol individual
El siguiente comando devuelve la información de herencia de rol 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 rol 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 para múltiples 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" } ] } )
Lo siguiente devuelve tanto la herencia del rol 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 en la que 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 e integrados 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 }