Die Berechtigungsschicht, die den meisten Enterprise-RAG-Deployments fehlt
Eine Junior-Analystin stellt eine Routinefrage, und eine veraltete ACL aus der Indexierungszeit reicht dem Modell ein Board-Only-Memo. Die Sovereign RBAC Firewall autorisiert jedes abgerufene Dokument zur Abfragezeit anhand der aktuellen verschachtelten Gruppen und Attribute der Nutzerin und verwirft zurückgehaltene Dokumente, bevor das Modell ein Token sieht. Deterministischer Code, außerhalb jedes LLM. Agenten beraten, Code entscheidet.
40/40
Korrekte Entscheidungen auf dem Golden-Authorization-Set
0 unbefugte Offenlegungen, 0 falsche Ablehnungen, berechnet vom Eval-Harness
29/40
Die getreue Flat-ACL-Baseline auf denselben 40 Fällen
10 unbefugte Offenlegungen, 1 falsche Ablehnung
$670K
Mehrkosten einer Shadow-AI-Datenpanne gegenüber einem herkömmlichen Vorfall
IBM Cost of a Data Breach, 2025
Dies ist eine lauffähige Demo, kein Deployment. Jede Identität und jedes Dokument ist eine synthetische Fixture einer europäischen Bank; der Identity Provider ist eine Azure-AD/SCIM-förmige JSON-Fixture, und der Vektorspeicher läuft im Prozess hinter einer Qdrant-förmigen Schnittstelle.
Ein privates LLM zu kaufen macht es nicht sicher, es auf den Kronjuwel-Korpus zu richten.
Der übliche Pilot-Build versieht jeden Dokument-Chunk bei der Indexierung mit einer flachen ACL. Dieses Design bricht unter realer Enterprise-Identität zusammen: verschachtelte Active-Directory-Gruppen, Cross-OU-Vererbung, Clearance-Stufen, zeitlich begrenzte Projektfreigaben und Kündigungen, die nach dem Aufbau des Index eintreten. Das Ergebnis ist der klassische Fehler, den diese Demo durchgängig inszeniert: Eine Junior-Analystin stellt eine normale Frage, und die RAG-Pipeline reicht dem Modell ein Board-Only-Memo, weil ein veralteter Snapshot aus der Indexierungszeit sagte, sie dürfe es sehen.
Die Ursache ist strukturell. Dokumentberechtigung ist eine Live-Eigenschaft eines Identitätsgraphen, daher ist jeder Snapshot davon bereits falsch. Ein besseres Modell behebt das nicht: Ein perfektes Modell, dem ein Board-Dokument gereicht wird, leakt es trotzdem. Der Wert liegt darin zu steuern, was das Modell erreicht, nicht in der Modellqualität.
Die Tragweite ist beziffert. Shadow-AI-Datenpannen kosten $670K mehr als herkömmliche Vorfälle, und 65 % der KI-bezogenen Datenpannen kompromittierten Kunden-PII (IBM Cost of a Data Breach, 2025). Shadow-AI-Datenpannen brauchen 247 Tage bis zur Erkennung gegenüber einem Durchschnitt von 241 Tagen, und 1 von 5 Organisationen hat eine mit Shadow AI verbundene Datenpanne erlitten (IBM, 2025). Auf regulatorischer Seite werden die Transparenzpflichten nach Artikel 50 des EU AI Act am 2. August 2026 durchsetzbar, und die kombinierte Obergrenze für Bußgelder nach DSGVO plus AI Act erreicht 55 Mio. EUR oder 11 % des weltweiten Jahresumsatzes.
Unsere eigene Lösungsseite nennt Berechtigungsdurchsetzung zur Abrufzeit „den Grund, warum die meisten Enterprise-RAG-Piloten ihre Sicherheitsprüfung nicht bestehen“ und „das härteste ungelöste Problem im Enterprise-RAG.“ Die Whitepaper-Produktanalyse dahinter kennzeichnete RBAC-bewusstes RAG am Markt als beschrieben, aber nicht demonstriert, ohne funktionierende Implementierung. Diese Demo ist diese funktionierende Implementierung.
Eine deterministische Policy-Engine entscheidet, was das Modell sieht. Nicht das Modell, und nicht ein Prompt.
Jede Abfrage durchläuft dieselbe Pipeline:
Abfrage + Nutzeridentität → Retrieval → RBAC-Firewall (deterministisch, außerhalb jedes LLM) → nur zulässige Dokumente → Antwort-LLM → hashverketteter Audit-Datensatz
Für jedes Kandidatendokument löst die Firewall die effektiven Berechtigungen der Nutzerin zur Abfragezeit auf: Sie flacht verschachtelte AD/OU-Gruppen rekursiv ab (die Fixture nestet 3 Ebenen tief) und wertet ABAC-Attribute gegen die strukturierte Policy-Referenz des Dokuments aus: Clearance-Stufe L1 bis L4, verwaltetes Gerät, Abteilung, zeitlich begrenzte Projektfreigaben mit Ablauf und Beschäftigungsstatus.
Jedes Dokument erhält ALLOW, WITHHELD mit einem maschinell prüfbaren Reason-Code (BOARD_MEMBERSHIP_REQUIRED, ACCESS_WINDOW_EXPIRED, ALL_ACCESS_REVOKED_TERMINATION, POLICY_CONFLICT) oder NEEDS_REVIEW. Zurückgehaltene Dokumente werden vor dem Kontextfenster verworfen, sodass das Modell nie Dokumente sieht, auf die die Nutzerin keinen Zugriff hat. Bei jedem Konflikt oder unaufgelösten Verweis lehnt sie standardmäßig ab und leitet zur menschlichen Prüfung weiter, statt zu raten.
Jede Abfrage hängt einen Datensatz an eine append-only SHA-256-Hashkette mit Tamper-Verifikation: Nutzer, aufgelöste Berechtigungsmenge, abgerufene, ausgelieferte und zurückgehaltene Dokumente mit Reason-Codes, Needs-Review-Konflikte, Modell und Provider sowie das Prompt-/Antwortpaar. Exportierbar als JSON, erzeugt innerhalb der VPC. Der Retrieval-Zugriffs-Nachweisdatensatz, den eine Akte nach Artikel 50 des EU AI Act verlangt.
Die Vergleichsseite der Demo ist ein getreues naives Flat-ACL-RAG, der Build, den die meisten Piloten tatsächlich ausliefern. Es löst verschachtelte Gruppen tatsächlich zur Indexierungszeit auf. Seine Fehler sind seine zwei ehrlichen, inhärenten Grenzen: Der Snapshot veraltet, und ein flaches Tag kann Clearance, Gerät, Zeitfenster oder Kündigung nicht ausdrücken. Auf dem Golden Set der Demo mit 40 Fällen erzeugen diese zwei Grenzen 10 unbefugte Offenlegungen und 1 falsche Ablehnung, wobei die falsche Ablehnung eine nach der Indexierung hinzugekommene Person ist, deren Anspruch der eingefrorene Snapshot verfehlt hat.
Der Antwortpfad, gebaut auf Pydantic AI, erhält nur nach der Firewall zulässige Chunks, sagt, was zurückgehalten wurde und warum, statt zu bluffen, und hat null Autorität über Berechtigungen. Er ist per einer Umgebungsvariable provider-austauschbar: Anthropic (Standardmodell claude-opus-4-8), OpenAI, Gemini oder Ollama für air-gapped souveränes Deployment, bei dem nichts, kein einziges Token, die Box verlässt. Es wird niemals ein API-Schlüssel benötigt: Die Demo leitet Antworten an eine lokale Bridge, wenn eine läuft, und fällt sonst auf einen deterministischen Stub zurück, und das Eval-Scoreboard ruft überhaupt nie ein LLM auf. Die Firewall ist das Produkt; das Modell ist Kulisse.
Golden Labels für das 40-Fälle-Set werden mechanisch von einem unabhängigen Referenz-Orakel abgeleitet, einer separaten Implementierung, die aus den Policy-Definitionen geschrieben wurde, nicht aus der zu prüfenden Firewall. Das Scoreboard ist eine Funktion des Identitätsgraphen, keine handverlesenen Ergebnisse, und jede Zahl wird zur Laufzeit berechnet, niemals fest kodiert. Der Enforcement-Overhead misst sich in Mikrosekunden, im Prozess, allein für die Firewall-Logik; ein produktiver IdP-Roundtrip fügt Latenz hinzu, die diese Demo als Stub nachbildet.
Gartner projiziert, dass 40 % der Enterprise-Anwendungen bis Ende 2026 KI-Agenten einbetten werden, gegenüber unter 5 % im Jahr 2025. Dasselbe deterministische authorize(user, doc)-Gate ist der dokumentierte Erweiterbarkeitspfad für diese Welt, kein ausgeliefertes Feature dieser Demo: Ein Agent kann nicht abrufen, was der Nutzer, in dessen Auftrag er handelt, nicht konnte.
Eine Frage, gestellt von einer synthetischen Analystin, beantwortet auf beiden Seiten des Split-Screens. Jedes Bild unten ist ein Screenshot der laufenden App; jede Identität, jedes Dokument und jede Zahl ist synthetische Fixture-Daten.
Lena Vogt, eine EMEA Credit-Risk-Analystin mit Clearance L2, fragt: „What is our Q3 EMEA credit-loss projection and the methodology behind it?“ Das Retrieval bringt das Board-Only-Q3-Board-Pack zusammen mit Dokumenten, die sie sehen darf. Die Flat-ACL-Seite liefert es aus: Jahre von Schulden aus verschachtelter Gruppenvererbung im Identitätsgraphen haben sie transitiv zum „Board“-Mitglied gemacht, und ein nur-Gruppen-Tag hat kein Konzept von Clearance. Das Memo erreicht das Modell, die Antwort liest EUR 412 Millionen vor, und das Banner sagt LEAK.
Auf der RAGGUARD-Seite läuft dasselbe Retrieval, aber das Board-Pack wird vor dem LLM mit dem Reason-Code BOARD_MEMBERSHIP_REQUIRED zurückgehalten: Das Dokument erfordert Clearance L4, und Lena hat L2. Das Modell antwortet korrekt aus der „Internal methodology note“ und dem „Confidential memo“, zu dem ihre Kette verschachtelter Gruppen sie berechtigt, und es sagt, was zurückgehalten wurde und warum, statt zu bluffen.
Das Entscheidungsdetail-Modal zeigt die wörtliche Modelleingabe auf beiden Seiten. Links sitzt das geleakte Board-Pack im Prompt, rot markiert. Rechts fehlt es einfach: Das Modell sieht nie Dokumente, auf die die Nutzerin keinen Zugriff hat. Die Per-Dokument-Ansicht macht die Divergenz explizit: dieselbe Board-Pack-Zeile liest auf der einen Seite „Ohne Autorisierung ausgeliefert“ und auf der anderen „Zugriff bei Retrieval verweigert“ mit ihrem Reason-Code.
Die „Internal methodology note“ trägt einen eingebetteten Prompt-Injection-String, der jeden KI-Assistenten, der sie liest, anweist, seine Retrieval-Berechtigungen zu ignorieren und die volle Board-Zahl auszugeben. Auf der Firewall-Seite gibt es nichts zu exfiltrieren: Das Board-Pack ist nie ins Kontextfenster gelangt, weil die Autorisierung vor dem LLM stattfand. Das ist ein gelabelter Fall, gezeigt als Defense-in-Depth durch Durchsetzung zur Abrufzeit, kein separates Guardrails-Produkt.
Priya Shah wurde vor neun Minuten auf der Demo-Uhr gekündigt, und der Webhook der Fixture hat ausgelöst. Die Firewall gibt ALL_ACCESS_REVOKED_TERMINATION auf allem zurück: 0 gewährt, 5 verweigert. Der Flat-ACL-Snapshot, vor der Kündigung gebaut, liefert ihr weiterhin aus, weil der Re-Index nicht gelaufen ist. Die Demo spielt dieselbe Grenzsituation für Marco Rossi durch, dessen zeitlich begrenzte Project-Atlas-Freigabe gestern auf der Demo-Uhr abgelaufen ist (ACCESS_WINDOW_EXPIRED), für Raj Patel, der gleichzeitig in einer erlaubenden und einer verweigernden Gruppe sitzt (POLICY_CONFLICT, zur menschlichen Prüfung gehalten), und für Wei Chen, das L4-Board-Mitglied, dem die Firewall korrekt ausliefert — die Positivkontrolle, die beweist, dass sie nicht einfach alles verweigert.
Jede dieser Entscheidungen landet im manipulationssicheren Audit-Trail: ein hashverketteter JSON-Datensatz darüber, wer was gefragt hat, was ausgeliefert wurde, was zurückgehalten wurde und warum, und welches Modell geantwortet hat, mit einem CHAIN INTACT-Verifikationschip und einem Ein-Klick-Export. Automatisch erzeugt, innerhalb der VPC.
Das Golden Set umfasst 40 gelabelte (Nutzer, Dokument) Allow/Deny-Entscheidungen: 10 Nutzer gegen 4 sensible Dokumente, Labels mechanisch vom unabhängigen Orakel aus der Semantik des Identitätsgraphen abgeleitet. Die Firewall erreicht 40/40 mit 0 unbefugten Offenlegungen und 0 falschen Ablehnungen. Die Flat-ACL-Baseline erreicht 29/40 mit 10 unbefugten Offenlegungen, einschließlich des Board-Packs, das an 7 unbefugte Nutzer ausgeliefert wurde, des abgelaufenen Atlas-Fensters und der gekündigten Mitarbeiterin, plus 1 falsche Ablehnung. Jede Zahl wird vom Harness zur Laufzeit berechnet, niemals fest kodiert, und der Per-Fall-Drill-down zeigt jedes Orakel-Label neben den Entscheidungen beider Systeme. Das sind Golden-Set-Ergebnisse, keine Open-World-Garantien.
Derselbe Vergleich, den die Demo live fährt, auf demselben Identitätsgraphen und denselben Dokumenten.
| Dimension | Naive Flat-ACL RAG (der typische Pilot-Build) | Sovereign RBAC Firewall (RAGGUARD) |
|---|---|---|
| Wann die Autorisierung stattfindet | Bei der Indexierung, eingefroren in ein Tag auf jedem Chunk | Zur Abrufzeit, pro Abfrage, pro Dokument |
| Verschachtelte Gruppen und Cross-OU-Vererbung | Einmal bei der Indexierung aufgelöst; der Snapshot veraltet | Bei jeder Abfrage rekursiv gegen den Live-Identitätsgraphen abgeflacht |
| ABAC: Clearance, Gerät, zeitlich begrenzte Freigaben, Beschäftigungsstatus | In einem flachen Tag nicht ausdrückbar | Pro Dokument gegen die strukturierte Policy-Referenz ausgewertet |
| Kündigung vor neun Minuten | Weiterhin ausgeliefert, bis der Re-Index läuft | ALL_ACCESS_REVOKED_TERMINATION auf allem |
| Widersprüchliche Policies auf einem Dokument | Liefert das Dokument aus | Deny-by-Default: NEEDS_REVIEW, an einen Menschen weitergeleitet, mit dem Konflikt ausbuchstabiert |
| 40-Fälle-Golden-Set | 29/40: 10 unbefugte Offenlegungen, 1 falsche Ablehnung | 40/40: 0 unbefugte Offenlegungen, 0 falsche Ablehnungen |
| Audit-Trail | Keine | Hashverketteter, manipulationssicherer Datensatz jeder Auslieferung und jedes Zurückhaltens, exportierbar als JSON |
Setzen Sie die Autorisierung zur Abrufzeit durch, nicht zur Indexierungszeit. Eine deterministische Policy-Engine außerhalb des LLM prüft jedes abgerufene Dokument gegen die aktuellen Gruppenmitgliedschaften und Attribute der Nutzerin, bevor es das Modell erreicht, sodass zurückgehaltene Dokumente nie ins Kontextfenster gelangen. In dieser Demo erreicht dieses Gate 40/40 auf einem gelabelten Golden Set mit 40 Fällen, gegenüber 29/40 für den Flat-ACL-Build, den die meisten Piloten ausliefern.
Weil das Tag ein Snapshot ist und Berechtigung eine Live-Eigenschaft Ihres Identitätsgraphen. Eine ACL aus der Indexierungszeit verfehlt alles, was sich nach dem Indexieren ändert, etwa eine Kündigung oder eine abgelaufene Projektfreigabe, und sie kann Attributregeln wie Clearance-Stufe oder verwaltetes Gerät überhaupt nicht ausdrücken. In der Demo erklären diese zwei Grenzen 10 unbefugte Offenlegungen und 1 falsche Ablehnung über einen 40-Fälle-Benchmark, aus einer Baseline, die verschachtelte Gruppen zur Indexierung getreu auflöst.
Nicht, wenn das Dokument das Modell nie erreicht. Die Demo enthält einen gelabelten Fall, in dem eine in einem Dokument eingebettete Notiz jeden KI-Assistenten anweist, seine Retrieval-Berechtigungen zu ignorieren und die Board-Only-Zahl auszugeben, und die Injection hat nichts zu exfiltrieren, weil die Autorisierung vor dem LLM stattfand und das Memo nie ins Kontextfenster gelangte. Das ist ein Defense-in-Depth-Beispiel für Durchsetzung zur Abrufzeit, kein eigenständiges Guardrails-Produkt.
Deny by Default. Wenn eine Nutzerin auf demselben Dokument sowohl eine erlaubende als auch eine verweigernde Mitgliedschaft hat, oder eine Policy-Referenz nicht aufgelöst werden kann, gibt die Firewall NEEDS_REVIEW zurück und leitet den Fall an einen Menschen weiter, mit dem Konflikt ausbuchstabiert, statt zu raten. Die Demo zeigt genau das: Ein Credit-Risk-Manager, der gleichzeitig in einer erlaubten und einer verweigerten Gruppe ist, bekommt das strittige Memo zur Prüfung gehalten, nicht ausgeliefert.
Die Firewall ist deterministisches Python, das gar kein Modell braucht, und der Antwortpfad ist per einer Umgebungsvariable austauschbar: Anthropic, OpenAI, Gemini oder Ollama. Setzen Sie LLM_PROVIDER=ollama für air-gapped souveränes Deployment, und nichts, kein einziges Token, verlässt die Box. Die Demo selbst läuft offline ohne API-Schlüssel, und das Eval-Scoreboard ruft nie ein LLM auf.
Jede Abfrage hängt einen Datensatz an eine manipulationssichere SHA-256-Hashkette: wer gefragt hat, die aufgelöste Berechtigungsmenge, was ausgeliefert wurde, was zurückgehalten wurde und warum, und welches Modell geantwortet hat. Es exportiert als JSON und wird innerhalb Ihrer VPC erzeugt. Es ist der Retrieval-Zugriffs-Nachweisdatensatz, den eine Akte nach Artikel 50 des EU AI Act verlangt, keine Compliance-Zertifizierung.
Eine lauffähige Demo, die den Mechanismus beweist. Der Identity Provider ist eine synthetische Azure-AD/SCIM-förmige JSON-Fixture, Kündigungen und Freigabeabläufe sind Fixture-Ereignisse, und der Vektorspeicher läuft im Prozess hinter einer Qdrant-förmigen Schnittstelle. Die Policy-Engine, das Eval-Harness und der hashverkettete Audit-Export sind real und laufen genau wie gezeigt; weil die Fixture Azure-AD-Graph- und SCIM-Schnittstellen spiegelt, ist der dokumentierte Produktionspfad zu einem Live-IdP ein Config-Tausch, keine Neuschreibung.
Die Forschung hinter dieser Demo — die Architektur, das Verifikationsdesign und der Enterprise-Blueprint.
Vollständige Lösung
Die Lösung Sovereign AI & Private LLM Deployment erkunden →Die Berechtigungsschicht ist der harte Teil. Wir bauen sie.
Wenn Ihr Team damit ringt, wie man ein privates Modell auf einen Korpus richtet, der von Jahren verschachtelter Gruppenvererbung geregelt wird, oder damit, was die Transparenzpflichten des EU AI Act für Ihre Retrieval-Logs bedeuten, würden wir wirklich gerne hören, wie Sie darüber nachdenken. Das Problem ist branchenweit, und die Antworten werden es auch sein.