O MongoDB concede acesso a dados e comandos por meiode autorização baseada em role e fornece roles internas que fornecem os diferentes níveis de acesso comumente necessários em um sistema de banco de dados de dados. Você também pode criar roles definidas pelo usuário.
Uma role concede privilégios para executar conjuntos de ações em recursos definidos. Uma determinada role se aplica ao banco de dados no qual está definida e pode conceder acesso até um nível de granularidade da collection.
As collections do sistema incluem aquelas em:
<database>.system.*namespacelocal.replset.*namespace do conjunto de réplicas
Para obter detalhes, consulte Coleções do sistema.
Collections não relacionadas ao sistema são aquelas que não estão nos namespaces na lista anterior.
Cada uma das roles construídas no MongoDB define o acesso no nível do banco de dados de dados para todas as collections nãorelacionadas ao sistema no banco de banco de dados da role e no nível de collection para todas as collections do sistema.
Esta seção descreve os privilégios para cada função incorporada. Você também pode visualizar os privilégios de uma função incorporada a qualquer momento emitindo o comando rolesInfo com os campos showPrivileges e showBuiltinRoles definidos como true.
Roles construídas no MongoDB Atlas
Embora os usuários de banco de dados no MongoDB Atlas tenham funções integradas diferentes das implantações auto-hospedadas, as funções integradas para cada tipo de implantação são criadas a partir do mesmo conjunto de ações de privilégio.
Para as funções de usuário de banco de dados integradas para sistemas hospedados no MongoDB Atlas, consulte Funções e privilégios integrados do Altas.
Você pode criar utilizadores de banco de dados de dados e atribuir roles construídas na interface de usuário do MongoDB Atlas . Para saber mais, consulte Adicionar usuários do banco de dados.
Papéis integrados do banco de dados
O MongoDB fornece as seguintes roles integradas em implantações auto-hospedadas:
Funções de usuário de banco de dados e administração de banco de dados em bancos de dados específicos
Todas as outras roles somente no banco de dados
admin
Roles do utilizador de banco de dados
Cada banco de dados inclui as seguintes roles de cliente:
readFornece a capacidade de ler dados em todas as collections que não são do sistema e na collection
system.js.Observação
A função não oferece privilégios para acessar diretamente a coleção
system.namespacesdiretamente.A role fornece acesso de leitura ao conceder as seguintes ações:
Se o usuário não tiver a ação de privilégio
listDatabases, poderá executar o comandolistDatabasespara retornar uma lista de bancos de dados nos quais o usuário tem privilégios (incluindo bancos de dados nos quais o usuário tem privilégios em collections específicas) se o comando for executado com a opçãoauthorizedDatabasesnão especificada ou definida comotrue.
Roles de administração do banco de dados
Cada banco de dados inclui as seguintes roles de administração do banco de dados:
dbAdminFornece a capacidade de executar tarefas administrativas, como tarefas relacionadas a esquema, indexação e coleta de estatísticas. Esta role não concede privilégios para gerenciamento de usuários e roles.
Especificamente, a role fornece os seguintes privilégios:
ResourceAções permitidasTodas as collections que não são do sistema (ou seja, recurso de banco de dados)
dbOwnerO proprietário do banco de dados pode executar qualquer ação administrativa no banco de dados. Esta função combina os privilégios concedidos pelas funções
readWrite,dbAdmineuserAdmin.
userAdminFornece a capacidade de criar e modificar funções e usuários no banco de dados atual. Como a função
userAdminpermite que os usuários concedam qualquer privilégio a qualquer usuário, inclusive a si mesmos, a função também fornece indiretamente acesso de superusuário ao banco de dados ou, se o escopo for o banco de dadosadmin, ao cluster.A função
userAdminoferece explicitamente as seguintes ações:Aviso
É importante entender as implicações de segurança da concessão da função
userAdmin: um usuário com essa função para um banco de dados pode atribuir a si mesmo qualquer privilégio nesse banco de dados. Conceder a funçãouserAdminno banco de dadosadmintem outras implicações de segurança, pois isso fornece indiretamente acesso de superusuário a um cluster. Com o escopoadmin, um usuário com a funçãouserAdminpode conceder funções ou privilégios em todo o cluster, inclusiveuserAdminAnyDatabase.
Roles de administração de cluster
O banco de dados admin inclui as seguintes roles para administrar todo o sistema, em vez de apenas um único banco de dados. Essas roles incluem, mas não estão limitadas a, conjunto de réplicas e roles administrativas de cluster fragmentado.
clusterAdminFornece o melhor acesso ao gerenciamento de clusters. Esta função combina os privilégios concedidos pelas funções
clusterManager,clusterMonitorehostManager. Além disso, a função fornece a açãodropDatabase.
clusterManagerFornece ações de gerenciamento e monitoramento no cluster. Um usuário com esta role pode acessar os bancos de dados
configelocal, que são utilizados na fragmentação e replicação, respectivamente.ResourceAçõesTodos databases
clusterManagerfornece privilégios adicionais para os bancosconfigdelocaldados e.No banco de dados
config, permite as seguintes ações:ResourceAçõesTodas as collections que não são do sistema no banco de dados
configNo banco de dados
local, permite as seguintes ações:ResourceAçõesTodas as collections que não são do sistema no banco de dados
localsystem.replsetcollection
clusterMonitorFornece acesso somente leitura a ferramentas de monitoramento, como o agente de monitoramento do MongoDB Cloud Manager e do Ops Manager.
Permite as seguintes ações no cluster como um todo:
Permite as seguintes ações em todos os bancos de dados do cluster:
Permite a ação
findem todas as collectionssystem.profileno cluster.No banco de dados
config, permite as seguintes ações:ResourceAçõesTodas as collections que não são do sistema no banco de dados
configsystem.jscollectionNo banco de dados
local, permite as seguintes ações:ResourceAçõesTodas as collections que não são do sistema no banco de dados
localsystem.jscollection
enableShardingFornece a capacidade de habilitar a fragmentação para uma coleção e modificar chaves de fragmento existentes.
Fornece as seguintes ações em todas as coleções que não são do sistema:
hostManagerOferece a capacidade de monitorar e gerenciar servidores.
No cluster como um todo, fornece as seguintes ações:
rotateCertificates(Novidade na versão 5.0)
Em todos os bancos de dados do cluster, fornece as seguintes ações:
Roles de backup e restauração
O banco de dados admin inclui as seguintes roles para backup e restauração de dados:
backupFornece os privilégios mínimos necessários para fazer backup dos dados. Essa função fornece privilégios suficientes para usar o agente de backup do MongoDB Cloud Manager, o agente de backup do Ops Manager ou usar
mongodumppara fazer backup de uma instânciamongodinteira.Fornece as ações
inserteupdatena collectionsettingsno banco de dadosconfig.Em
anyResource, fornece olistDatabasesaçãolistCollectionsaçãolistIndexesaçãolistSearchIndexesação
No cluster como um todo, fornece
setUserWriteBlockMode(A partir do MongoDB 6.0)
Fornece a ação
findno seguinte:todas as collections não relacionadas ao sistema no cluster, incluindo aquelas nos bancos de dados
configelocalAs seguintes collections de sistema no cluster:
As collections
admin.system.userseadmin.system.rolesA collection
config.settingsCollections
system.usersherdadas de versões do MongoDB anteriores à 2.6
Fornece as ações
inserteupdatena collectionconfig.settings.A função
backupfornece privilégios adicionais para fazer backup da coleçãosystem.profileexistente durante a execução da criação de perfil do banco de dados.
restoreFornece
convertToCappedem collections não relacionadas ao sistema.Fornece os privilégios necessários para restaurar dados de backups se eles não incluírem os dados da coleção
system.profilee você executar omongorestoresem a opção--oplogReplay.Se o backup de dados incluir dados de coleção do
system.profileou se executar com--oplogReplay, você precisará de privilégios adicionais:system.profileSe os dados de backup incluírem dados de coleção
system.profilee o banco de dados de destino não contiver a coleçãosystem.profile,mongorestoretentará criar a coleção mesmo que o programa não restaure documentossystem.profile. Como tal, o usuário requer privilégios adicionais para executarcreateCollectioneconvertToCappedações na coleçãosystem.profilepara um banco de dados.As funções incorporadas
dbAdminedbAdminAnyDatabasefornecem os privilégios adicionais.--oplogReplayPara executar com
--oplogReplay, crie uma função definida pelo usuário que tenhaanyActionemanyResource.Conceda somente aos usuários que devem executar
mongorestorecom--oplogReplay.Fornece a seguinte ação no cluster como um todo:
Fornece as seguintes ações em todas as collections que não são do sistema:
Fornece as seguintes ações na collection
system.js:Fornece a seguinte ação em
anyResource:Fornece as seguintes ações em todas as collections não relacionadas ao sistema no
confige nos bancos de dadoslocal:Fornece as seguintes ações em
admin.system.versionFornece a seguinte ação em
admin.system.rolesFornece as seguintes ações em collections
admin.system.usersesystem.usersherdadas:Embora
restoreinclua a capacidade de modificar os documentos da coleçãoadmin.system.usersusando operações normais de modificação, modifique esses dados somente usando os métodos de gerenciamento de usuários.Fornece a seguinte ação na collection
<database>.system.views:dropCollection(A partir do MongoDB 6.0)
No cluster como um todo, fornece as seguintes ações:
bypassWriteBlockingMode(A partir do MongoDB 6.0)setUserWriteBlockMode(A partir do MongoDB 6.0)
Roles de todos os bancos de dados
As roles a seguir estão disponíveis no banco de dados admin e fornecem privilégios que se aplicam a todos os bancos de dados, exceto local e config:
readAnyDatabaseFornece os mesmos privilégios somente leitura que
readem todos os bancos de dados, excetolocaleconfig. A função também fornece a açãolistDatabasesno cluster como um todo.Consulte também as funções
clusterManagereclusterMonitorpara obter acesso aos bancos de dadosconfigelocal.
readWriteAnyDatabaseFornece os mesmos privilégios que
readWriteem todos os bancos de dados, excetolocaleconfig. A função também oferece:a ação
listDatabasesno cluster como um todo
Consulte também as funções
clusterManagereclusterMonitorpara obter acesso aos bancos de dadosconfigelocal.
userAdminAnyDatabaseFornece o mesmo acesso às operações de administração do usuário como
userAdminem todos os bancos de dados, excetolocaleconfig.userAdminAnyDatabasetambém fornece as seguintes ações de privilégio no cluster:A role fornece as seguintes ações de privilégio nas collections
system.usersesystem.rolesno banco de dadosadmine nas collectionssystem.usersherdadas de versões do MongoDB anteriores à 2.6:A função
userAdminAnyDatabasenão restringe os privilégios que um usuário pode conceder. Como resultado, os usuáriosuserAdminAnyDatabasepodem conceder a si mesmos privilégios além dos atuais e até mesmo conceder a si mesmos todos os privilégios, mesmo que a função não autorize explicitamente privilégios além da administração do usuário. Essa função é efetivamente um superusuário do sistema MongoDB.Consulte também as funções
clusterManagereclusterMonitorpara obter acesso aos bancos de dadosconfigelocal.
dbAdminAnyDatabaseFornece os mesmos privilégios que
dbAdminem todos os bancos de dados, excetolocaleconfig. A função também fornece a açãolistDatabasesno cluster como um todo.Consulte também as funções
clusterManagereclusterMonitorpara obter acesso aos bancos de dadosconfigelocal.A partir do MongoDB 5.0,
dbAdminAnyDatabaseinclui a ação de privilégio applyOps.
Roles de superusuário
Várias roles fornecem acesso indireto ou direto ao superusuário em todo o sistema.
As roles a seguir permitem atribuir a qualquer usuário qualquer privilégio em qualquer banco de dados, o que significa que os usuários com uma dessas roles podem atribuir a si mesmos qualquer privilégio em qualquer banco de dados:
A função
dbOwner, quando definido o escopo para o banco de dadosadminA função
userAdmin, quando definido o escopo para o banco de dadosadminuserAdminAnyDatabasepapel
A seguinte role fornece privilégios totais em todos os recursos:
rootFornece acesso às operações e a todos os recursos das seguintes roles combinadas:
Também fornece a ação de privilégio
validateem collectionssystem..Alterado na versão 6.0: A role
rootinclui privilégiosfinderemovena collectionsystem.preimagesno banco de dadosconfig.
Role interna
__systemO MongoDB atribui essa role a objetos de usuário que representam nós do cluster, como nós do conjunto de réplicas e instâncias
mongos. A role garante ao seu titular o direito de tomar qualquer ação contra qualquer objeto do banco de dados.Não atribua essa role a objetos de usuário que representam aplicativos ou administradores humanos, exceto em circunstâncias excepcionais.
Se você precisar de acesso a todas as ações em todos os recursos, por exemplo, para executar comandos
applyOps, não atribua essa role. Em vez disso, crie uma role definida pelo usuário que concedaanyActionemanyResourcee garanta que somente os usuários que precisam de acesso a essas operações tenham esse acesso.