Ingeniería
Intermedio
Seguridad Granular: Roles y Permisos (ACL)
3 de enero, 2026•5 min read•Por Equipo de Seguridad
Seguridad
Backend
Arquitectura
El Riesgo: Demasiada Información
En una empresa en crecimiento, no todos deben verlo todo. ¿Es prudente que un vendedor temporal vea los balances financieros globales? ¿O que almacén pueda editar precios de venta? La falta de control de acceso es una vulnerabilidad crítica interna.
La Solución: Access Control List (ACL)
Implementamos un esquema de seguridad basado en Roles y Permisos Granulares.
¿Cómo lo estructuramos?
- Sujetos (Usuarios): Las personas que usan el sistema.
- Roles (Perfiles): Agrupadores lógicos (e.g., Administrador, Vendedor, Contador).
- Permisos (Acciones): La unidad mínima de autorización (e.g.,
crear_factura,ver_reportes,editar_precio).
// Middleware de protección en Next.js
export async function middleware(req: NextRequest) {
const token = await getToken({ req });
const userPermissions = token?.permissions || [];
// Si intenta acceder a rutas de admin sin permiso
if (req.nextUrl.pathname.startsWith('/admin')) {
if (!userPermissions.includes('view_admin_panel')) {
return NextResponse.redirect(new URL('/unauthorized', req.url));
}
}
}Implementación Técnica
- Middleware de Protección: Cada ruta de la API verifica si el usuario tiene el permiso necesario antes de procesar la solicitud.
- UI Condicional: El frontend oculta botones y menús que el usuario no tiene permitido usar. Si no puedes borrar usuarios, el botón de "Eliminar" ni siquiera se renderiza para ti.
Protege tu activo más valioso: tus datos.

