Explica el control de acceso basado en roles de MongoDB, privilegios, roles personalizados y separación de responsabilidades entre usuarios y aplicaciones.
MongoDB separa autenticación —quién eres— de autorización —qué puedes hacer—. La autorización se expresa mediante usuarios, roles, privileges, resources y actions. En producción, cada identidad debe recibir únicamente los permisos que necesita durante el tiempo necesario.
Cuando los built-in roles conceden demasiado, crea uno específico:
JavaScript
use admin
db.createRole({role:'ordersApiRole',privileges:[{resource:{db:'orders',collection:'orders'},actions:['find','insert','update']},{resource:{db:'orders',collection:'inventory'},actions:['find','update']}],roles:[]});
Prueba operaciones reales, porque aggregations, Change Streams, index management o commands pueden necesitar acciones adicionales.
En entornos administrados pueden existir mecanismos de identidad distintos de password. Prefiere credenciales de corta duración o federadas cuando estén disponibles y sean compatibles con driver y plataforma.
El usuario de backup necesita acciones específicas de lectura y metadata. Restore puede necesitar crear colecciones, índices y users según estrategia. No reutilices el usuario runtime.
Prueba que el backup role realmente cubre todos los componentes requeridos y que no concede escritura normal innecesaria.
Una identidad de monitoring debe leer métricas y estado, no modificar datos. Si el agente exige privilegios altos, revisa exactamente para qué y limita red.
Observar streams requiere permisos sobre el recurso correspondiente. Un stream de cluster tiene mayor alcance que uno de colección. Otorga solo el nivel que necesita el consumidor.
MongoDB RBAC protege recursos y acciones del servidor; la aplicación sigue siendo responsable de reglas de negocio y aislamiento por tenant. Usa identidades separadas, least privilege, rotación sin downtime y cuentas humanas atribuibles. Los privilegios administrativos nunca deben formar parte del runtime normal.
Comprueba lo aprendido
¿Qué diferencia existe entre autenticación y autorización?
¿Cuándo necesitas un custom role?
¿Por qué un rol de MongoDB no reemplaza el filtro de tenant?