Ir al contenido principal

Control de acceso basado en roles (RBAC) en MongoDB

Descubre cómo funciona el control de acceso basado en roles (RBAC) en MongoDB para gestionar usuarios y roles, crear roles personalizados y aplicar políticas de mínimo privilegio en tus despliegues.
Actualizado 19 sept 2026  · 5 min leer

Explora con IA

ChatGPTClaudePerplexity

A medida que más personas se conectan en esta era digital, aumenta la necesidad de definir permisos y roles para garantizar la seguridad y gestionar el acceso a aplicaciones y sistemas. El control de acceso basado en roles es un modelo de autorización que regula el acceso a los recursos según los roles predefinidos de los usuarios. 

Con el modelo RBAC de MongoDB, las acciones se representan como roles que se asignan a los usuarios adecuados. Por ejemplo, en lugar de asignar varios permisos individuales, puedes asignar un único rol (p. ej., dbAdmin) que ya incluye el conjunto de permisos definidos (p. ej., lectura sobre las colecciones de la base de datos). Este modelo facilita la gestión del acceso de forma escalable.

Cómo habilitar RBAC en MongoDB

Con el modelo básico de RBAC, el acceso está denegado por defecto, lo que significa que los usuarios no pueden acceder a los recursos si no tienen asignado algún rol. Un usuario puede tener varios roles, y cada rol incluye un conjunto específico de privilegios o permisos para acceder a determinadas capacidades.

Conceptos básicos de RBAC

Aquí tienes algunos conceptos clave que debes conocer sobre RBAC:

Usuarios

En el modelo RBAC, un usuario es una entidad a la que se le conceden uno o varios roles que determinan su acceso a los recursos y operaciones de la base de datos. Un usuario no tendrá acceso al sistema si no tiene roles asignados. Para acceder, debe autenticarse y tener al menos un rol asignado.

Roles

MongoDB incluye roles y privilegios predeterminados tanto para despliegues autogestionados como para MongoDB Atlas. Algunos roles integrados habituales son read, readWrite y dbAdmin/atlasAdmin. Los roles de administración de base de datos tienen privilegios más elevados que el resto, incluido el de gestionar los privilegios de otros roles.

Si estos roles predeterminados no cubren los privilegios que necesitas, MongoDB ofrece métodos para crear y modificar roles definidos por el usuario.

Un rol es un conjunto de privilegios que se asigna al usuario.

Por ejemplo, un rol "read" puede incluir privilegios de solo lectura, un rol "admin" puede incluir lectura y escritura, mientras que el rol "owner" puede tener lectura, escritura y borrado sobre un elemento concreto (una base de datos, un documento, etc.). Un rol concede privilegios para realizar acciones específicas sobre recursos. Cada privilegio puede estar definido explícitamente en el rol o heredarse de otro rol, o ambas cosas.

Roles definidos por el usuario / roles personalizados

MongoDB proporciona varios roles integrados que los administradores pueden usar para controlar el acceso a un sistema MongoDB. Sin embargo, si los roles existentes no describen los privilegios específicos que buscas, puedes definir y asignar nuevos roles a los usuarios de una base de datos: eso es un rol personalizado. Con la excepción de los roles creados en la base de datos admin, un rol solo puede incluir privilegios que apliquen a su propia base de datos y solo puede heredar de otros roles de esa misma base de datos.

Para crear un rol nuevo, utiliza el método db.createRole(), especificando los privilegios en el array privileges y los roles heredados en el array roles.

MongoDB utiliza la combinación del nombre de la base de datos y el nombre del rol para identificarlo de forma única, y almacena toda la información de roles en la colección admin.system.roles de la base de datos admin.

Ejemplo: este ejemplo crea un rol personalizado (sales_attendant) que solo puede insertar documentos en la colección sales de la base de datos sales_db.

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

Roles integrados 

Los roles integrados son roles precreados que se asignan a los usuarios y les permiten realizar operaciones como leer y escribir en colecciones de una base de datos. Ejemplos de roles integrados: read, write, readWrite, dbAdmin y readAnyDatabase.

  • read y readWrite (acceso a nivel de base de datos): estos roles conceden acceso para realizar operaciones de solo lectura o de lectura/escritura, respectivamente, sobre todas las colecciones no de sistema dentro de una base de datos concreta.
  • dbAdmin: este rol concede derechos administrativos necesarios para gestionar una base de datos específica, como crear, eliminar y modificar índices y colecciones. Es idóneo para equipos de desarrollo o scripts de mantenimiento de bases de datos.
  • clusterAdmin (acceso operativo): rol de alto privilegio, normalmente reservado para personal de operaciones (DevOps/Ops). Concede permisos necesarios para gestionar todo el despliegue de MongoDB, incluidos la creación de copias de seguridad periódicas, la configuración de réplicas y el sharding.

Privilegios (permisos)

Los privilegios son un conjunto de acciones (p. ej., find, insert) permitidas sobre una capacidad.

Por ejemplo, si la capacidad es "informar al cliente de su saldo actual", entonces los privilegios del usuario (pongamos, la persona de caja) podrían ser de solo lectura. Si la capacidad es aumentar el límite de transacciones de una cuenta bancaria, los privilegios podrían ser de lectura y escritura.

Privilegios heredados

