Zum Inhalt springen
MCP-Server eingebautWie das funktioniert
Zurück zum Plattform-Überblick

Governance & Security

Niemand kommt an den Rechten vorbei – auch der Agent nicht

Die meisten Datenplattformen haben ein Rechtemodell und daneben einen Serviceaccount, der alles darf. Der zweite hebelt das erste aus, sobald etwas automatisiert wird. lavalake ist so gebaut, dass es diesen Account nicht gibt.

Identität
Keycloak OIDC
Delegation
Token Exchange, RFC 8693
Durchsetzung
in Trino, nicht in der Oberfläche
Audit
WORM, Hash-Kette

Die Kette, an der alles hängt

Sie melden sich über OIDC an Keycloak an. Der Agent-Dienst tauscht Ihr Token nach RFC 8693 gegen ein Token für Trino. Trino führt die Anweisung unter dieser Identität aus. Was Sie nicht sehen dürfen, kommt nicht zurück – nicht weil die Oberfläche es ausblendet, sondern weil die Engine es nicht liefert.

Ablauf einer Abfrage
Browser   ── OIDC-Login ──▶  Keycloak
Agent     ── Token Exchange (RFC 8693, audience=trino)
Trino     ── führt aus unter Ihrer Identität
          ── Grants + Row-Access + Column-Masking
Ergebnis  ── nur Ihr Ausschnitt

Rechte, die in der Oberfläche durchgesetzt werden, sind keine Rechte. Sie sind eine Bitte.

Der Unterschied fällt auf, sobald jemand die Oberfläche umgeht. Bei einem Modell mit Sammel-Serviceaccount steht dann die ganze Datenbank offen. Hier steht genau das offen, was die Rolle des Anmeldenden ohnehin sehen darf.

Zeilen und Spalten

Policies für Zeilenzugriff und Spaltenmaskierung werden in Trino ausgewertet. Eine Abteilung sieht ihren Ausschnitt, ein Personalbereich sieht Namen, die Auswertung daneben sieht dieselbe Tabelle mit maskierter Spalte. Es sind nicht zwei Tabellen und keine zwei Berichte – es ist dieselbe Tabelle, unterschiedlich gefiltert.

Wichtig ist, wo das greift: nicht nur in der Abfrage, die Sie selbst tippen, sondern auch in einer Dashboard-Kachel, die jemand anders angelegt hat, und in einem Suchtreffer. Jede Kachel rechnet je Betrachter unter dessen Identität.

Ein Audit-Log, das man nicht stillschweigend ändert

Das Audit-Log ist eine Hash-Kette: jeder Eintrag trägt den Hash seines Vorgängers. Wer einen Eintrag nachträglich ändert oder entfernt, bricht die Kette an dieser Stelle – der Bruch ist prüfbar. Das ist nicht dasselbe wie „wir schreiben Protokolle“, und es ist der Unterschied, auf den eine Revision hinausläuft.

  • Erfasst werden Nutzer und Agenten gleichermaßen
  • Aus dem Log abgeleitet: Lineage je Tabelle – woher die Daten kamen
  • Aus dem Log abgeleitet: Zugriffshistorie – wer eine Tabelle angefasst hat
  • Auskunft, Löschung, Aufbewahrung und Klassifizierung als FunktionenIn Entwicklung

Der Agent bekommt Ihre Rechte, nicht mehr

Der eingebaute Assistent arbeitet mit demselben delegierten Token. Er hat keine eigene Kennung mit erweiterten Rechten. Zusätzlich läuft jede Werkzeugnutzung durch eine Kette: einstufen, protokollieren, ausführen. Verändernde und löschende Schritte fragen vorher nach.

EinstufungBeispielVerhalten
lesendtrino_run_readonly_queryläuft
veränderndimport_csv, create_dashboardRückfrage
löschendtrino_drop_table, delete_dashboardRückfrage
gemischttrino_execute_statementje Anweisung eingestuft

Der Rand nach außen

Alles läuft hinter einem einzigen Reverse-Proxy. Trino, der Objektspeicher und die Plattform-Datenbank sind von außen nicht erreichbar – es gibt drei Routen, und keine davon führt an der Identitätsprüfung vorbei. Verbindungen zu registrierten Quellen prüft ein Egress-Schutz gegen SSRF und den Zugriff auf Metadaten-Endpunkte. Dokumente werden in einem eigenen Prozess geparst, Secrets liegen AES-256-GCM verschlüsselt.

  • Drei Routen nach außen: Konsole, Agent-API, Keycloak
  • Egress-Schutz gegen SSRF und Metadaten-Endpunkte
  • Dokumenten-Parsing prozessisoliert
  • TLS zwischen allen DienstenIn Entwicklung
  • Secrets über Vault oder External SecretsIn Entwicklung

Sehen, statt nachzulesen

In einer halben Stunde zeigen wir die Plattform an Ihren Fragen – Ingestion, Rechte, Suche, Agent. Ohne Folien.

Live-Demo buchen