EmDash CMS – Modelo de tiempo de ejecución y seguridad de plugins
Cómo EmDash separa la ejecución de plugins de confianza y en sandbox, y por qué Dynamic Workers importa para los límites de seguridad.
Por qué existe este modelo
La mayoría de los ecosistemas de plugins de CMS fallan en el mismo límite: las extensiones se ejecutan con demasiados privilegios.
EmDash lo aborda separando modos de ejecución de plugins y haciendo explícitos los límites de capacidad.
Dos clases de ejecución
Plugins de confianza
- se cargan como parte del tiempo de ejecución de tu aplicación
- adecuados para código que posees o en el que confías plenamente
- simples operativamente, pero la seguridad depende de tu disciplina de revisión
Plugins en sandbox
- se ejecutan en entornos worker aislados
- pensados para lógica de extensión no confiable o semiconfiable
- limitados por capacidades explícitas, límites de tiempo de ejecución y reglas de red
La postura de seguridad depende menos de la intención del plugin y más de las garantías de aislamiento del tiempo de ejecución.
Dynamic Workers en la arquitectura
Dynamic Workers es el primitivo de aislamiento usado para ejecución en sandbox en Cloudflare.
Sin él, el modo sandbox no está disponible y deberías operar solo con supuestos de plugins de confianza.
En la práctica:
- plan Free: el núcleo CMS funciona, el modo sandbox de plugins no
- plan de pago con Dynamic Workers: el modelo sandbox está disponible
Modelo de capacidades: mínimo privilegio por defecto
Un plugin solo debe declarar lo que necesita:
- leer contenido
- escribir dominios de contenido concretos
- llamar a endpoints de red salientes
- disparar hooks de flujo de trabajo seleccionados
Si no se concede una capacidad, la operación debe fallar de forma determinista. Es un requisito de diseño, no una cortesía opcional.
// Ejemplo: mantén explícito el alcance de capacidades
export default definePlugin({
id: "notify-on-publish",
capabilities: ["read:content", "email:send"]
});
Barreras de tiempo de ejecución que importan
Tanto la seguridad como la fiabilidad dependen de límites duros:
- límites de CPU y tiempo real evitan manejadores desbocados
- techos de memoria limitan abusos y fugas accidentales
- políticas de red bloquean intentos de exfiltración arbitraria
Estos controles convierten fallos de plugins en incidentes acotados en lugar de caídas de plataforma.
Modelo de amenaza en una página
Asume que cualquier plugin de terceros puede contener:
- comportamiento malicioso
- dependencias obsoletas
- errores de lógica con sincronización de eventos poco común
Por tanto el tiempo de ejecución de plugins debería garantizar:
- contención del radio de explosión
- operaciones privilegiadas denegadas por defecto
- resultados de ejecución auditables
La confianza se gana por política, no se otorga por instalación.
Modelo operativo en plan Free
Si ejecutas sin soporte de sandbox:
- mantén el conjunto de plugins mínimo
- prefiere plugins de primera parte o revisados internamente
- revisa dependencias y permisos en las puertas de release
- aísla integraciones arriesgadas en servicios externos cuando sea posible
Es un modelo viable para muchos equipos, pero exige más disciplina de gobernanza.
Criterios de decisión: cuándo exigir modo sandbox
Trata el modo sandbox como obligatorio cuando:
- instalas plugins de autores externos a escala
- el cumplimiento exige pruebas de aislamiento más fuertes
- el riesgo empresarial por compromiso de plugin es material
Trátalo como opcional cuando:
- la superficie de plugins es pequeña y está auditada por completo
- el equipo controla el pipeline de release de extremo a extremo
Lista de comprobación práctica de gobernanza
Antes de habilitar cualquier plugin en producción:
- documenta propósito y responsable del plugin
- revisa capacidades requeridas y endpoints salientes
- define responsable y procedimiento de rollback
- valida el comportamiento en staging con inyección de fallos
La seguridad de plugins no es una decisión de arquitectura única. Es un proceso operativo respaldado por límites de tiempo de ejecución.