Definição
rolesInfoRetorna informações de herança e privilégio para roles especificados, incluindo definidos pelo usuário e roles embutidos.
O comando
rolesInfotambém pode recuperar todos os papéis com escopo para um banco de dados de dados.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Observação
Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
O comando tem a seguinte sintaxe:
{ rolesInfo: { role: <name>, db: <db> }, showAuthenticationRestrictions: <Boolean>, showBuiltinRoles: <Boolean>, showPrivileges: <Boolean>, comment: <any> }
Campos de comando
O comando utiliza os seguintes campos:
Campo | Tipo | Descrição |
|---|---|---|
| string, document, array ou inteiro | As funções sobre as quais retornar informações. Para saber a sintaxe para especificar funções, consulte Comportamento. |
| booleano | Opcional. Configure este campo como Por padrão, este campo é |
| booleano | Opcional. Quando o campo |
| booleano | Opcional. Configure o campo como |
| any | Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:
Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc). |
Comportamento
Retornar informações para uma única função
Para especificar uma role a partir do banco de banco de dados atual, especifique a role pelo nome:
{ rolesInfo: "<rolename>" }
Para especificar uma role de outro banco de dados, especifique a role por um documento que especifica a role e o banco de dados:
{ rolesInfo: { role: "<rolename>", db: "<database>" } }
Retorno de informações para vários roles
Para especificar múltiplos roles, use um array. Especifique cada role na array como um documento ou string. Use uma string somente se a função existir no banco de dados no qual o comando é executado:
{ rolesInfo: [ "<rolename>", { role: "<rolename>", db: "<database>" }, ... ] }
Retornar informações para todos os roles no banco de dados
Para especificar todos os papéis no banco de dados no qual o comando é executado, especifique rolesInfo: 1. Por padrão, o MongoDB exibe todos os roles definidos pelo usuário no banco de dados. Para incluir também roles incorporadas , inclua o par parâmetro-valor showBuiltinRoles: true:
{ rolesInfo: 1, showBuiltinRoles: true }
Acesso necessário
Para visualizar as informações de um role, você deve ter recebido explicitamente a função ou deve ter a viewRole ação no banco de dados do role.
Saída
rolesInfo.dbO banco de dados de dados no qual o papel é definido. Todo banco de dados de dados tem roles integrados. Um banco de dados de dados também pode ter funções definidas pelo usuário.
rolesInfo.isBuiltinUm valor de
trueindica que o papel é um papel embutido. Um valor defalseindica que o papel é um papel definido pelo usuário.
rolesInfo.rolesAs roles que fornecem privilégios diretamente a esta role e os bancos de dados nos quais as roles são definidas.
rolesInfo.inheritedRolesTodas as funções das quais esta herda privilégios. Isso inclui as roles na array
rolesInfo.roles, bem como as roles das quais as roles na arrayrolesInfo.rolesherdam privilégios. Todos os privilégios se aplicam à função atual. Os documentos neste campo listam as funções e os bancos de dados nos quais elas são definidas.
rolesInfo.privilegesOs privilégios especificados diretamente por esta role; ou seja, a array exclui privilégios herdados de outras roles. Por padrão, a saída não inclui o campo
privileges. Para incluir o campo, especifiqueshowPrivileges: trueao executar o comandorolesInfo.Cada documento de privilégio especifica os recursos e as ações permitidas nos recursos.
rolesInfo.inheritedPrivilegesTodos os privilégios concedidos por esta role, incluindo os herdados de outras roles. Por padrão, a saída não inclui o campo
inheritedPrivileges. Para incluir o campo, especifiqueshowPrivileges: trueao executar o comandorolesInfo.Cada documento de privilégio especifica os recursos e as ações permitidas nos recursos.
Exemplos
Os exemplos nesta seção mostram como utilizar o comando rolesInfo para:
Ver todas as funções definidas pelo usuário para um banco de dados
Visualizar todas as funções definidas pelo usuário e integradas para um banco de dados
Visualizar informações para uma única função
O seguinte comando retorna as informações de herança da role para a role associate definidas no banco de dados products :
db.runCommand( { rolesInfo: { role: "associate", db: "products" } } )
O seguinte comando retorna as informações de herança da role para a role siteManager no banco de banco de dados no qual o comando é executado:
db.runCommand( { rolesInfo: "siteManager" } )
O seguinte comando retorna a herança da role e os privilégios da role associate definidos no banco de dados products :
db.runCommand( { rolesInfo: { role: "associate", db: "products" }, showPrivileges: true } )
Visualizar informações para várias funções
O comando a seguir retorna informações para duas roles em dois bancos de dados diferentes:
db.runCommand( { rolesInfo: [ { role: "associate", db: "products" }, { role: "manager", db: "resources" } ] } )
O seguinte retorna a herança do papel e os privilégios:
db.runCommand( { rolesInfo: [ { role: "associate", db: "products" }, { role: "manager", db: "resources" } ], showPrivileges: true } )
Ver todas as funções definidas pelo usuário para um banco de dados
A seguinte operação retorna todas as roles definidas pelo usuário no banco de dados no qual o comando é executado e inclui privilégios:
db.runCommand( { rolesInfo: 1, showPrivileges: true } )
Exemplo de saída (abreviado para facilitar a leitura):
{ 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 }
Visualizar todas as funções definidas pelo usuário e integradas para um banco de dados
A operação a seguir retorna todos os roles no banco de banco de dados no qual o comando é executado, incluindo roles integrados e definidos pelo usuário:
db.runCommand( { rolesInfo: 1, showBuiltinRoles: true } )
Exemplo de saída (abreviado para facilitar a leitura):
{ 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 }
Visualizar restrições de autenticação para roles
A seguinte operação retorna todas as roles definidas pelo usuário no banco de dados do products e inclui restrições de autenticação:
db.runCommand( { rolesInfo: 1, showAuthenticationRestrictions: true } )
Saída de exemplo:
{ 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 }