Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Papéis integrados

Nesta página

  • Roles construídas no MongoDB Atlas
  • Roles integradas de implantação auto-hospedada
  • Roles do utilizador de banco de dados
  • Roles de administração do banco de dados
  • Roles de administração de cluster
  • Roles de backup e restauração
  • Roles de todos os bancos de dados
  • Roles de superusuário
  • Role interna

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

  • Roles integradas de implantação auto-hospedada

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.

O MongoDB fornece as seguintes roles integradas para implantações auto-hospedadas:

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 comando listDatabases 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ção authorizedDatabases não especificada ou definida como true.

readWrite

Fornece todos os privilégios da role read além da habilidade de modificar dados em todas as collections que nãosejam do sistema e na collection system.js .

A role fornece as seguintes ações nessas collections:

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:

Recurso
Ações permitidas
Todas 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 e userAdmin .

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 dados admin , 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 role userAdmin no banco de dados admin tem outras implicações de segurança, pois isso fornece indiretamente acesso de superusuário a um cluster. Com o escopo admin , um usuário com a função userAdmin pode conceder funções ou privilégios em todo o cluster, incluindo userAdminAnyDatabase.

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 e hostManager . Além disso, a role fornece a ação dropDatabase .

clusterManager

Fornece ações de gerenciamento e monitoramento no cluster. Um usuário com esta role pode acessar os bancos de dados config e local, que são utilizados na fragmentação e replicação, respectivamente.

Recurso
Ações

clusterManager fornece privilégios adicionais para os bancos de dados config e local .

No banco de dados config, permite as seguintes ações:

Recurso
Ações
Todas as collections que não são do sistema no banco de dados config

No banco de dados local, permite as seguintes ações:

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 collections system.profile no cluster.

No banco de dados config, permite as seguintes ações:

No banco de dados local, permite as seguintes ações:

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:

Em todos os bancos de dados do cluster, fornece as seguintes ações:

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ância mongod inteira.

Fornece as ações insert e update na collection settings no banco de dados config.

Em anyResource, fornece o

No cluster como um todo, fornece

Fornece a ação find no seguinte:

Fornece as ações insert e update na collection config.settings.

O papel do backup fornece privilégios adicionais para criar uma cópia de segurança da coleção do system.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 o mongorestore 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ção system.profile , mongorestore tentará criar a coleção mesmo que o programa não restaure system.profile documentos. Como tal, o usuário requer privilégios adicionais para executar createCollection e convertToCapped ações na coleção system.profile para um banco de dados.

As funções incorporadas dbAdmin e dbAdminAnyDatabase fornecem os privilégios adicionais.

--oplogReplay

Para executar com --oplogReplay, crie um role definido pelo usuário que tenha anyAction em anyResource.

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 dados local:

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 e system.users herdadas:

Embora o restore inclua a capacidade de modificar os documentos na collection admin.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 :

No cluster como um todo, fornece as seguintes ações:

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, exceto local e config. A role também fornece a ação listDatabases no cluster como um todo.

Consulte também as roles clusterManager e clusterMonitor para acesso aos bancos de dados config e local .

readWriteAnyDatabase

Fornece os mesmos privilégios que readWrite em todos os bancos de dados, exceto local e config. A role também oferece:

Consulte também as roles clusterManager e clusterMonitor para acesso aos bancos de dados config e local .

userAdminAnyDatabase

Fornece o mesmo acesso às operações de administração do usuário como userAdmin em todos os bancos de dados, exceto local e config.

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 e system.roles no banco de dados admin e nas collections system.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ários userAdminAnyDatabase 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 e clusterMonitor para acesso aos bancos de dados config e local .

dbAdminAnyDatabase

Fornece os mesmos privilégios que dbAdmin em todos os bancos de dados, exceto local e config. A role também fornece a ação listDatabases no cluster como um todo.

Consulte também as roles clusterManager e clusterMonitor para acesso aos bancos de dados config e local .

A partir do MongoDB 5.0, dbAdminAnyDatabase inclui a ação de privilégio applyOps .

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 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 collections system..

Alterado na versão 6.0: A role root inclui privilégios find e remove na collection system.preimages no banco de dados config.

__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 conceda anyAction em anyResource e garanta que somente os usuários que precisam de acesso a essas operações tenham esse acesso.

← Controle de acesso com base em função