EmDash CMS – Plugin-Laufzeit und Sicherheitsmodell

Wie EmDash vertrauenswürdige und sandboxed Plugin-Ausführung trennt und warum Dynamic Workers für Sicherheitsgrenzen wichtig ist.

Warum dieses Modell existiert

Die meisten CMS-Plugin-Ökosysteme scheitern an derselben Grenze: Erweiterungen laufen mit zu vielen Rechten.
EmDash adressiert das, indem es Ausführungsmodi trennt und Fähigkeitsgrenzen explizit macht.

Zwei Ausführungsklassen

Vertrauenswürdige Plugins

  • werden als Teil Ihrer Anwendungslaufzeit geladen
  • geeignet für Code, den Sie besitzen oder dem Sie voll vertrauen
  • operativ einfach, Sicherheit hängt aber von Ihrer Review-Disziplin ab

Sandboxed Plugins

  • laufen in isolierten Worker-Umgebungen
  • für nicht vertrauenswürdige oder teilweise vertrauenswürdige Erweiterungslogik
  • eingeschränkt durch explizite Capabilities, Laufzeitlimits und Netzwerkregeln

Die Sicherheitslage hängt weniger von Plugin-Absicht als von Isolationsgarantien der Laufzeit ab.

Dynamic Workers in der Architektur

Dynamic Workers ist das Isolationsprimitiv für sandboxed Ausführung auf Cloudflare.
Ohne es ist der Sandbox-Modus nicht verfügbar; Sie sollten nur mit Annahmen vertrauenswürdiger Plugins arbeiten.

Praktisch:

  • Free-Tarif: CMS-Kern funktioniert, sandboxed Plugin-Modus nicht
  • Paid-Tarif mit Dynamic Workers: Sandbox-Modell wird verfügbar

Capability-Modell: standardmäßig minimal nötige Rechte

Ein Plugin sollte nur deklarieren, was es braucht:

  • Inhalte lesen
  • bestimmte Content-Domains schreiben
  • ausgehende Netzwerk-Endpunkte aufrufen
  • ausgewählte Workflow-Hooks auslösen

Wird eine Capability nicht gewährt, soll die Operation deterministisch fehlschlagen. Das ist eine Designanforderung, kein „best effort“.

// Beispiel: Capability-Umfang explizit halten
export default definePlugin({
  id: "notify-on-publish",
  capabilities: ["read:content", "email:send"]
});

Laufzeit-Leitplanken, die zählen

Sicherheit und Zuverlässigkeit hängen an harten Grenzen:

  • CPU- und Wall-Time-Limits verhindern unkontrollierte Handler
  • Speicher-Obergrenzen begrenzen Missbrauch und versehentliche Lecks
  • Netzwerkrichtlinien blockieren willkürliche Exfiltration

Diese Steuerungen verwandeln Plugin-Fehler in begrenzte Vorfälle statt Plattform-Ausfälle.

Bedrohungsmodell auf einer Seite

Gehen Sie davon aus, dass jedes Drittanbieter-Plugin enthalten kann:

  • schädliches Verhalten
  • veraltete Abhängigkeiten
  • Logikfehler bei ungewöhnlichem Ereignis-Timing

Die Plugin-Laufzeit sollte daher garantieren:

  • Eindämmung des Auswirkungsradius
  • standardmäßig verweigerte privilegierte Operationen
  • nachvollziehbare Ausführungsergebnisse

Vertrauen soll durch Policy verdient werden, nicht durch Installation gewährt.

Betriebsmodell im Free-Tarif

Ohne Sandbox-Unterstützung:

  • Plugin-Set minimal halten
  • First-Party- oder intern geprüfte Plugins bevorzugen
  • Abhängigkeits- und Berechtigungs-Review an Release-Gates
  • riskante Integrationen wo möglich in externe Services auslagern

Das ist für viele Teams tragfähig, erfordert aber strengere Governance.

Entscheidungskriterien: wann Sandbox-Modus Pflicht ist

Sandbox-Modus als verpflichtend behandeln, wenn:

  • Sie Plugins externer Autoren in großem Umfang installieren
  • Compliance stärkere Isolationsnachweise verlangt
  • Geschäftsrisiko durch Plugin-Kompromittierung relevant ist

Sandbox-Modus als optional behandeln, wenn:

  • Plugin-Oberfläche klein und voll geprüft ist
  • das Team die Release-Pipeline Ende-zu-Ende kontrolliert

Praktische Governance-Checkliste

Bevor ein Plugin in Produktion aktiviert wird:

  • Plugin-Eigentümer und Zweck dokumentieren
  • benötigte Capabilities und ausgehende Endpunkte prüfen
  • Rollback-Verantwortlichen und Rollback-Verfahren festlegen
  • Verhalten in Staging mit Fehler-Injektion validieren

Plugin-Sicherheit ist keine einmalige Architekturentscheidung, sondern ein operativer Prozess mit Laufzeitgrenzen.