Das Wichtigste in Kürze
- Lege Chat, Durchsuchen, Download, Upload, Reindex und Zitate auf ein einziges Autorisierungsmodul.
- Nutze dieselbe Rollenfamilie für den Agent-Katalog und die Wissenskategorien.
- Filtere die Bibliothek und begrenze das Retrieval auf dem Server, bevor die SPA rendert.
- Routen für Zitate und Inhalte müssen dieselben Pfadprüfungen aufrufen wie das Durchsuchen der Bibliothek.
- Schreib Ableitungsregeln auf (manage schließt use ein oder eben nicht) und teste sie mit Unit-Tests.
- Teste die Matrizen für nur allgemein, nur spezialisiert, Admin und benannten Break-Glass-Zugang.
Ein Agent, der aus Dokumenten antwortet, ist nur so vertrauenswürdig wie die Dokumentberechtigungen dahinter.
Teams sichern den Chat-Endpunkt oft sorgfältig ab und lassen dann das Durchsuchen der Bibliothek und den Download von Zitatdateien für alle offen, die sich anmelden können. Das ist keine Wissensgrenze. Das ist eine zweite Tür mit hübscherer Oberfläche.
Benanntes Modell: ein Berechtigungsmodul
- Türen: Chat, Durchsuchen, Download, Upload, Reindex und Abruf von Zitaten.
- Tor: ein Autorisierungsmodul in der API mit App-Rollen und Pfadprüfungen.
- Katalog + Korpus: dieselbe Rollenfamilie für Agents und Wissenskategorien.
- UI-Vertrag: Das Frontend rendert ein Payload mit Fähigkeiten. Es dekodiert keine JWTs.
- Fail closed: Eine fehlende Pfadberechtigung ergibt 403, keine hilfsbereite leere Liste, während die Bytes woanders trotzdem ausgeliefert werden.
Abbildung 1. Chat, Durchsuchen, Download, Zitat, Upload und Reindex sind Türen. Das Berechtigungsmodul ist das Tor. Agents und Wissensordner teilen sich eine Rollenfamilie, damit ein Principal mit nur allgemeinem Zugriff nicht durch eine ruhigere Tür hereinkommt.
Kontext und Rahmenbedingung
Dieses Muster entsteht in einer Agent-App leicht aus Versehen. Der Chat wirkt streng. Die Bibliothek wirkt hilfsbereit. Zitate wirken harmlos. Zusammen stellen sie für jeden, der nur angemeldet ist, den Zugriff auf den gesamten Korpus wieder her.
Ich behandle Wissenspfade als Kategorien mit denselben Rollen, die auch die Agents absichern. Ein Principal mit nur allgemeinem Zugriff sieht spezialisierte Ordner nie in der Bibliothek, lädt diese Dateien nie herunter und bekommt sie nie für eine Runde in den Retrieval-Scope eingespeist.
Wenn ein Nutzer ein Zitat öffnet, ist das trotzdem ein Lesezugriff auf Inhalte. Sichere ihn ab wie den Chat. Wenn die Antwort auf eine Datei verwiesen hat, die der Nutzer nicht öffnen darf, hast du entweder zu viel abgerufen oder die Zitat-Oberfläche zu schwach abgesichert. Beides sind Designfehler.
Abbildung 2 zeigt die Seite auf Learn, auf der Produktfähigkeiten zu App-Rollen der API werden. Halte die Bezeichnungen stabil. Ziehe Rollen, die mit der App-Registrierung wandern, einer neuen verschachtelten Entra-Gruppe für jeden Ordner vor.

Abbildung 2. Produktfähigkeiten gehören als App-Rollen an die API. Gruppen sind für die Zuweisung in Ordnung. Rollen überstehen Umbauten der Gruppen besser, wenn das Produkt Fähigkeiten durchsetzen muss. Quelle: Microsoft Learn: add app roles.
Die Form des Problems
Enterprise-Agent-Apps bekommen meist eine gemeinsame Bibliothek: allgemeine Leitlinien plus spezialisierte Pakete. Stell sie dir als getrennte Dokumentsammlungen mit kleinerem Publikum vor, etwa Paket A und Paket B. Das Produkt will ein paar ehrliche Ergebnisse:
- manche Nutzer nur mit dem allgemeinen Agent und den allgemeinen Dokumenten
- manche Nutzer mit einem spezialisierten Agent und seinem Ordnerbaum
- Admins, die hochladen und neu indexieren können, ohne aus Versehen Gottmodus zu bekommen
- Prüfer, die erklären können, warum eine Person eine Datei gesehen hat
Wenn das Durchsuchen jeden Ordner auflistet und /api/content/... jeden Blob-Pfad an jeden angemeldeten Nutzer ausliefert, leckt spezialisiertes Wissen über die Oberfläche, selbst wenn die Agent-Auswahl eingeschränkt aussieht. Das Modell hat sich den Zugriff nicht "halluziniert". Deine API hat ihn gewährt.
Design
1. App-Rollen an der Backend-API
Deklariere Rollen für die Nutzung von Agents und für das Verwalten oder Durchsuchen von Kategorien. Halte die Bezeichnungen stabil. Ziehe Rollen, die mit der App-Registrierung wandern, verschachtelten Entra-Gruppen für jeden Ordner vor. Gruppen sind für die Zuweisung in Ordnung. Rollen sind besser für Produktfähigkeiten, die Umbauten der Gruppen überstehen müssen.
2. Der Server filtert, bevor die Oberfläche mitreden darf
Filtere die Bibliotheksliste auf dem Server. Begrenze die Retrieval-Pfade, bevor das Modell läuft. Gib auf Inhaltsrouten, deren Pfadprüfung fehlschlägt, 403 zurück. Die SPA darf nie der einzige Ort sein, an dem ein Ordner verschwindet. Abbildung 3 zeigt diese Aufteilung der Verantwortung.
Abbildung 3. Die SPA spricht in Fähigkeiten. Die API besitzt die Begrenzung. Einen Ordner nur in React auszublenden ist kein Berechtigungsmodell.
3. Das Frontend spricht in Fähigkeiten, nicht in JWTs
Stell ein Payload mit Zugriffsrechten bereit: was der Nutzer durchsuchen und verwalten darf und welche Agents erlaubt sind. Rendere daraus. Wer Rollennamen in React dekodiert, dupliziert die Richtlinie, und sie driftet ab, sobald jemand eine Rolle in Entra umbenennt.
Abbildung 4 ist die Darstellung auf Learn für die Authentifizierung von der SPA zur API: Die Anmeldung ist nur die Hülle. Berechtigungen für Wissen brauchen trotzdem Prüfungen in der API auf jedem Inhaltspfad.

