Files
AI-Profile-Router/docs/SECURITY.md
T

2.6 KiB

Sicherheitsmodell

Grundsatz

Das lokale Modell erhält nur die Werkzeuge, die es für den aktuellen Modus benötigt. Lokalität allein ersetzt keine Zugriffskontrolle.

MCP-Profile

Empfohlene Trennung:

Modus Werkzeuge
Standard Websuche, harmlose lokale Hilfsfunktionen
Home Assistant HA-Administration plus Websuche
ARR Sonarr/Radarr plus Websuche
Unraid Read-only Diagnose, Logs, Status
Unraid Write nur bewusst aktiviert, mit Vorschau und Approval Ticket

Nicht im Standardprofil

  • allgemeine Shell
  • python3, ssh, scp oder beliebiges curl
  • Container erstellen, verändern oder löschen
  • Registry-/Storage-Direktzugriff
  • uneingeschränkte Dateisuche

Secrets

  • Keine Secrets in Git, Prompts, MCP-Schemas oder Logs.
  • Konfiguration referenziert nur Namen lokaler Environment-Dateien.
  • Dateien mit Secrets: Eigentümer root oder Dienstbenutzer, Modus 0600.
  • Tokens werden pro Dienst getrennt und minimal berechtigt.
  • Ein Secret Broker oder Wrapper stellt Verbindungen her, ohne Tokens an das Modell zurückzugeben.

Netzwerk

  • Port 8080 nur localhost oder administratives VLAN.
  • Clients verwenden Port 8081.
  • Whisper, XTTS, TinySearch und SearXNG nur localhost.
  • Firewall erlaubt nur bekannte Quellnetze.
  • Externe Suche erhält nur die tatsächliche Suchanfrage, keine Chat-Historie.

Router-Grenze

  • Alle fachlichen Endpunkte verlangen einen mindestens 32 Zeichen langen, zufälligen Router-Key. Der Dienst startet ohne gültigen Key nicht.
  • /health und /ready sind die einzigen anonymen Endpunkte und geben nur groben Betriebszustand aus.
  • Authentifizierungsheader werden niemals an llama.cpp weitergereicht.
  • Remote-Bild-URLs sind standardmäßig gesperrt. Data-URLs werden auf MIME-Typ, Base64-Gültigkeit und 20 MiB Maximalgröße geprüft.
  • Die Zahl gleichzeitiger Requests ist begrenzt; große Uploads sind global begrenzt und generierte Bilder werden nach Alter, Anzahl und Größe bereinigt.
  • Crash-Recovery beendet keine PID nur aufgrund einer Zahl, sondern verlangt zusätzlich einen erwarteten Prozessmarker in /proc/<pid>/cmdline.

Schreibaktionen

Jede destruktive oder persistente Aktion verwendet:

  1. read-only Bestandsaufnahme,
  2. exakte Vorschau,
  3. an diese Vorschau gebundenes Approval Ticket,
  4. unveränderte Ausführung,
  5. anschließende Verifikation.

Repository-Prüfung vor jedem Push

  • Suche nach Token-, Passwort- und Private-Key-Mustern.
  • Keine .env, Zertifikate, Logs, Bilder, Audio oder Modellartefakte.
  • Keine echten internen API-Schlüssel in Beispielen.