[{"data":1,"prerenderedAt":21},["ShallowReactive",2],{"blog-post-de-ki-agenten-databricks-datenzugriff":3},{"slug":4,"lang":5,"title":6,"description":7,"heading":8,"translationKey":9,"date":10,"keywords":11,"readingMinutes":17,"html":18,"alternates":19},"ki-agenten-databricks-datenzugriff","de","KI-Agenten und Databricks: Datenzugriff kontrollieren","Wie KI-Agenten lesend auf Databricks zugreifen, ohne personenbezogene Daten preiszugeben: strukturierte Abfragen, Tabellen- und Spaltenfreigaben.","KI-Agenten und Databricks: Datenzugriff auf Tabellen und Spalten kontrollieren","databricks-data-access","2026-09-04",[12,13,14,15,16],"KI-Agenten Databricks Datenzugriff","Databricks KI-Agent","Zugriffskontrolle Spalten","personenbezogene Daten maskieren","Databricks MCP",6,"\u003Cp>Bei den Daten wird es in vielen KI-Agenten-Projekten ernst. Eine Frage wie „wie viele Bestellungen\nsind letzte Woche an der Zahlung gescheitert, aufgeteilt nach Land“ kann ein Agent gut beantworten,\nund er nimmt einem Analysten damit einen kleinen, aber ständigen Strom an Anfragen ab. Gleichzeitig\nliegen in einer Datenplattform wie Databricks genau die Informationen, die das Unternehmen nicht\nohne Grund verlassen sollen: Kundendaten, Zahlungsinformationen, Mitarbeiterdaten. Ein Agent mit\neinem weitreichenden Warehouse-Token kann all das lesen, und was er liest, kann in einem Prompt\nbeim Modellanbieter landen.\u003C\u002Fp>\n\u003Cp>Dieser Beitrag beschreibt, wie sich der Zugriff von Agenten auf Databricks auf bestimmte Tabellen\nund Spalten begrenzen lässt, warum rohes SQL die falsche Schnittstelle für Agenten ist und wie\npersonenbezogene Daten maskiert werden können, bevor sie das Modell erreichen. Er gehört zu unserer\nSerie über \u003Ca href=\"\u002Fde\u002Fblog\u002Fki-agenten-softwareentwicklung\">KI-Agenten in der Softwareentwicklung\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2>Warum direkter Warehouse-Zugriff ein Problem ist\u003C\u002Fh2>\n\u003Cp>Üblicherweise wird ein Agent über einen Personal Access Token oder einen Service Principal mit\nLeserechten auf einen Katalog an Databricks angebunden, dazu kommt ein Tool, das SQL ausführt. Das\nist schnell eingerichtet und funktioniert in einer Demo gut. Im produktiven Einsatz hat es drei\nSchwächen.\u003C\u002Fp>\n\u003Cp>Erstens ist der Zugriff zu breit. Berechtigungen im Warehouse werden meist pro Katalog oder Schema\nvergeben, und zwar für Menschen, die Daten explorativ untersuchen. Ein Agent, der nur Fragen zu\nBestellungen beantworten soll, erbt damit den Zugriff auf jede Tabelle in diesem Schema, auch auf\njene mit personenbezogenen Daten.\u003C\u002Fp>\n\u003Cp>Zweitens ist rohes SQL eine sehr mächtige Schnittstelle. Ein Agent kann Tabellen joinen,\nUnterabfragen schreiben und jede beliebige Spalte auswählen. Auch ohne böse Absicht kann er Daten\nauf eine Weise kombinieren, die niemand geprüft hat. Stammen Teile der Abfrage aus Benutzereingaben\noder aus Texten, die der Agent anderswo gelesen hat, kommt das klassische Risiko einer Injection\nhinzu.\u003C\u002Fp>\n\u003Cp>Drittens geht das Ergebnis an das Modell. Jede Zeile, die der Agent liest, wird Teil seines\nKontexts, und bei einem gehosteten Modell heißt das: Sie wird an einen Dritten übertragen. Aus Sicht\ndes Datenschutzes (etwa nach der DSGVO) ist daher nicht nur die Frage, wer eine Tabelle abfragen\ndarf, sondern auch, welche Werte das eigene Netz überhaupt verlassen dürfen.\u003C\u002Fp>\n\u003Ch2>Eine engere Schnittstelle: strukturierte Abfragen, nur lesend\u003C\u002Fh2>\n\u003Cp>Vordix geht einen anderen Weg. Statt SQL anzunehmen, bietet es vier lesende Operationen an:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>get_tables\u003C\u002Fcode> listet die Tabellen, die der Agent verwenden darf,\u003C\u002Fli>\n\u003Cli>\u003Ccode>describe_table\u003C\u002Fcode> liefert die Spalten einer freigegebenen Tabelle,\u003C\u002Fli>\n\u003Cli>\u003Ccode>query_table\u003C\u002Fcode> liest Zeilen mit Filtern, Sortierung und einer Zeilengrenze (vom Gateway gedeckelt),\u003C\u002Fli>\n\u003Cli>\u003Ccode>aggregate_table\u003C\u002Fcode> berechnet gruppierte Kennzahlen (Anzahl, Summe, Durchschnitt, Minimum, Maximum).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Der Agent beschreibt in strukturierten Parametern, was er braucht (Tabelle, Spalten, Filter,\nGruppierung), und Vordix baut die SQL-Anweisung selbst. Filterwerte werden als gebundene Parameter\nübergeben und nie in den Abfragetext eingesetzt. Joins, Unterabfragen und rohes SQL werden nicht\nunterstützt. Schreibende Operationen gibt es für Databricks überhaupt nicht.\u003C\u002Fp>\n\u003Cfigure class=\"post-figure\">\n\u003Csvg viewBox=\"0 0 760 256\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" role=\"img\" aria-labelledby=\"dbx-query-title\">\n  \u003Ctitle id=\"dbx-query-title\">Der Agent sendet eine strukturierte Anfrage; Vordix prüft Tabelle und Spalten, baut das SQL mit gebundenen Parametern und führt eine rein lesende Abfrage aus.\u003C\u002Ftitle>\n  \u003Crect class=\"fig-box fig-box--ai\" x=\"16\" y=\"40\" width=\"180\" height=\"180\" rx=\"10\"\u002F>\n  \u003Ctext class=\"fig-h fig-c-ai\" x=\"32\" y=\"66\">ANFRAGE DES AGENTEN\u003C\u002Ftext>\n  \u003Ctext class=\"fig-s\" x=\"32\" y=\"96\">op: aggregate_table\u003C\u002Ftext>\n  \u003Ctext class=\"fig-s\" x=\"32\" y=\"116\">table: sales.orders\u003C\u002Ftext>\n  \u003Ctext class=\"fig-s\" x=\"32\" y=\"136\">group_by: country\u003C\u002Ftext>\n  \u003Ctext class=\"fig-s\" x=\"32\" y=\"156\">filter: status =\u003C\u002Ftext>\n  \u003Ctext class=\"fig-s\" x=\"32\" y=\"176\">        \"failed\"\u003C\u002Ftext>\n  \u003Ctext class=\"fig-s\" x=\"32\" y=\"196\">metric: count\u003C\u002Ftext>\n  \u003Crect class=\"fig-box fig-box--primary\" x=\"226\" y=\"20\" width=\"330\" height=\"222\" rx=\"14\"\u002F>\n  \u003Ctext class=\"fig-h fig-c-primary\" x=\"242\" y=\"46\">VORDIX · DATABRICKS\u003C\u002Ftext>\n  \u003Crect class=\"fig-box\" x=\"242\" y=\"58\" width=\"298\" height=\"40\" rx=\"8\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"256\" y=\"83\">01\u003C\u002Ftext>\n  \u003Ctext class=\"fig-t\" x=\"280\" y=\"75\">Tabelle freigegeben?\u003C\u002Ftext>\n  \u003Ctext class=\"fig-s\" x=\"280\" y=\"91\">sales.orders ✓\u003C\u002Ftext>\n  \u003Crect class=\"fig-box\" x=\"242\" y=\"102\" width=\"298\" height=\"40\" rx=\"8\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"256\" y=\"127\">02\u003C\u002Ftext>\n  \u003Ctext class=\"fig-t\" x=\"280\" y=\"119\">Spalten freigegeben?\u003C\u002Ftext>\n  \u003Ctext class=\"fig-s\" x=\"280\" y=\"135\">country, status ✓\u003C\u002Ftext>\n  \u003Crect class=\"fig-box\" x=\"242\" y=\"146\" width=\"298\" height=\"40\" rx=\"8\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"256\" y=\"171\">03\u003C\u002Ftext>\n  \u003Ctext class=\"fig-t\" x=\"280\" y=\"163\">SQL bauen\u003C\u002Ftext>\n  \u003Ctext class=\"fig-s\" x=\"280\" y=\"179\">gebundene Parameter\u003C\u002Ftext>\n  \u003Crect class=\"fig-box\" x=\"242\" y=\"190\" width=\"298\" height=\"40\" rx=\"8\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"256\" y=\"215\">04\u003C\u002Ftext>\n  \u003Ctext class=\"fig-t\" x=\"280\" y=\"207\">Nur lesend\u003C\u002Ftext>\n  \u003Ctext class=\"fig-s\" x=\"280\" y=\"223\">keine Joins, kein Schreiben\u003C\u002Ftext>\n  \u003Crect class=\"fig-box\" x=\"586\" y=\"97\" width=\"158\" height=\"68\" rx=\"10\"\u002F>\n  \u003Ctext class=\"fig-t\" x=\"665\" y=\"126\" text-anchor=\"middle\">Databricks\u003C\u002Ftext>\n  \u003Ctext class=\"fig-s\" x=\"665\" y=\"145\" text-anchor=\"middle\">SQL Warehouse\u003C\u002Ftext>\n  \u003Cpath class=\"fig-flow fig-flow--ai\" d=\"M196 131 H226\"\u002F>\n  \u003Cpath class=\"fig-flow\" d=\"M556 131 H586\"\u002F>\n\u003C\u002Fsvg>\n\u003Cfigcaption>Eine strukturierte Anfrage durchläuft in Vordix vier Prüfungen, bevor eine rein lesende Abfrage das Databricks SQL Warehouse erreicht.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>\n\n\u003Cp>Das ist deutlich weniger flexibel als freies SQL, und genau diese Abwägung ist gewollt. Die\nSchnittstelle deckt die Fragen ab, die Agenten typischerweise gestellt bekommen (gefilterte Listen,\nAnzahlen und Summen pro Gruppe), und macht es gleichzeitig unmöglich, Tabellen oder Spalten\naußerhalb der Konfiguration abzufragen.\u003C\u002Fp>\n\u003Ch2>Freigaben pro Tabelle und pro Spalte\u003C\u002Fh2>\n\u003Cp>Tabellen werden über einen vollständigen Schlüssel der Form \u003Ccode>connection.catalog.schema.table\u003C\u002Fcode>\nangesprochen. Der Teil \u003Ccode>connection\u003C\u002Fcode> erlaubt mehrere benannte Databricks-Verbindungen, zum Beispiel\neine pro Workspace oder Umgebung. Vordix meldet sich über OAuth Machine-to-Machine mit einem Service\nPrincipal an, ein persönlicher Token ist also nicht im Spiel.\u003C\u002Fp>\n\u003Cp>Der Zugriff wird auf zwei Ebenen konfiguriert:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Tabellen.\u003C\u002Fstrong> Der Administrator gibt einzelne Tabellen frei, zunächst auf Organisationsebene als\nObergrenze und dann pro Projekt. Eine nicht freigegebene Tabelle erscheint nicht in\n\u003Ccode>get_tables\u003C\u002Fcode>, und eine Abfrage darauf wird abgelehnt.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Spalten pro Tabelle.\u003C\u002Fstrong> Unter jeder freigegebenen Tabelle sind die Spalten eine eigene\nAllowlist. Die freigegebenen Spalten werden gegen einen gespeicherten Scan des\nWarehouse-Schemas geprüft. Der Wert \u003Ccode>*\u003C\u002Fcode> steht für alle Spalten dieser Tabelle, was für Tabellen\nohne sensible Inhalte praktisch ist. Für eine Kundentabelle würde eine typische Konfiguration\n\u003Ccode>country\u003C\u002Fcode>, \u003Ccode>created_at\u003C\u002Fcode> und \u003Ccode>segment\u003C\u002Fcode> erlauben, aber nicht \u003Ccode>email\u003C\u002Fcode>, \u003Ccode>name\u003C\u002Fcode> oder \u003Ccode>iban\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Da Spalten pro Tabelle freigegeben werden, kann derselbe Spaltenname in einer Tabelle erlaubt und\nin einer anderen gesperrt sein. Die organisationsweite Obergrenze begrenzt, was ein Projekt\nfreigeben kann; ein Projekt kann keine Tabelle und keine Spalte erlauben, die die Organisation\nnicht freigegeben hat.\u003C\u002Fp>\n\u003Ch2>Personenbezogene Daten in Ergebnissen maskieren\u003C\u002Fh2>\n\u003Cp>Die Einschränkung auf Spalten entfernt die offensichtlichen Felder, aber personenbezogene Daten\nstehen auch an unerwarteten Stellen: eine E-Mail-Adresse in einem Freitextkommentar, eine IBAN in\neinem Referenzfeld, IP-Adressen in einer Log-Spalte. Für diese Fälle wendet Vordix Datenrichtlinien\nauf die Antwort an, bevor sie an den Agenten zurückgeht.\u003C\u002Fp>\n\u003Cp>Eine Datenrichtlinie arbeitet in drei Schichten:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Regeln für Feldpfade\u003C\u002Fstrong> bei bekannten Feldern (zum Beispiel \u003Ccode>customer.email\u003C\u002Fcode> immer maskieren),\u003C\u002Fli>\n\u003Cli>\u003Cstrong>eingebaute Erkennung\u003C\u002Fstrong> für gängige Muster: E-Mail-Adressen, Telefonnummern, IBANs,\nKreditkartennummern (geprüft mit dem Luhn-Algorithmus), IP-Adressen sowie Ausweis- und\nIdentifikationsnummern aus Deutschland, Österreich und der Schweiz,\u003C\u002Fli>\n\u003Cli>\u003Cstrong>organisationsweite Begriffslisten\u003C\u002Fstrong> für interne Begriffe wie Projektcodenamen.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Für jeden Treffer legt die Richtlinie fest, was passiert: Der Wert wird maskiert, pseudonymisiert\n(durch einen stabilen Platzhalter ersetzt, sodass derselbe Kunde weiterhin als dieselbe Einheit\nerkennbar bleibt), geschwärzt oder entfernt, oder die gesamte Antwort wird blockiert. Mit einer\nVorschau lässt sich an einem Beispiel prüfen, was eine Richtlinie bewirkt, bevor sie aktiv wird.\u003C\u002Fp>\n\u003Cfigure class=\"post-figure\">\n\u003Csvg viewBox=\"0 0 760 270\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" role=\"img\" aria-labelledby=\"dbx-mask-title\">\n  \u003Ctitle id=\"dbx-mask-title\">Eine Kundenzeile durchläuft Spalten-Allowlist und Datenrichtlinie; der Agent sieht nur freigegebene Spalten, die E-Mail in der Notiz ist maskiert.\u003C\u002Ftitle>\n  \u003Ctext class=\"fig-h\" x=\"16\" y=\"36\">ZEILE IM WAREHOUSE\u003C\u002Ftext>\n  \u003Ctext class=\"fig-h fig-c-ok\" x=\"464\" y=\"36\">WAS DER AGENT SIEHT\u003C\u002Ftext>\n  \u003Crect class=\"fig-box\" x=\"16\" y=\"54\" width=\"280\" height=\"28\" rx=\"6\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"28\" y=\"72\">country\u003C\u002Ftext>\n  \u003Ctext class=\"fig-t\" x=\"112\" y=\"73\">AT\u003C\u002Ftext>\n  \u003Crect class=\"fig-box\" x=\"16\" y=\"88\" width=\"280\" height=\"28\" rx=\"6\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"28\" y=\"106\">segment\u003C\u002Ftext>\n  \u003Ctext class=\"fig-t\" x=\"112\" y=\"107\">SMB\u003C\u002Ftext>\n  \u003Crect class=\"fig-box\" x=\"16\" y=\"122\" width=\"280\" height=\"28\" rx=\"6\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"28\" y=\"140\">created_at\u003C\u002Ftext>\n  \u003Ctext class=\"fig-t\" x=\"112\" y=\"141\">2026-03-14\u003C\u002Ftext>\n  \u003Crect class=\"fig-box fig-box--deny\" x=\"16\" y=\"156\" width=\"280\" height=\"28\" rx=\"6\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"28\" y=\"174\">email\u003C\u002Ftext>\n  \u003Ctext class=\"fig-t\" x=\"112\" y=\"175\">anna@example.com\u003C\u002Ftext>\n  \u003Crect class=\"fig-box fig-box--deny\" x=\"16\" y=\"190\" width=\"280\" height=\"28\" rx=\"6\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"28\" y=\"208\">name\u003C\u002Ftext>\n  \u003Ctext class=\"fig-t\" x=\"112\" y=\"209\">Anna Beispiel\u003C\u002Ftext>\n  \u003Crect class=\"fig-box\" x=\"16\" y=\"224\" width=\"280\" height=\"28\" rx=\"6\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"28\" y=\"242\">note\u003C\u002Ftext>\n  \u003Ctext class=\"fig-t\" x=\"112\" y=\"243\">über max@example.com\u003C\u002Ftext>\n  \u003Cpath class=\"fig-flow\" d=\"M296 120 H310\"\u002F>\n  \u003Cpath class=\"fig-flow\" d=\"M382 144 V170\"\u002F>\n  \u003Cpath class=\"fig-flow\" d=\"M454 194 H464\"\u002F>\n  \u003Crect class=\"fig-box\" x=\"310\" y=\"96\" width=\"144\" height=\"48\" rx=\"8\"\u002F>\n  \u003Ctext class=\"fig-t\" x=\"382\" y=\"117\" text-anchor=\"middle\">Spalten-Allowlist\u003C\u002Ftext>\n  \u003Ctext class=\"fig-s\" x=\"382\" y=\"134\" text-anchor=\"middle\">ohne email, name\u003C\u002Ftext>\n  \u003Crect class=\"fig-box\" x=\"310\" y=\"170\" width=\"144\" height=\"48\" rx=\"8\"\u002F>\n  \u003Ctext class=\"fig-t\" x=\"382\" y=\"191\" text-anchor=\"middle\">Datenrichtlinie\u003C\u002Ftext>\n  \u003Ctext class=\"fig-s\" x=\"382\" y=\"208\" text-anchor=\"middle\">maskiert Muster\u003C\u002Ftext>\n  \u003Crect class=\"fig-box fig-box--ok\" x=\"464\" y=\"54\" width=\"280\" height=\"28\" rx=\"6\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"476\" y=\"72\">country\u003C\u002Ftext>\n  \u003Ctext class=\"fig-t\" x=\"560\" y=\"73\">AT\u003C\u002Ftext>\n  \u003Crect class=\"fig-box fig-box--ok\" x=\"464\" y=\"88\" width=\"280\" height=\"28\" rx=\"6\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"476\" y=\"106\">segment\u003C\u002Ftext>\n  \u003Ctext class=\"fig-t\" x=\"560\" y=\"107\">SMB\u003C\u002Ftext>\n  \u003Crect class=\"fig-box fig-box--ok\" x=\"464\" y=\"122\" width=\"280\" height=\"28\" rx=\"6\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"476\" y=\"140\">created_at\u003C\u002Ftext>\n  \u003Ctext class=\"fig-t\" x=\"560\" y=\"141\">2026-03-14\u003C\u002Ftext>\n  \u003Crect class=\"fig-box fig-box--muted fig-box--dashed\" x=\"464\" y=\"156\" width=\"280\" height=\"28\" rx=\"6\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"476\" y=\"174\">email\u003C\u002Ftext>\n  \u003Ctext class=\"fig-s fig-c-deny\" x=\"560\" y=\"174\">entfernt\u003C\u002Ftext>\n  \u003Crect class=\"fig-box fig-box--muted fig-box--dashed\" x=\"464\" y=\"190\" width=\"280\" height=\"28\" rx=\"6\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"476\" y=\"208\">name\u003C\u002Ftext>\n  \u003Ctext class=\"fig-s fig-c-deny\" x=\"560\" y=\"208\">entfernt\u003C\u002Ftext>\n  \u003Crect class=\"fig-box fig-box--primary\" x=\"464\" y=\"224\" width=\"280\" height=\"28\" rx=\"6\"\u002F>\n  \u003Ctext class=\"fig-s\" x=\"476\" y=\"242\">note\u003C\u002Ftext>\n  \u003Ctext class=\"fig-t\" x=\"560\" y=\"243\">über ***@***\u003C\u002Ftext>\n\u003C\u002Fsvg>\n\u003Cfigcaption>Dieselbe Kundenzeile vor und nach Vordix: Gesperrte Spalten werden entfernt, eine E-Mail-Adresse im Freitext der Notiz wird maskiert.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>\n\n\u003Cp>Zusätzlich lassen sich die Felder einer Antwort filtern: Nur freigegebene Felder werden\nzurückgegeben, und wenn der Filter nicht angewendet werden kann, schlägt der Aufruf fehl, statt\nungefilterte Daten zu liefern.\u003C\u002Fp>\n\u003Ch2>Audit-Log und Rate Limits\u003C\u002Fh2>\n\u003Cp>Jede Abfrage landet im Audit-Log, auch abgelehnte mit dem Grund (zum Beispiel „Tabelle nicht\nfreigegeben“ oder „Spalte nicht freigegeben“). Parameter werden vor dem Schreiben geschwärzt, damit\ndas Log nicht selbst zur zweiten Kopie sensibler Filterwerte wird. Rate Limits pro Schlüssel\nverhindern, dass ein Agent ungeplant zum Massenexport wird. Mehr zum Protokoll steht im Beitrag\n\u003Ca href=\"\u002Fde\u002Fblog\u002Faudit-log-ki-agenten-eu-ai-act\">Audit-Log für KI-Agenten\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2>Grenzen und Abwägungen\u003C\u002Fh2>\n\u003Cp>Der Ansatz hat klare Grenzen, und es ist besser, sie vor Projektbeginn zu kennen:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Keine Joins.\u003C\u002Fstrong> Fragen, die Daten aus mehreren Tabellen brauchen, lassen sich nicht mit einem\nAufruf beantworten. Der Agent kann Tabellen nacheinander abfragen, für regelmäßige Auswertungen\nist aber eine vorbereitete Tabelle, die die Daten bereits zusammenführt, die bessere Lösung. Das\nverlagert etwas Arbeit zum Datenteam.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Kein rohes SQL, keine Schreibzugriffe.\u003C\u002Fstrong> Komplexe Analysen, Window Functions oder Änderungen an\nDaten sind nicht vorgesehen. Die Schnittstelle dient dazu, Fragen zu beantworten, nicht für Data\nEngineering.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Die Erkennung basiert auf Mustern.\u003C\u002Fstrong> E-Mail-Adressen oder IBANs werden zuverlässig erkannt;\nPersonennamen im Freitext gehören nicht zu den eingebauten Erkennungen. Spalten mit Namen sollten\ndaher über die Spalten-Allowlist ausgeschlossen oder über Feldpfad-Regeln abgedeckt werden, statt\nsich auf die Erkennung zu verlassen.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Aufwand für die Konfiguration.\u003C\u002Fstrong> Die Auswahl von Tabellen und Spalten ist eine Entscheidung der\nData Governance und braucht jemanden, der die Daten kennt. Der Platzhalter \u003Ccode>*\u003C\u002Fcode> spart Zeit, sollte\naber nur für Tabellen verwendet werden, bei denen jede heutige und künftige Spalte unbedenklich\nist.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Fazit\u003C\u002Fh2>\n\u003Cp>KI-Agenten Zugriff auf Databricks zu geben ist sinnvoll, aber ein Warehouse-Token zusammen mit\nfreiem SQL gibt ihnen weit mehr, als die Aufgabe erfordert. Eine engere Schnittstelle mit\nstrukturierten, rein lesenden Abfragen, Freigaben für Tabellen und für Spalten pro Tabelle sowie\ndie Maskierung personenbezogener Daten in den Ergebnissen erhalten den nützlichen Teil (Antworten\nauf wiederkehrende Datenfragen) und beseitigen den Großteil des Risikos. Die verbleibenden Grenzen,\nvor allem fehlende Joins und die musterbasierte Erkennung, sind beherrschbar, wenn man sie von\nAnfang an einplant.\u003C\u002Fp>\n\u003Cp>Mehr aus dieser Serie: \u003Ca href=\"\u002Fde\u002Fblog\u002Fwas-ist-ein-mcp-gateway\">Was ist ein MCP Gateway?\u003C\u002Fa> und\n\u003Ca href=\"\u002Fde\u002Fblog\u002Faudit-log-ki-agenten-eu-ai-act\">Audit-Log für KI-Agenten\u003C\u002Fa>. Wenn Sie die Kontrollen für\nDatabricks mit Ihrem eigenen Warehouse testen möchten, können Sie eine Demo anfragen oder die\nDatabricks-Integrationsseite in der Vordix-Dokumentation lesen.\u003C\u002Fp>\n",{"de":4,"en":20},"ai-agents-databricks-data-access",1790588073351]