Un rol puede incluir uno o más roles existentes (con todos sus privilegios). Por ejemplo, un rol dbAdmin puede incluir roles de lectura, escritura y actualización (que pueden ser roles individuales) con los privilegios asociados.

Recursos

Un recurso puede ser una base de datos, una colección, un conjunto de colecciones o el clúster. 

Aplicar el principio de mínimo privilegio

En la seguridad de bases de datos moderna, el principio de mínimo privilegio (PoLP) es fundamental. Este principio establece que a cada usuario se le deben asignar solo los permisos mínimos necesarios para realizar sus tareas.

Un ejemplo de buena práctica: en lugar de usar un usuario global con readWrite, crea usuarios específicos por aplicación. Por ejemplo, si tu servicio de inventario solo interactúa con la base de datos app_data, el usuario de la aplicación debe tener acceso readWrite únicamente a esa base de datos. Esta compartimentación evita que, si un servicio se ve comprometido, obtenga acceso no autorizado a otras bases de datos (como billing o users).

Ejemplo de código: 

Creación de un usuario con mínimo privilegio. Este ejemplo crea un usuario (branch_manager) con acceso de lectura/escritura limitado estrictamente a la base de datos bank_data.

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

Buenas prácticas

  • Define y asigna roles y políticas claras con antelación.
  • Sigue el principio de mínimo privilegio para reforzar la seguridad.
  • Utiliza los roles integrados siempre que sea posible y audita periódicamente los roles asignados para detectar anomalías.

FAQs

¿Qué es RBAC en MongoDB?

El control de acceso basado en roles es un mecanismo de seguridad para gestionar el acceso de los usuarios.

¿Cuál es la diferencia entre un rol integrado y un rol personalizado?

Un rol integrado es un rol precreado que se asigna a los usuarios y les permite realizar operaciones como leer y escribir en colecciones de una base de datos; un rol personalizado es un rol definido por el usuario que recoge los privilegios específicos que necesitas.

¿Por qué es importante el principio de mínimo privilegio?

Es importante porque garantiza que a cada usuario se le asignen solo los permisos mínimos necesarios para realizar sus tareas.

Si quieres que una persona responsable de tienda solo pueda leer y escribir datos de una base de datos concreta, ¿qué tipo de rol le asignarías?

readWrite

¿Qué comando se utiliza para crear un rol personalizado?

db.createRole()


Afi Gbadago's photo
Author
Afi Gbadago
LinkedIn

Afi defiende a los desarrolladores en MongoDB con foco en Django y Python, y ayuda a ingenieros a crear con tecnologías de datos modernas mediante tutoriales, charlas y trabajo con la comunidad. Reconocida como Microsoft MVP en Python y Web, forma parte del consejo de la Django Software Foundation y es Programme Chair de DjangoCon US 2025. Afi también es Regional Executor en Black Python Devs, además de colaboradora activa de código abierto y ponente internacional.

Temas
MongoDB

Los mejores cursos de DataCamp

{count, plural, one {Curso} other {Cursos}}

Introducción a MongoDB en Python

{hours} h
24.4K
Aprende a manipular y analizar datos estructurados de forma flexible con MongoDB.
Ver detallesRight Arrow
Empezar Curso
Ver másRight Arrow
Relacionado

{count, plural, one {blog} other {blogs}}

Contratos de datos desmitificados: Todo lo que necesitas saber

Lograr la escalabilidad en los sistemas de datos distribuidos y reducir los errores.
Mike Shakhomirov's photo

Mike Shakhomirov

11 min

Top MLOps Tools

{count, plural, one {blog} other {blogs}}

25 Herramientas MLOps que debes conocer en 2025

Descubre las mejores herramientas MLOps para el seguimiento de experimentos, la gestión de metadatos de modelos, la orquestación de flujos de trabajo, el versionado de datos y canalizaciones, el despliegue y servicio de modelos, y la supervisión de modelos en producción.
Abid Ali Awan's photo

Abid Ali Awan

15 min

{count, plural, one {Tutorial} other {Tutoriales}}

Guía de modelado de datos de MongoDB para aplicaciones de blogs

Aprende algunas posibilidades de modelado de datos que incluyen documentos anidados al diseñar un sistema de gestión de contenidos (CMS) o una aplicación de blog.
Nic Raboy's photo

Nic Raboy

{count, plural, one {Tutorial} other {Tutoriales}}

Base de datos Azure SQL: Configuración y gestión paso a paso

Aprende a crear, conectar, gestionar, consultar y proteger tu base de datos Azure SQL. Esta guía paso a paso cubre todo lo esencial para una configuración óptima de la base de datos.
Anneleen Rummens's photo

Anneleen Rummens

12 min

{count, plural, one {Tutorial} other {Tutoriales}}

Jerarquías de Power BI: Guía completa

Aprende a crear, editar, eliminar e implementar jerarquías en Power BI.
Joleen Bothma's photo

Joleen Bothma

11 min

{count, plural, one {Tutorial} other {Tutoriales}}

Tutorial de Modelado de datos en Power BI

Descubre qué es el modelado de datos en Power BI y cómo unas buenas prácticas de modelado de datos pueden llevar tus informes de Power BI al siguiente nivel.
Joleen Bothma's photo

Joleen Bothma

11 min

Ver MásVer Más