Technische Referenz: Zugriffssteuerung
Dieses Kapitel dokumentiert die technischen Details, wie die Plattform die Zugriffssteuerung durchsetzt. Diese Informationen sind nützlich für Systemadministratoren, die Mandanten und Rollen konfigurieren, sowie für Entwickler, die die Plattform erweitern.
Format der Zugriffsregeln
Zugriffsregeln verwenden ein hierarchisches Muster: aihub.[user|admin].<service>.<resource>.<identifier>
Beispiele:
aihub.user.agent.> # All agents (user access)
aihub.admin.agent.research.* # All research agents (admin access)
aihub.user.knowledge.hr-docs.policies # Specific knowledge namespace
aihub.admin.service.tenant # Tenant management servicePlatzhalter
Ein-Ebenen-Platzhalter (*) entspricht genau einem Segment:
agent.research.*entsprichtagent.research.instance-1, aber nichtagent.research.team.instance-1
Mehr-Ebenen-Platzhalter (>) entspricht einem oder mehreren Segmenten am Ende:
agent.>entsprichtagent.research.instance-1,agent.analysis.team.specialund jedem anderen Agentenpfad- Muss das letzte Token in der Regel sein
Admin- vs. Benutzerregeln
Regeln, die mit aihub.admin.* beginnen, gewähren administrativen Zugriff. Benutzer mit Admin-Zugriff haben automatisch gleichwertigen Benutzerzugriff.
Ein Benutzer mit aihub.admin.agent.> kann auf Ressourcen zugreifen, die entweder aihub.admin.agent.* oder aihub.user.agent.* erfordern.
Auflösung von Berechtigungen
Wenn eine Anfrage eingeht, führt die Plattform Folgendes aus:
- Extrahiert die Benutzeridentität aus dem Authentifizierungstoken
- Liest den
X-Tenant-Id-Header, um den Mandantenkontext zu bestimmen - Fragt die Rollen des Benutzers innerhalb dieses spezifischen Mandanten ab
- Sammelt alle Zugriffsregeln aus diesen Rollen
- Ruft die Zugriffsregeln des Mandanten ab
- Prüft, ob sowohl der Mandant als auch der Benutzer die angeforderte Aktion zulassen
Zweischichtige Überprüfung
Der Zugriff erfordert das Bestehen beider Schichten:
Schicht 1: Mandantengrenze – Erlaubt der Mandant diese Ressource überhaupt?
Wenn die Zugriffsregeln des Mandanten die angeforderte Ressource nicht enthalten, wird der Zugriff sofort verweigert, ohne die Benutzerrollen zu prüfen.
Schicht 2: Benutzerberechtigungen – Erlaubt die Rolle des Benutzers diese Aktion?
Nachdem bestätigt wurde, dass der Mandant die Ressource erlaubt, prüft das System, ob die Rollen des Benutzers die erforderliche Berechtigung erteilen.
Beide müssen bestanden werden, damit der Zugriff gewährt wird.
Beispiel
Mandant hat: aihub.user.agent.research.*
Benutzer hat: aihub.user.agent.> (aus seiner Rolle)
Benutzeranfrage: aihub.user.agent.research.instance-1
- Mandantenprüfung: ✓ (Mandant erlaubt Forschungs-Agents)
- Benutzerprüfung: ✓ (Benutzerrolle erlaubt alle Agents)
- Ergebnis: Zugriff gewährt
Benutzeranfrage: aihub.user.agent.finance.instance-1
- Mandantenprüfung: ✗ (Mandant erlaubt nur Forschungs-Agents)
- Ergebnis: Zugriff verweigert (Benutzerprüfung nicht ausgewertet)
Berechtigungen auf Service-Ebene
Jeder Service erfordert eine Basisberechtigung: aihub.user.service.<service-name>
Bevor ressourcenspezifische Berechtigungen geprüft werden, verifiziert das System, dass der Benutzer Zugriff auf den Service selbst hat.
Um auf einen Agent zuzugreifen, benötigen Sie:
- Service-Zugriff:
aihub.user.service.agent - Ressourcenzugriff:
aihub.user.agent.<agent-class>.<agent-id>
Wenn der Mandant keinen Service-Zugriff gewährt, sind keine Ressourcen in diesem Service zugänglich, unabhängig von anderen Regeln.
Pfadparameter-Substitution
Berechtigungsvorlagen verwenden Platzhalter, die aus der Anfrage aufgelöst werden:
Vorlage: aihub.user.agent.{agent_class}.{agent_id}
Anfrage: GET /api/v1/agents/research/instance-alpha
Aufgelöste Berechtigung: aihub.user.agent.research.instance-alpha
Das System prüft diese konkrete Berechtigung anhand der Benutzer- und Mandanten-Zugriffsregeln.
Zugriffsebenen
Das System gibt drei Ebenen zurück:
ACCESS_DENIED: Keine Berechtigung. Gibt HTTP 403 zurück.
ACCESS_USER: Zugriff auf Benutzerebene, um die Ressource anzuzeigen und mit ihr zu interagieren.
ACCESS_ADMIN: Zugriff auf Administratorebene, um die Ressource zu ändern, zu konfigurieren oder zu löschen.
Controller können zwischen Benutzer- und Administratorzugriff für Prüfzwecke unterscheiden, obwohl viele Operationen nur prüfen, ob der Zugriff gewährt (nicht verweigert) wird.
Konfiguration über Umgebungsvariablen
Konfigurieren Sie das Standardverhalten über Umgebungsvariablen:
# Startup tenant (seeded on first boot; an ordinary tenant thereafter)
AIHUB_STARTUP_TENANT_NAME="Swiss AI Hub"
AIHUB_STARTUP_TENANT_ACCESS_RULES="aihub.admin.>"
# Automatic user signup
AIHUB_USER_SIGNUP_DEFAULT_TENANT="default"
AIHUB_USER_SIGNUP_DEFAULT_ROLES="AIHubUser,AIHubAgentUser"
FIRST_AIHUB_USER_SIGNUP_DEFAULT_ROLES="AIHubAdmin"Sysadmin-Zugriff
Benutzer mit der Keycloak Realm-Rolle AIHubSysAdmin erhalten impliziten Admin-Zugriff auf jeden Mandanten und jede Ressource. Die oben beschriebene zweistufige Mandanten-/Benutzerprüfung wird umgangen – ein Sysadmin wird überall als Admin behandelt.
Sysadmins können auch ohne Mandantenkontext agieren, was mandantenübergreifende Endpunkte wie die Mandantenverwaltungs-UI ermöglicht. Jeder Sysadmin ist ein echter Keycloak-Benutzer mit einer echten Benutzer-ID, sodass seine Aktionen in Langfuse nachvollziehbar bleiben und sie in Mandanten-Mitgliederlisten wie jeder andere Benutzer erscheinen.
Weisen Sie die Keycloak Realm-Rolle AIHubSysAdmin direkt oder über Identity Provider Mapper zu. Die Plattform legt auch ein dediziertes Superuser-Konto aus SUPERUSER_USERNAME / SUPERUSER_EMAIL / SUPERUSER_PASSWORD an und materialisiert SUPERUSER_TOKEN als Bearer-Token für diesen Benutzer, damit interne Services die API ohne Browsersitzung aufrufen können.
Sparsam verwenden – der Sysadmin-Zugriff dient der Plattformadministration, nicht dem Tagesgeschäft.
Validierungsregeln
Anforderungen an das Format von Zugriffsregeln
Beim Erstellen von Zugriffsregeln:
Erforderliches Format:
- Muss mit
aihub.user.oderaihub.admin.beginnen - Nur Kleinbuchstaben, Zahlen, Punkte, Bindestriche, Unterstriche,
*,> - Mehr-Ebenen-Platzhalter
>nur am Ende
Verboten:
- Grossbuchstaben
- Sonderzeichen ausser
.,-,_,*,> >in der Mitte einer Regel
Das System validiert Regeln beim Erstellen oder Bearbeiten von Mandanten und Rollen. Ungültige Regeln lösen einen Fehler mit dem spezifischen Problem aus.
Häufige Muster
Umfassender Plattformzugriff
aihub.admin.>Voller Admin-Zugriff auf alles. Verwendung für Sysadmin-Mandanten.
Service-Administratoren
aihub.admin.service.user
aihub.admin.service.role
aihub.admin.service.tenantKann Benutzer, Rollen und Mandanten verwalten, aber keine anderen Services.
Abteilungszugriff
aihub.user.agent.department-finance.*
aihub.user.knowledge.finance-docs.>
aihub.user.process.finance-workflows.*Nur Zugriff auf finanzspezifische Ressourcen.
Schreibgeschützter Zugriff
aihub.user.agent.>
aihub.user.knowledge.>Kann Agents und Wissen anzeigen und nutzen, aber nicht erstellen oder ändern.
Power-User
aihub.user.>
aihub.admin.agent.<department>.*
aihub.admin.knowledge.<department>-docs.>Benutzerzugriff überall, Admin-Zugriff nur auf Abteilungsressourcen.
Fehlerbehebung bei Zugriffsproblemen
Checkliste zur Fehlerbehebung
Bei der Fehlerbehebung überprüfen Sie diese Punkte in der angegebenen Reihenfolge:
- Mandantenauswahl: Verifizieren Sie, dass der Benutzer den beabsichtigten Mandanten ausgewählt hat
- Mandantengrenze: Bestätigen Sie, dass die Zugriffsregeln des Mandanten die Ressource enthalten
- Benutzerzugehörigkeit: Verifizieren Sie, dass der Benutzer zum Mandanten gehört
- Rollenzuweisung: Prüfen Sie, ob der Benutzer Rollen in diesem Mandanten hat
- Rollenregeln: Überprüfen Sie, was diese Rollen erlauben
- Service-Zugriff: Verifizieren Sie, dass die Berechtigung auf Service-Ebene existiert
Die Plattform gibt detaillierte Fehlermeldungen zurück, die angeben, welche Berechtigung fehlgeschlagen ist. Verwenden Sie diese, um die fehlende Regel zu identifizieren.
Hinweise zur Performance
Die Zugriffsprüfung ist optimiert:
- Regeln werden einmal pro Anfrage kompiliert
- Mehrere Berechtigungsprüfungen für denselben Benutzer verwenden die kompilierten Regeln wieder
- Komplexe Platzhaltermuster haben minimale Performance-Auswirkungen
- Rollenänderungen treten sofort ohne Cache-Verzögerungen in Kraft
Das Wechseln von Mandanten löst eine vollständige Cache-Invalidierung im Frontend aus, was dazu führt, dass Daten neu abgerufen werden.
