Roles integradas em implantações autogerenciadas
Nesta página
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
.
As implantações do MongoDB Atlas têm roles integradas diferentes das implantações auto-hospedadas. Para saber mais, consulte os seguintes recursos:
Roles construídas no MongoDB Atlas
Para as funções de usuário de banco de dados de dados integradas para implantações hospedadas 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.
Roles integradas de implantação auto-hospedada
O MongoDB fornece as seguintes roles integradas para implantações auto-hospedadas:
Funções de usuário de banco de dados e administração de banco de dados em cada banco de dados
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:
read
Fornece 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.namespaces
diretamente.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 comandolistDatabases
para 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çãoauthorizedDatabases
nã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:
dbAdmin
Fornece 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)
dbOwner
O 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
,dbAdmin
euserAdmin
.
userAdmin
Fornece a capacidade de criar e modificar funções e usuários no banco de dados atual. Como a função
userAdmin
permite 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
userAdmin
oferece 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çãouserAdmin
no banco de dadosadmin
tem 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çãouserAdmin
pode 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.
clusterAdmin
Fornece o melhor acesso ao gerenciamento de clusters. Esta função combina os privilégios concedidos pelas funções
clusterManager
,clusterMonitor
ehostManager
. Além disso, a função fornece a açãodropDatabase
.
clusterManager
Fornece ações de gerenciamento e monitoramento no cluster. Um usuário com essa função pode acessar os bancos de dados
config
elocal
, que são utilizados na fragmentação e replicação, respectivamente. Além disso, a função fornece a açãoquerySettings
.ResourceAçõesTodos databasesclusterManager
fornece privilégios adicionais para os bancos de dadosconfig
elocal
.No banco de dados
config
, permite as seguintes ações:ResourceAçõesTodas as collections que não são do sistema no banco de dadosconfig
No banco de dados
local
, permite as seguintes ações:ResourceAçõesTodas as collections que não são do sistema no banco de dadoslocal
system.replset
collection
clusterMonitor
Fornece 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
find
em todas as collectionssystem.profile
no 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 dadosconfig
system.js
collectionNo banco de dados
local
, permite as seguintes ações:ResourceAçõesTodas as collections que não são do sistema no banco de dadoslocal
system.js
collection
directShardOperations
A partir do MongoDB 8.0, você pode usar a função
directShardOperations
para executar operações de manutenção que exigem a execução de comandos diretamente em um fragmento.Aviso
Executar comandos utilizando a função
directShardOperations
pode fazer com que seu cluster pare de funcionar corretamente e pode causar corrupção de dados. Use a funçãodirectShardOperations
apenas para fins de manutenção ou sob a orientação do suporte do MongoDB . Quando terminar de executar as operações de manutenção, pare de usar a funçãodirectShardOperations
.
enableSharding
Fornece 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:
hostManager
Oferece a capacidade de monitorar e gerenciar servidores.
No cluster como um todo, fornece as seguintes ações:
compact
(Novo na versão 7.3)
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:
backup
Fornece 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
mongodump
para fazer backup de uma instânciamongod
inteira.Fornece as ações
insert
eupdate
na collectionsettings
no banco de dadosconfig
.Em
anyResource
, fornece olistDatabases
açãolistCollections
açãolistIndexes
açãolistSearchIndexes
ação
No cluster como um todo, fornece
setUserWriteBlockMode
(A partir do MongoDB 6.0)
Fornece a ação
find
no seguinte:todas as collections não relacionadas ao sistema no cluster, incluindo aquelas nos bancos de dados
config
elocal
As seguintes collections de sistema no cluster:
As collections
admin.system.users
eadmin.system.roles
A collection
config.settings
Collections
system.users
herdadas de versões do MongoDB anteriores à 2.6
Fornece as ações
insert
eupdate
na collectionconfig.settings
.A função
backup
fornece privilégios adicionais para fazer backup da coleçãosystem.profile
existente durante a execução da criação de perfil do banco de dados.
restore
Fornece
convertToCapped
em 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.profile
e você executar omongorestore
sem a opção--oplogReplay
.Se o backup de dados incluir dados de coleção do
system.profile
ou se executar com--oplogReplay
, você precisará de privilégios adicionais:system.profile
Se os dados de backup incluírem dados de coleção
system.profile
e o banco de dados de destino não contiver a coleçãosystem.profile
,mongorestore
tentará criar a coleção mesmo que o programa não restaure documentossystem.profile
. Como tal, o usuário requer privilégios adicionais para executarcreateCollection
econvertToCapped
ações na coleçãosystem.profile
para um banco de dados.Ambas as funções integradas
dbAdmin
edbAdminAnyDatabase
fornecem os privilégios adicionais.--oplogReplay
Para executar com
--oplogReplay
, crie uma função definida pelo usuário que tenhaanyAction
emanyResource
.Conceda somente aos usuários que devem executar
mongorestore
com--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
config
e nos bancos de dadoslocal
:Fornece as seguintes ações em
admin.system.version
Fornece a seguinte ação em
admin.system.roles
Fornece as seguintes ações em collections
admin.system.users
esystem.users
herdadas:Embora
restore
inclua a capacidade de modificar os documentos da coleçãoadmin.system.users
usando 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 7.2)
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
:
readAnyDatabase
Fornece os mesmos privilégios somente leitura que
read
em todos os bancos de dados, excetolocal
econfig
. A função também fornece a açãolistDatabases
no cluster como um todo.Consulte também as funções
clusterManager
eclusterMonitor
para obter acesso aos bancos de dadosconfig
elocal
.
readWriteAnyDatabase
Fornece os mesmos privilégios que
readWrite
em todos os bancos de dados, excetolocal
econfig
. A função também oferece:a ação
listDatabases
no cluster como um todo
Consulte também as funções
clusterManager
eclusterMonitor
para obter acesso aos bancos de dadosconfig
elocal
.
userAdminAnyDatabase
Fornece o mesmo acesso às operações de administração do usuário como
userAdmin
em todos os bancos de dados, excetolocal
econfig
.userAdminAnyDatabase
também fornece as seguintes ações de privilégio no cluster:A role fornece as seguintes ações de privilégio nas collections
system.users
esystem.roles
no banco de dadosadmin
e nas collectionssystem.users
herdadas de versões do MongoDB anteriores à 2.6:A função
userAdminAnyDatabase
não restringe os privilégios que um usuário pode conceder. Como resultado, os usuáriosuserAdminAnyDatabase
podem 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
clusterManager
eclusterMonitor
para obter acesso aos bancos de dadosconfig
elocal
.
dbAdminAnyDatabase
Fornece os mesmos privilégios que
dbAdmin
em todos os bancos de dados, excetolocal
econfig
. A função também fornece a açãolistDatabases
no cluster como um todo.Consulte também as funções
clusterManager
eclusterMonitor
para obter acesso aos bancos de dadosconfig
elocal
.A partir do MongoDB 5.0,
dbAdminAnyDatabase
inclui 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 dadosadmin
A função
userAdmin
, quando definido o escopo para o banco de dadosadmin
userAdminAnyDatabase
papel
A seguinte role fornece privilégios totais em todos os recursos:
root
Fornece acesso às operações e a todos os recursos das seguintes roles combinadas:
Também fornece as seguintes ações de privilégio:
validate
emsystem.
coleções.bypassDefaultMaxTimeMS
, o que faz com que todas as queries executadas pelo usuário ignorem o valor dedefaultMaxTimeMS
.
Alterado na versão 6.0: A role
root
inclui privilégiosfind
eremove
na collectionsystem.preimages
no banco de dadosconfig
.
Role interna
__system
O 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 concedaanyAction
emanyResource
e garanta que somente os usuários que precisam de acesso a essas operações tenham esse acesso.