Abbildung 4. Die Anmeldung ist nur die Hülle. Berechtigungen für Wissen brauchen trotzdem Prüfungen in der API. Quelle: Microsoft Learn: authentication flows and app scenarios.
4. Explizite Ableitungen
Eine Kategorie zu verwalten kann einschließen, den passenden Agent zu nutzen. Oder auch nicht. Entscheide dich. Schreib es auf. Teste es mit Unit-Tests. Stammeswissen ("Admins bekommen immer den Agent") wird zum Produktionsvorfall, wenn ein Nutzer manage ohne Chat bekommt oder Chat ohne manage und sich niemand einig ist, was richtig ist.
5. Storage-ACLs verstärken die App, sie ersetzen sie nicht
Blob-ACLs und App-Rollen sollten in dieselbe Richtung zeigen. Nutzer treffen zuerst auf die App-Schicht. Wenn die App zu locker ist, bekommt der Storage bei Browser-Downloads über deine eigene API nie die Chance, dich zu retten.
6. Teste die Matrix der Principals
Liefere Tests für nur allgemein, nur spezialisiert, mehrere Pakete, Admin und benannten Break-Glass-Zugang mit aus. Abbildung 5 zeigt die Form der Matrix, die ich in der Testsuite haben will, bevor das nächste Paket dazukommt.
Abbildung 5. Nur allgemein sieht nie spezialisierte Ordner. Nur spezialisiert bleibt in einem Baum. Upload und Reindex für Admins sind begrenzt, kein Gottmodus. Break-Glass ist benannt, selten und wird überprüft.
Häufige Fehler
Hilfsbereite Bibliothek, offenes Durchsuchen. Angemeldete Nutzer können alles durchsuchen, weil die Bibliothek hilfsbereit ist. Hilfsbereit ist kein Berechtigungsmodell.
Agent gefiltert, Blob offen. Die Agent-Auswahl ist eingeschränkt. Der Blob-Download nicht. Dieselben Bytes, eine andere Tür.
Retrieval-Scope aus dem Browser. Der Retrieval-Scope ist eine Ordnerliste aus dem Browser, ohne Begrenzung auf dem Server. Rechne mit einem Proxy und einem neugierigen Nutzer.
ACLs und Rollen widersprechen sich. Storage-ACLs und App-Rollen widersprechen sich. Zitate liefern 403 für Leute, die die Antwort schon gesehen haben, oder sind offen für Leute, die sie nicht sehen sollten.
Break-Glass als Standard. Der Break-Glass-Admin ist die Standardgruppe der Bibliothek. Break-Glass sollte benannt und selten sein und überprüft werden.
Reindex breiter als manage. Ein Knopf "alles neu indexieren" für jemanden, der nur eine Kategorie verwalten darf, verrät Absichten, auch wenn die Dateien bleiben, wo sie sind.
So übernehmen oder anpassen
So übernehmen
- Dieselbe Rollenfamilie für den Agent-Katalog und die Wissenskategorien.
- Das Durchsuchen ist nicht für alle angemeldeten Nutzer offen, wenn der Chat eingeschränkt ist.
- Routen für Zitate und Inhalte rufen dieselben Pfadprüfungen auf wie die Bibliothek.
- Tests für die Matrizen nur allgemein, nur spezialisiert und Admin.
- Schriftlich festgehaltene Ableitungsregeln (manage schließt use ein oder nicht).
- Generische Ordnernamen (Ordner A, Ordner B) in öffentlichen Dokumenten und Screenshots.
Vor dem Einsatz anpassen
Strengeres RBAC für Wissen bedeutet mehr Arbeit in Entra und eine größere Testmatrix: nur allgemein, nur spezialisiert, mehrere Pakete, Admin, Break-Glass. Du wirst mit den Verantwortlichen für Identität Zeit damit verbringen, zu klären, wer Rollen anlegt und wer Gruppen zuweist.
Du frustrierst vielleicht auch Power-User, die "einfach alles sehen" wollen. Das ist eine Produktdiskussion. Lös sie nicht, indem du das Durchsuchen stillschweigend öffnest.
Berechtigungen für Indexierung und Reindex brauchen dieselbe Sorgfalt wie der Upload. Begrenze den Knopf auf die Kategorien, die der Principal verwalten darf.
Wichtigste Quellen: Add app roles, Verify scopes and app roles, SPA calling a web API. Nutze die aktuellen Namen von Microsoft Foundry, wenn der Agent-Host unter dieses Dach gewandert ist.
Chat ohne Kontrolle über den Korpus ist eine Demo. Kontrolle über den Korpus ohne Kontrolle über Zitate ist ein Leck mit Fußnoten. Leg beides auf dasselbe Tor.