Autorisierung
ToolMesh verwendet OpenFGA für feingranulare Autorisierung. Das Modell folgt einer User → Plan → Tool-Beziehungsstruktur.
| Modus | Konfiguration | Verhalten |
|---|---|---|
bypass | OPENFGA_MODE=bypass | Keine Autorisierungsprüfungen (Standard) |
restrict | OPENFGA_MODE=restrict | OpenFGA wird bei jedem Tool-Call erzwungen |
Starte mit bypass für die Entwicklung, wechsle zu restrict für die Produktion.
Autorisierungsmodell
Abschnitt betitelt „Autorisierungsmodell“User --member_of--> Plan --can_execute--> ToolJeder Benutzer (per OAuth-Login oder API-Key) hat einen zugewiesenen Plan. Pläne gewähren Zugriff auf bestimmte Tools. Wenn ein Tool-Call eingeht, prüft ToolMesh:
Check(user, can_execute, tool)Bei Ablehnung wird die Ausführung sofort mit einem Unauthorized-Fehler gestoppt.
DADL Access Levels
Abschnitt betitelt „DADL Access Levels“DADL-Tools deklarieren eine access-Klassifizierung:
| Level | Bedeutung |
|---|---|
read | Nur-Lese-Operationen |
write | Erstell-/Update-Operationen |
admin | Administrative Operationen |
dangerous | Destruktive oder irreversible Operationen |
| custom | Mit beliebigen String-Werten erweiterbar |
Policy-Dateien bündeln diese Access-Levels in Rollen, und OpenFGA weist Benutzern Rollen zu.
Konfiguration
Abschnitt betitelt „Konfiguration“OPENFGA_API_URL=http://openfga:8080 # OpenFGA-API-Endpunkt (Docker-Service-Name)OPENFGA_STORE_ID=your-store-id # OpenFGA Store-IDOPENFGA_MODE=restrict # Erzwingung aktivierenDas Autorisierungsmodell und die Beziehungs-Tuples werden als editierbare Dateien in config/openfga/ definiert:
| Datei | Zweck |
|---|---|
model.fga | Autorisierungsmodell in FGA DSL |
tuples.json | User/Plan/Tool-Beziehungen |
setup.sh | Shell-Script, das die fga-CLI zum Anwenden von Modell und Tuples nutzt |
Das setup.sh-Script läuft auf dem Host und verwendet docker run mit dem openfga/cli-Image, um Modell und Tuples anzuwenden (das CLI-Image ist Distroless und hat keine Shell, daher kann es nicht als Docker-Compose-Service laufen):
# 1. Die OpenFGA-Services in docker-compose.yml auskommentieren (+ mysqldata Volume)# 2. Alle Services startendocker compose up -d
# 3. Den OpenFGA-Store bootstrappen./config/openfga/setup.sh
# 4. Die OPENFGA_STORE_ID aus der Ausgabe in .env eintragen# 5. OPENFGA_MODE=restrict in .env setzen# 6. Neustartendocker compose down && docker compose up -dDemo-Tuples
Abschnitt betitelt „Demo-Tuples“Die Standard-tuples.json demonstriert Autorisierung mit einem Deny-Fall:
- Free Plan (alle Benutzer per Wildcard): kann
echo_echoundecho_timeausführen, aber nichtecho_add - Pro Plan (company:acme Mitglieder): kann alle Tools ausführen
So lässt sich sofort verifizieren, dass die Autorisierung korrekt funktioniert — Free-Plan-Benutzer bekommen keinen Zugriff auf echo_add.
Caller-Origin-Integration
Abschnitt betitelt „Caller-Origin-Integration“Autorisierungsentscheidungen können auch die CallerClass (trusted, standard, untrusted) berücksichtigen. Das ermöglicht Policies wie „untrusted Clients können nicht auf Admin-Tools zugreifen”, selbst wenn der Plan des Benutzers es normalerweise erlauben würde.