Community-Plugin ergänzt Allowlists pro Schlüssel für Jellyfin-API-Keys

In Jellyfin hat jeder API-Key, den du anlegst, das gleiche Gewicht wie ein Admin-Key. Einem Community-Entwickler war das unangenehm genug, um eine Lösung zu bauen, und er hat sie nun als frühe Version veröffentlicht: API Key Middleware, mit offener Bitte um Feedback.

So funktioniert die Begrenzung

Jeder Key bekommt seine eigene Allowlist, die aus einer HTTP-Methode plus einem Pfad besteht. Der Rollout ist bewusst behutsam:

  • Ein neu angelegter Key startet im Audit-Modus, Anfragen laufen also unverändert durch.
  • Nach ein paar Tagen normaler Nutzung öffnest du den Regel-Builder auf der Plugin-Seite. Aufrufe, die der Key tatsächlich gemacht hat, sind vorausgewählt.
  • Du prüfst diese Auswahl, stellst den Key auf enforce, und jede Anfrage außerhalb der Liste erhält ein 403.

Das Plugin zeigt jeden Endpunkt an, den der Server bereitstellt, jeweils mit Jellyfins eigener Beschreibung. Admin-only-Endpunkte sind markiert, ebenso die, die ein bestimmter Key bereits getroffen hat. Der Geltungsbereich beschränkt sich auf API-Keys: Benutzersitzungen und anonymer Traffic bleiben unberührt.

Wen es betrifft

Alle, die Keys an Dashboards, Monitoring-Agenten oder Automatisierungsskripte ausgeben. Der Autor hat es ursprünglich für einen einzelnen Server geschrieben, motiviert durch das Risiko, dass eine einzige offenliegende Konfigurationsdatei alles preisgeben würde, und es dann für ein breiteres Publikum aufgeräumt.

Wissenswerte Einschränkungen

  • Entwicklung und Tests fanden auf Jellyfin 12.4.0 statt.
  • Es fails open: Das Deaktivieren des Plugins oder ein Ladefehler, etwa nach einem Jellyfin-Upgrade, stellt den vollen Zugriff für jeden Key wieder her. Prüfe nach dem Update, ob es als Active gemeldet wird.
  • Es verengt, was Keys tun können; es ersetzt keine Jellyfin-Updates, keine Firewall und kein VPN.
  • Der Autor sagt offen, dass die Arbeit zusammen mit Claude (Anthropics KI) über Claude Code entstanden ist, das einen großen Teil der Implementierung, der Tests und des Security-Reviews übernommen hat, während der Autor die Richtung vorgab, Entscheidungen traf und alles auf dem eigenen Server validierte.

Der Code steht unter GPL-3.0. Feedback ist erwünscht zu Bypässen (Authentifizierungsmethoden, Randfälle bei Routen), zur Usability und zum Verhalten auf anderen Setups; Sicherheitsmeldungen sollten über den privaten Kanal von GitHub laufen.

Kommentar für Self-Hoster

Begrenzte API-Keys sind eine Lücke, die viele von uns jahrelang toleriert haben, daher ist das ein Schritt in die richtige Richtung. Behandle es als eine Härtungsschicht, nicht als Perimeter: Da es fails open, stellt ein stiller Ladefehler nach einem Upgrade unbemerkt den vollen Zugriff wieder her – nimm also eine Prüfung „ist das Plugin Active?“ in deine Routine nach dem Update auf. Starte zuerst im Audit-Modus, lass echten Traffic auflaufen, stelle dann auf enforce und beobachte die Logs auf unerwartete 403s. Wenn du mehrere Plugins betreibst, die mit der Jellyfin-API sprechen, zeigt unsere Seite Jellyfin plugins, wie wir Kompatibilität handhaben.

Quellen