Página inicial do Docs → Desenvolver aplicações → Manual do MongoDB
Papéis integrados
Nesta página
O MongoDB concede acesso a dados e comandos por meio de 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. 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.
Cada uma das roles construídas no MongoDB define o acesso no nível do banco de dados para todas as collections que não estejam no sistema no 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 role incorporado. 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
Você pode atribuir as seguintes roles integradas de usuário do banco de dados para implantações hospedadas no MongoDB Atlas:
Role do MongoDB | Nome da role na UI do MongoDB Atlas | Roles herdadas ou ações de privilégio |
---|---|---|
atlasAdmin | Atlas admin | |
readWriteAnyDatabase | Read and write to any database | |
readAnyDatabase | Only read any database |
Você pode criar usuários de banco de dados e atribuir funções integradas na IU do MongoDB Atlas. Para saber mais, consulte Adicionar usuários de banco de dados.
Roles integradas de implantação auto-hospedada
O MongoDB fornece as seguintes roles integradas para implantações auto-hospedadas:
Roles de utilizador de banco de dados e administração de banco de dados em todos os bancos 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 fornece privilégios para acessar diretamente a coleção
system.namespaces
.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:
RecursoAçõ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 role combina os privilégios concedidos pelas roles
readWrite
,dbAdmin
euserAdmin
.
userAdmin
Fornece a capacidade de criar e modificar roles e usuários no banco de dados atual. Como a role
userAdmin
permite que os usuários concedam qualquer privilégio a qualquer usuário, inclusive a si mesmos, a role também fornece indiretamente acesso de superusuário ao banco de dados ou, se o escopo for o banco de dadosadmin
, ao cluster.A role
userAdmin
fornece explicitamente as seguintes ações:Aviso
É importante entender as implicações de segurança da concessão da role
userAdmin
: um usuário com essa role para um banco de dados pode atribuir a si mesmo qualquer privilégio nesse banco de dados. Conceder a roleuserAdmin
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, incluindouserAdminAnyDatabase
.
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 role combina os privilégios concedidos pelas roles
clusterManager
,clusterMonitor
ehostManager
. Além disso, a role fornece a açãodropDatabase
.
clusterManager
Fornece ações de gerenciamento e monitoramento no cluster. Um usuário com esta role pode acessar os bancos de dados
config
elocal
, que são utilizados na fragmentação e replicação, respectivamente.RecursoAçõesTodos bancos de dadosclusterManager
fornece privilégios adicionais para os bancos de dadosconfig
elocal
.No banco de dados
config
, permite as seguintes ações:RecursoAçõesTodas as collections que não são do sistema no banco de dadosconfig
No banco de dados
local
, permite as seguintes ações:RecursoAçõ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:RecursoAçõ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:RecursoAçõesTodas as collections no banco de dadoslocal
system.js
collection
enableSharding
Fornece a capacidade de habilitar a fragmentação de uma collection e modificar chaves de shard existentes.
Fornece as seguintes ações em todas as collections 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:
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 role 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
.O papel do
backup
fornece privilégios adicionais para criar uma cópia de segurança da coleção dosystem.profile
que existe ao executar com 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 os dados não incluírem dados da collection
system.profile
e você executar omongorestore
sem a opção--oplogReplay
.Se o backup de dados incluir dados de collection 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 coleta
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 restauresystem.profile
documentos. Como tal, o usuário requer privilégios adicionais para executarcreateCollection
econvertToCapped
ações na coleçãosystem.profile
para um banco de dados.As funções incorporadas
dbAdmin
edbAdminAnyDatabase
fornecem os privilégios adicionais.--oplogReplay
Para executar com
--oplogReplay
, crie um role definido 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 o
restore
inclua a capacidade de modificar os documentos na collectionadmin.system.users
utilizando operações de modificação normais, somente modifique esses dados utilizando os métodos de gerenciamento do usuário.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
:
readAnyDatabase
Fornece os mesmos privilégios somente leitura que
read
em todos os bancos de dados, excetolocal
econfig
. A role também fornece a açãolistDatabases
no cluster como um todo.Consulte também as roles
clusterManager
eclusterMonitor
para acesso aos bancos de dadosconfig
elocal
.
readWriteAnyDatabase
Fornece os mesmos privilégios que
readWrite
em todos os bancos de dados, excetolocal
econfig
. A role também oferece:a ação
listDatabases
no cluster como um todo
Consulte também as roles
clusterManager
eclusterMonitor
para 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 role
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 role não autorize explicitamente privilégios além da administração do usuário. Essa role é efetivamente um superusuáriodo sistema MongoDB.Consulte também as roles
clusterManager
eclusterMonitor
para acesso aos bancos de dadosconfig
elocal
.
dbAdminAnyDatabase
Fornece os mesmos privilégios que
dbAdmin
em todos os bancos de dados, excetolocal
econfig
. A role também fornece a açãolistDatabases
no cluster como um todo.Consulte também as roles
clusterManager
eclusterMonitor
para 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 role
dbOwner
, quando definido o escopo para o banco de dadosadmin
A role
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 a ação de privilégio
validate
em collectionssystem.
.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.