Pular para o conteúdo principal

Controle de acesso baseado em funções (RBAC) no MongoDB

Descubra como usar RBAC no MongoDB para gerenciar usuários e funções, criar funções personalizadas e aplicar políticas de mínimo privilégio nas suas implantações.
Actualizado 19 de set. de 2026  · 5 min leer

Explore com IA

ChatGPTClaudePerplexity

Com cada vez mais pessoas online, cresce a necessidade de definir permissões e funções para garantir segurança e gerenciar o acesso a aplicativos e sistemas. O controle de acesso baseado em funções é um modelo de autorização usado para controlar o acesso a recursos com base nas funções predefinidas dos usuários. 

No modelo de RBAC do MongoDB, as ações são representadas como funções que são atribuídas aos usuários certos. Em vez de conceder várias permissões individuais, você pode atribuir uma única função (por exemplo, dbAdmin), que já inclui um conjunto definido de permissões (como leitura em coleções do banco de dados). Esse modelo facilita o gerenciamento de acesso dos usuários de forma escalável.

Habilitando RBAC no MongoDB

No modelo central de RBAC, o acesso é negado por padrão, ou seja, os usuários não podem acessar recursos sem possuir uma função. Um usuário pode ter várias funções, e cada função define um conjunto específico de privilégios ou permissões para acessar determinadas capacidades.

Conceitos básicos de RBAC

Aqui estão alguns dos principais conceitos que você precisa conhecer sobre RBAC:

Usuários

No modelo RBAC, um usuário é uma entidade que recebe uma ou mais funções que determinam seu acesso a recursos e operações do banco de dados. Sem atribuição de função, o usuário não acessa o sistema. Para ter acesso, o usuário deve se autenticar e receber ao menos uma função.

Funções

O MongoDB oferece funções e privilégios nativos tanto para implantações autogerenciadas quanto para o MongoDB Atlas. Algumas funções comuns são read, readWrite e dbAdmin/atlasAdmin. As funções de administração de banco de dados têm privilégios mais altos do que as demais, incluindo o privilégio de gerenciar os privilégios de outras funções.

Se essas funções nativas não atenderem ao conjunto desejado de privilégios, o MongoDB permite criar e modificar funções definidas pelo usuário.

Uma função é um conjunto de privilégios atribuídos ao usuário.

Por exemplo, uma função "read" pode ter privilégios somente de leitura; uma função "admin" pode ter leitura e escrita; enquanto a função "owner" pode ter leitura, escrita e exclusão para um item específico (um banco de dados, um documento etc.). Uma função concede privilégios para executar ações específicas em recursos. Cada privilégio pode ser definido explicitamente na função ou herdado de outra função, ou ambos.

Funções definidas pelo usuário / funções personalizadas

O MongoDB fornece diversas funções nativas que administradores podem usar para controlar o acesso a um sistema MongoDB. Porém, se as funções existentes não descreverem os privilégios específicos que você precisa, é possível definir e atribuir novas funções aos usuários em um banco de dados — essas são as funções personalizadas. Com exceção das funções criadas no banco admin, uma função só pode incluir privilégios aplicáveis ao seu próprio banco e só pode herdar de outras funções do mesmo banco.

Para criar uma nova função, use o método db.createRole(), definindo os privilégios no array privileges e as funções herdadas no array roles.

O MongoDB usa a combinação do nome do banco e do nome da função para definir uma função de forma exclusiva, e armazena todas as informações de função na coleção admin.system.roles do banco admin.

Exemplo: este exemplo cria uma função personalizada (sales_attendant) que só pode inserir documentos na coleção sales do banco sales_db.

use sales
db.createRole(
   {
     role: "sales_attendant",
     privileges: [
       {
         resource: { db: "sales_db", collection: "sales" },
         actions: [ "insert" ]
       }
     ],
     roles: []
   }
)

Funções nativas 

Funções nativas são funções pré-criadas atribuídas aos usuários que permitem executar operações como leitura e escrita em coleções de um banco de dados. Exemplos: read, write, readWrite, dbAdmin e readAnyDatabase.

  • read e readWrite (acesso no nível do banco): concedem acesso para realizar, respectivamente, operações somente de leitura ou de leitura/escrita em todas as coleções não sistêmicas dentro de um banco de dados específico.
  • dbAdmin: concede direitos administrativos necessários para gerenciar um banco de dados específico, como criar, remover e modificar índices e coleções. É indicado para times de desenvolvimento ou scripts de manutenção de banco de dados.
  • clusterAdmin (acesso operacional): função de alto privilégio, geralmente reservada para equipes de operações (DevOps/Ops). Concede permissões para gerenciar toda a implantação do MongoDB, incluindo criação de backups periódicos, configuração de replica sets e sharding.

Privilégios (permissões)

Privilégios são um conjunto de ações (por exemplo, find, insert) permitidas sobre uma capacidade.

Por exemplo, se a capacidade é "informar o cliente sobre seu saldo atual", então os privilégios do usuário (por exemplo, o atendente do banco) podem ser somente de leitura. Se a capacidade é aumentar o limite de transações de uma conta, os privilégios podem ser de leitura e escrita.

