Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wichtig
Dieses Feature befindet sich in der Betaversion. Workspace-Administratoren können den Zugriff auf diese Funktion über die Vorsichtsseite steuern, indem sie sich für die Vorschau der Unity AI Gateway Service Policies anmelden. Siehe Verwalten von Vorschauen auf Arbeitsbereichsebene.
Eine benutzerdefinierte SQL-Service-Richtlinie ist eine benutzerdefinierte SQL-Funktion (UDF), die im Unity-Katalog registriert ist und von Azure Databricks bei jeder Interaktion mit dem angeschlossenen Dienst bewertet wird. Diese Seite ist der Feld- und Syntaxverweis für diese Funktionen. Für das End-to-End-Verfahren siehe Create a SQL Policy.
Funktionssignatur
Eine Dienstrichtlinienfunktion verwendet einen einzelnen eventVARIANT Parameter und gibt folgendes VARIANTzurück:
CREATE OR REPLACE FUNCTION <catalog>.<schema>.<function_name>(
event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN <expression>;
Die Funktion wird an beiden Auswertungspunkten ausgeführt. Verzweigen Sie weiter event:type::string , um sie auseinander zu setzen:
-
'request': die Eingabephase (ON CALL), bevor der Dienst aufgerufen wird. -
'response': die Ausgangsphase (ON RESULT), nachdem der Dienst reagiert.
Das event Argument
event trägt die Interaktionsdaten und den Kontext. Die verfügbaren Felder hängen vom Diensttyp ab:
| Field | Gilt für: | Description |
|---|---|---|
event:type |
Alle Dienste | Die Phase: 'request' (Eingang, ON CALL) oder 'response' (Ausgang, ON RESULT). |
event:target |
Alle Dienste | Der vollständige Name des Unity-Katalogs des Diensts, dem die Richtlinie angefügt ist (optional). |
event:context.request_tags |
Modelldienste, Modellanbieterdienste, MCP-Dienste (tools/call) |
Ein JSON-Objekt mit vom Aufrufer bereitgestellten String-Schlüsseln und Stringwerten. Siehe Anfrage-Tags. |
event:context.actor.run_as |
Alle Dienste | Die Run-as-Identität, für die die Anforderung autorisiert wird. |
event:context.actor.context.is_on_behalf_of |
Alle Dienste |
true wenn ein Agent oder eine App im Namen eines Benutzers (im Auftrag von oder OBO) handelt. Verwenden Sie sie, um Agent-fähige Richtlinien zu schreiben, die nur gelten, wenn ein Agent für einen Benutzer fungiert. |
event:context.actor.context.client_id |
Alle Dienste | Die OAuth-Client-ID der handelnden Identität, wenn vorhanden (OBO-Aufrufe). |
event:context.actor.context.actor_resource |
Alle Dienste | Die Ressource der handelnden Identität, z. B. eines Agents, wenn vorhanden. |
event:context.actor.context.is_actor_authenticated |
Alle Dienste |
true wenn die handelnde Identität als vertraulicher Client authentifiziert wurde. |
event:context.tool.name, event:context.tool.arguments |
MCP-Dienste | Das aufgerufene Tool und seine Argumente (z. B event:context.tool.arguments.repo. ). |
event:context.message |
Modelldienste, Modellanbieterdienste | Die extrahierte letzte Benutzer- oder Assistentennachricht (API-agnostic). Verwenden Sie dies für Inhaltsüberprüfungen. |
event:data |
Modelldienste, Modellanbieterdienste | Die vollständige Anforderungs- oder Antwortnutzlast. |
event:request_data |
Modelldienste, Modellanbieterdienste | Die ursprüngliche Anfrage, verfügbar während der Ausgabephase (ON RESULT). |
Hinweis
Pfadzugriff (event:...) gibt einen VARIANT. Cast it to a scalar type before comparison it to a literal (for example, event:type::string = 'request'); otherwise the comparison fails with a DATATYPE_MISMATCH error.
Anfrage-Tags
Benutzerdefinierte Richtlinien können die im Header Databricks-Ai-Gateway-Request-Tags gesendeten Tags bewerten:
Databricks-Ai-Gateway-Request-Tags: {"project":"p-1042"}
Diese Unterstützung gilt für Unity-Gateway-Anfragen auf Pfaden, in denen Service-Richtlinien ausgeführt werden, einschließlich MCP tools/call.
Tags stammen aus Anfrage-Headern und erscheinen zusammen event:context mit anderen Richtlinien-Metadaten.
event:data und event:request_data Nutzlastkörper enthalten.
event:context.request_tagsist ein Objekt innerhalb der eventVARIANT, mit String-Schlüsseln und String-Werten, logisch .MAP<STRING, STRING> Lies ein Tag mit event:context.request_tags.project::string. Schlüssel und Werte bewahren Groß-, Zeichensetzung und leere Zeichenketten. Eine Anfrage ohne den Header hat ein leeres Objekt ({}). Beide Evaluationsphasen erhalten dieselben Request-Tags, unter anderem durch Request-Transformationen, Retries und Model Fallback.
Standardmäßig ist die kombinierte Größe der dekodierten Schlüssel und Werte auf 10 KiB UTF-8-Daten begrenzt. Auch HTTP-Header-Größenbeschränkungen gelten. Für SDK- und REST-Beispiele siehe Request Tagging.
Modelldienste lehnen fehlgeformte oder überdimensionierte Tag-Header ab. Bei MCP-Anfragen tools/call mit entsprechenden Service-Richtlinien lehnt das Gateway diese Header ebenfalls ab, bevor es die Richtlinien auswertet, auch im Log-Modus .
Tags werden vom Aufrufer bereitgestellt und sind getrennt von Service Tags und dem authentifizierten Actor-Kontext. Ein Tag allein stellt keine Identität oder Erlaubnis zur Nutzung eines Projekts fest. Verwenden Sie bei der Überprüfung dieser Berechtigungen vertrauenswürdige Identitäts- und Autorisierungsdaten. Siehe Require a eligible project als Beispiel für die Überprüfung eines Tag-Werts.
Es gelten die folgenden Einschränkungen:
- Anfragetags sind nicht in Ereignissen enthalten, die an externe Richtlinienanbieter gesendet oder automatisch zu LLM-als-Richter-Prompts hinzugefügt werden.
- MCP-Genehmigungen
ASKunterscheiden keine Anfrage-Tags, und Genehmigungsaufforderungen zeigen sie nicht an. Eine Genehmigung kann für einen ansonsten passenden Call mit unterschiedlichen Tags wiederverwendet werden. VerwendungALLOWundDENYEntscheidungen für die Vollstreckung auf Etiketten. Diese Entscheidungen werden bei jeder Anfrage bewertet.
Zurückgegebener Wert
Eine benutzerdefinierte Richtlinie ist eine Entscheidungsrichtlinie: Sie gibt ein VARIANT Feld von result, oder ALLOWDENY (Groß-/Kleinschreibung) und eine optionale ASK.reason Der result Wert bestimmt, was passiert:
-
ALLOW: Die Interaktion wird fortgesetzt. -
DENY: Azure Databricks blockiert die Interaktion. Anstelle eines Fehlers erhält der Anrufer eine erfolgreiche (HTTP 200) Antwort, deren Assistenten-Turn den Block meldet, wobei sich dasreasonin einem obersten Objektdatabricks_service_policybefindet. -
ASK: bei einem MCP-Dienst pausiert die Anfrage zur Benutzergenehmigung, bevor das Tool ausgeführt wird. Wenn eine benutzerdefinierte SQL- oder Python-Richtlinie für einen Model Service oder Model Provider Service zurückkehrtASK, blockiert Azure Databricks die Anfrage oder Antwort, da diese Dienste den Benutzer nicht um eine Genehmigung bitten können.
Erstellen Sie das Ergebnis mit named_struct und umschließen Sie es so to_variant_object , dass die Funktion ein VARIANT, beibehaltenes result und reason als Felder der obersten Ebene zurückgibt. Eine Bare named_struct gibt ein STRUCT, und CAST(... AS VARIANT) wird nicht unterstützt.
to_variant_object(named_struct('result', 'DENY', 'reason', 'GitHub push operations are not permitted by policy.'))
Das Gateway akzeptiert auch ein zukunftsgerichtetes Umschlagformular:
to_variant_object(named_struct('decision', named_struct('result', 'DENY', 'reason', '...')))
Hinweis
Fehler beim schließenden Feldzugriff: Der Zugriff auf ein Feld, das nicht im VARIANT Parameter vorhanden ist, löst einen Fehler aus und führt zu DENY einem Fehler (standard SQL VARIANT access returns NULL for missing fields). Dadurch wird verhindert, dass eine Richtlinie eine Interaktion zulässt, wenn erwartete Felder fehlen.
Unterstützte SQL
Azure Databricks transpiliert den Richtlinientext in CEL und wertet ihn zur Laufzeit aus, sodass der Funktionstext nur eine eingeschränkte Teilmenge von SQL unterstützt. Azure Databricks lehnt eine nicht unterstützte Funktion ab oder erstellt, wenn Sie die Richtlinie anfügen, und die Richtlinie schlägt bei der Auswertung geschlossen (DENY) fehl.
| Kategorie | Unterstützt im Richtlinientext |
|---|---|
| Betriebspersonal | Vergleichs-, logische und arithmetische Operatoren; \|\|, IN, , LIKEund IS [NOT] NULL |
| Kontrollfluss |
CASE und IF |
| Wirft |
CASTan INT/BIGINT, DOUBLE/FLOAT, , STRINGoder BOOLEAN; der :: Operator |
| Datenzugriff | VARIANT /JSON-Pfadzugriff |
| Zeichenfolgenfunktionen |
CONCAT, LENGTH, , CHAR_LENGTH, UPPER, LOWERSUBSTRING, TRIM, , LTRIM, RTRIM, , REPLACESTARTSWITH, , ENDSWITHCONTAINS |
| Andere Funktionen |
COALESCE, NULLIF, , IFNULLNVL, ABS, MOD, ISNULL, , , ISNOTNULL, , NAMED_STRUCTTO_VARIANT_OBJECT |
Nicht unterstützt:ai_query, Unterabfragen, BETWEEN, Aggregatfunktionen, Lambdas / EXISTSund variadisch CONCAT oder COALESCE.