Zum Inhalt

Freigaben (Permissions)

Das MoE-System verwendet ein Whitelist-Modell: Standardmäßig sind alle Zugriffe gesperrt. Jede Ressource muss explizit für einen User freigegeben werden.

Konzept

User → hat Permissions → darf Ressourcen nutzen
                         ├── Expert-Templates  (welche Vorlagen?)
                         ├── CC-Profile        (welches Profil?)
                         ├── Modell-Endpunkte  (welche LLMs?)
                         ├── Skills            (welche /commands?)
                         ├── MCP-Tools         (welche Tools?)
                         └── MoE-Modi          (welche Pipeline?)

Ressource-Typen

resource_type Beispiel resource_id Bedeutung
expert_template tmpl-uuid-... Zugriff auf ein bestimmtes Admin-Template
cc_profile prof-uuid-... Zugriff auf ein CC-Profil
model_endpoint qwen2.5:32b@RTX Zugriff auf Modell X am Server Y
model_endpoint * Zugriff auf alle Modelle aller Server
skill pdf Zugriff auf den /pdf Skill
skill * Zugriff auf alle Skills
mcp_tool calc Zugriff auf das calc MCP-Tool
mcp_tool * Zugriff auf alle MCP-Tools
moe_mode native Direkter GPU-Zugriff (niedrigste Latenz)
moe_mode moe_reasoning Reasoning-Expert-Pipeline
moe_mode moe_orchestrated Vollständige MoE-Pipeline

Freigaben verwalten

Im User-Edit-Dialog → Tab Freigaben:

Aktive Freigaben

Die obere Tabelle zeigt alle aktuell gültigen Freigaben des Users:

Spalte Beschreibung
☐ (Checkbox) Mehrfachauswahl für Bulk-Delete
Typ (Badge) resource_type farblich kodiert
Ressource resource_id (mit aufgelöstem Namen wenn möglich)
🗑 (Button) Einzelne Freigabe entziehen

Bulk-Delete: Mehrere Checkboxen anklicken → Ausgewählte entziehen → Bestätigung → alle ausgewählten Freigaben werden entfernt. Der Tab bleibt dabei auf Freigaben aktiv.

Alle auswählen: Checkbox im Tabellen-Header selektiert alle Einträge auf einmal.

Freigaben hinzufügen

Fünf Sektionskarten ermöglichen das gezielte Hinzufügen von Freigaben:

  • Dropdown mit allen Admin-Templates (Name + ID)
  • Mehrfachauswahl möglich
  • Klick auf + → speichert Freigabe
  • Dropdown mit allen CC-Profilen
  • Mehrfachauswahl möglich
  • Gruppiertes Dropdown nach Inferenz-Server
  • Format: Modell@Server
  • Wildcard * verfügbar für alle Modelle
  • Dropdown mit allen aktivierten Skills
  • Schnell-Button Alle Skills freigeben → grant skill:*
  • Dropdown mit allen aktiven MCP-Tools
  • Schnell-Button Alle MCP Tools freigeben → grant mcp_tool:*

Erweiterte Freigaben (moe_mode)

Aufklappbarer Bereich für manuelle Eingabe von moe_mode-Freigaben:

  • Typ: moe_mode (fixed)
  • Wert: z.B. native, moe_reasoning, moe_orchestrated

Workflow: Freigaben speichern

Zwei Wege:

  1. Sektionsweise: Checkboxen in einer Karte anklicken → + drücken → nur diese Kategorie wird gespeichert
  2. Alle auf einmal: Checkboxen in mehreren Karten anklicken → Freigaben speichern → alle ausgewählten werden in einem Schritt angelegt

Auswirkungen auf den Cluster

Freigabe Auswirkung bei Anfrage ohne Freigabe
model_endpoint fehlt HTTP 403 – Modell nicht erlaubt
expert_template fehlt Template wird in UI nicht angezeigt
skill fehlt /skill-name gibt 403 zurück
mcp_tool fehlt Tool-Call wird blockiert
moe_mode fehlt Anfrage mit diesem Modus wird abgewiesen

Redis-Sync

Nach jeder Änderung an Freigaben wird der Redis-Cache des Users sofort aktualisiert:

user:{user_id}:permissions  →  HASH  { resource_type: [id, ...] }

Der Orchestrator prüft Freigaben ausschließlich aus dem Redis-Cache (TTL: 5 Minuten). Änderungen greifen daher spätestens nach 5 Minuten, in der Praxis sofort nach dem nächsten Request.

Datenbankschema

CREATE TABLE permissions (
    id            TEXT PRIMARY KEY,           -- UUID4
    user_id       TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    resource_type TEXT NOT NULL,
    resource_id   TEXT NOT NULL,
    granted_at    TEXT NOT NULL,               -- ISO-8601 UTC
    UNIQUE(user_id, resource_type, resource_id)
);

Duplikate

Ein doppeltes Grant (gleiche user_id + resource_type + resource_id) wird durch den UNIQUE-Constraint ignoriert und erzeugt keinen Fehler.