Privilégios herdados

Uma função pode incluir uma ou mais funções existentes (com todos os seus privilégios). Por exemplo, uma função dbAdmin pode incluir funções de leitura, escrita e atualização (que podem ser funções individuais) com seus respectivos privilégios.

Recursos

Um recurso pode ser um banco de dados, uma coleção, um conjunto de coleções ou o cluster. 

Implementando o princípio do mínimo privilégio

Na segurança moderna de bancos de dados, o Princípio do Mínimo Privilégio (PoLP) é fundamental. Ele estabelece que todo usuário deve receber apenas as permissões mínimas necessárias para executar suas tarefas.

Exemplo de boa prática: em vez de usar um usuário global com readWrite, crie usuários específicos por aplicação. Por exemplo, se seu serviço de inventário interage apenas com o banco app_data, o usuário da aplicação deve ter readWrite somente nesse banco. Essa compartimentação impede que um serviço comprometido acesse indevidamente outros bancos (como billing ou users).

Exemplo de código: 

Criando um usuário com mínimo privilégio. Este exemplo cria um usuário (branch_manager) com acesso de leitura e escrita restrito estritamente ao banco bank_data.

use admin
db.createUser(
   {
     user: "branch_manager",
     pwd: passwordPrompt(),
     roles: [ 
       { role: "readWrite", db: "bank_data" }
     ]
   }
)

Boas práticas

  • Crie e atribua funções e políticas bem definidas com antecedência.
  • Siga o princípio do mínimo privilégio para reforçar a segurança.
  • Use funções nativas sempre que possível; audite periodicamente as funções atribuídas para identificar anomalias.

FAQs

O que é RBAC no MongoDB?

O controle de acesso baseado em funções é um mecanismo de segurança usado para gerenciar o acesso de usuários.

Qual é a diferença entre uma função nativa e uma função personalizada?

Uma função nativa é pré-criada e atribuída aos usuários para permitir operações como leitura e escrita em coleções de um banco de dados; já uma função personalizada é definida pelo usuário para descrever os privilégios específicos que você deseja.

Por que o princípio do mínimo privilégio é importante?

É importante porque garante que os usuários recebam apenas as permissões mínimas necessárias para executar suas tarefas.

Se você quer que um gerente de loja possa apenas ler e escrever dados de um banco de dados específico, que tipo de função você atribui?

readWrite

Qual comando é usado para criar uma função personalizada?

db.createRole()


Afi Gbadago's photo
Author
Afi Gbadago
LinkedIn

Afi atua na defesa dos desenvolvedores na MongoDB com foco em Django e Python, ajudando engenheiros a construir com tecnologias modernas de dados por meio de tutoriais, palestras e engajamento com a comunidade. Reconhecida como Microsoft MVP em Python e Web, ela integra o conselho da Django Software Foundation e é Programme Chair da DjangoCon US 2025. Afi também é Regional Executor na Black Python Devs, além de colaboradora ativa de open source e palestrante internacional.

Temas
MongoDB

Principais cursos da DataCamp

Curso

Introdução ao MongoDB em Python

3 h
24.3K
Aprenda a mexer e analisar dados estruturados de forma flexível com o MongoDB.
Ver detalhesRight Arrow
Começar Curso
Ver maisRight Arrow
Relacionado

blog

Bancos de dados NoSQL: O que todo cientista de dados precisa saber

Descubra para que servem os bancos de dados NoSQL, por que os cientistas de dados os utilizam e uma lista dos melhores bancos de dados NoSQL disponíveis.
Zoumana Keita 's photo

Zoumana Keita

12 min

Tutorial

Hierarquias do Power BI: Um guia abrangente

Saiba como criar, editar, excluir e implementar hierarquias no Power BI.
Joleen Bothma's photo

Joleen Bothma

11 min

Tutorial

Tutorial do SQL Server: Desbloqueie o poder do gerenciamento de dados

Explore o gerenciamento de dados com nosso tutorial do SQL Server. Do básico ao uso avançado, aprimore suas habilidades e navegue no SQL Server com confiança.

Kevin Babitz

13 min

Tutorial

Funções em Python: como chamar e escrever funções

Descubra como escrever funções em Python reutilizáveis e eficientes. Domine parâmetros, instruções de retorno e temas avançados como funções lambda. Organize melhor seu código com main() e outras boas práticas.
Karlijn Willems's photo

Karlijn Willems

14 min

Tutorial

Introdução aos acionadores SQL: Um guia para desenvolvedores

Saiba como usar os acionadores SQL para automatizar tarefas, manter a integridade dos dados e melhorar o desempenho do banco de dados. Experimente exemplos práticos como os comandos CREATE, ALTER e DROP no MySQL e no Oracle.
Oluseye Jeremiah's photo

Oluseye Jeremiah

13 min

Tutorial

Tutorial do MySQL: Um guia abrangente para iniciantes

Descubra o que é o MySQL e como começar a usar um dos sistemas de gerenciamento de banco de dados mais populares.
Javier Canales Luna's photo

Javier Canales Luna

15 min

Ver MaisVer Mais