Naslaginformatie over servicebeleidsfuncties

Belangrijk

Deze functie bevindt zich in de bètaversie. Accountbeheerders kunnen de toegang tot deze functie beheren via de pagina Previews van de accountconsole. Zie Azure Databricks previews beheren.

Een aangepast servicebeleid is een door de gebruiker gedefinieerde SQL-functie (UDF) die is geregistreerd in Unity Catalog die Azure Databricks evalueert op elke interactie met de service waaraan deze is gekoppeld. Deze pagina is het veld en de syntaxisverwijzing voor deze functies. Zie Een servicebeleid maken en koppelen voor de end-to-end-procedure.

Functiesignatuur

Een servicebeleidsfunctie gebruikt één eventVARIANT parameter en retourneert een VARIANT:

CREATE OR REPLACE FUNCTION <catalog>.<schema>.<function_name>(
  event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN <expression>;

De functie wordt uitgevoerd op beide evaluatiepunten. Vertakking aan event:type::string om ze apart te vertellen:

  • 'request': de invoerfase (ON CALL), voordat de dienst wordt opgeroepen.
  • 'response': de uitvoerfase (ON RESULT), nadat de dienst reageert.

Het event argument

event draagt de interactiegegevens en context. De beschikbare velden zijn afhankelijk van het servicetype:

Veld Van toepassing op: Description
event:type Alle services De fase: 'request' (invoer, ON CALL) of 'response' (output, ON RESULT).
event:target Alle services De volledige naam van de Unity Catalog van de service waaraan het beleid is gekoppeld (optioneel).
event:context.actor.run_as Alle services De run-as-identiteit waarvoor de aanvraag toestemming geeft.
event:context.actor.context.is_on_behalf_of Alle services true wanneer een agent of app namens een gebruiker handelt (namens of OBO). Gebruik dit om agentbewust beleid te schrijven dat alleen van toepassing is wanneer een agent voor een gebruiker handelt.
event:context.actor.context.client_id Alle services De OAuth-client-id van de actieve identiteit, indien aanwezig (OBO-aanroepen).
event:context.actor.context.actor_resource Alle services De resource van de actieve identiteit, zoals een agent, wanneer deze aanwezig is.
event:context.actor.context.is_actor_authenticated Alle services true wanneer de actieve identiteit is geverifieerd als een vertrouwelijke client.
event:context.tool.name, event:context.tool.arguments MCP-services Het hulpprogramma dat wordt aangeroepen en de bijbehorende argumenten (bijvoorbeeld event:context.tool.arguments.repo).
event:context.message ModelServices, Model Provider Services Het geëxtraheerde laatste gebruikers- of assistentbericht (API-agnostisch). Gebruik dit voor inhoudscontroles.
event:data ModelServices, Model Provider Services De volledige nettolading van de aanvraag of het antwoord.
event:request_data ModelServices, Model Provider Services Het oorspronkelijke verzoek, beschikbaar tijdens de uitvoerfase (ON RESULT).

Note

Padtoegang (event:...) retourneert een VARIANT. Cast het naar een scalaire type voordat u het vergelijkt met een letterlijke waarde (bijvoorbeeld event:type::string = 'request'); anders mislukt de vergelijking met een DATATYPE_MISMATCH fout.

Retourwaarde

Een aangepast beleid is een beslissingsbeleid: het retourneert een VARIANT met een result veld van ALLOW, DENYof ASK (niet hoofdlettergevoelig) en een optioneel reason. De result waarde bepaalt wat er gebeurt:

  • ALLOW: de interactie wordt voortgezet.
  • DENY: Azure Databricks blokkeert de interactie. In plaats van een fout ontvangt de aanroeper een succesvol (HTTP 200) antwoord waarvan de assistent-beurt het blok rapporteert, waarbij de reason in een topniveauobject databricks_service_policy is.
  • ASK: de interactie wordt onderbroken voor menselijke goedkeuring voordat u doorgaat.

Bouw het resultaat met named_struct en verpakt het in to_variant_object , zodat de functie een VARIANTvelden result op het hoogste niveau retourneert en reason als velden op het hoogste niveau retourneert. Een lege named_struct waarde retourneert een STRUCT, en CAST(... AS VARIANT) wordt niet ondersteund.

to_variant_object(named_struct('result', 'DENY', 'reason', 'GitHub push operations are not permitted by policy.'))

De gateway accepteert ook een naar voren ogend envelopformulier:

to_variant_object(named_struct('decision', named_struct('result', 'DENY', 'reason', '...')))

Note

Niet-gesloten veldtoegang: als u een veld opent dat niet in de VARIANT parameter voorkomt, treedt er een fout op en resulteert dit in DENY (standaard SQL-toegang VARIANT retourneert NULL voor ontbrekende velden). Hiermee voorkomt u dat een beleid een interactie toestaat wanneer verwachte velden ontbreken.

Ondersteunde SQL

Azure Databricks de beleidsbody naar CEL transpileert en deze tijdens runtime evalueert, ondersteunt de hoofdtekst van de functie dus slechts een beperkte subset van SQL. Azure Databricks weigert een niet-ondersteunde functie of constructie wanneer u het beleid koppelt, en het beleid mislukt (DENY) tijdens de evaluatie.

Categorie Ondersteund in de hoofdtekst van het beleid
Operatoren Vergelijkings-, logische en rekenkundige operatoren; \|\|, , INLIKEenIS [NOT] NULL
Besturing van de stroom CASE en IF
Werpt CASTaan INT/BIGINT, DOUBLE/FLOAT, STRINGof BOOLEAN; de operator ::
Toegang tot gegevens VARIANT/JSON-padtoegang
Stringfuncties CONCAT, , LENGTH, , , , CHAR_LENGTH, UPPER, LOWER, SUBSTRINGTRIMLTRIMRTRIMREPLACESTARTSWITHENDSWITHCONTAINS
Andere functies COALESCE, , NULLIF, IFNULLNVL, , ABS, MOD, , ISNULLISNOTNULLNAMED_STRUCTTO_VARIANT_OBJECT

Niet ondersteund:ai_query, subquery's, BETWEENstatistische functies, lambdas / EXISTS, en variadic CONCAT of COALESCE.