Dienstrichtlinienfunktionsreferenz

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 ASK unterscheiden keine Anfrage-Tags, und Genehmigungsaufforderungen zeigen sie nicht an. Eine Genehmigung kann für einen ansonsten passenden Call mit unterschiedlichen Tags wiederverwendet werden. Verwendung ALLOW und DENY Entscheidungen 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 das reason in einem obersten Objekt databricks_service_policy befindet.
  • 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.