Informazioni di riferimento sulle funzioni dei criteri di servizio

Important

Questa funzionalità è in versione beta. Gli amministratori dell'account possono controllare l'accesso a questa funzionalità dalla pagina Anteprime della console dell'account. Vedere Gestire le anteprime di Azure Databricks.

Un criterio di servizio personalizzato è una funzione definita dall'utente (UDF) SQL registrata nel catalogo unity che Azure Databricks valuta su ogni interazione con il servizio a cui è collegata. Questa pagina è il campo e le informazioni di riferimento sulla sintassi per tali funzioni. Per la procedura end-to-end, vedere Creare e associare criteri di servizio.

Firma della funzione

Una funzione dei criteri di servizio accetta un singolo eventVARIANT parametro e restituisce :VARIANT

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

La funzione viene eseguita in entrambi i punti di valutazione. Branch on event:type::string per distinguerli:

  • 'request': la fase di input (ON CALL), prima che il servizio venga invocato.
  • 'response': la fase di output (ON RESULT), dopo che il servizio risponde.

Argomento event

event contiene i dati di interazione e il contesto. I campi disponibili dipendono dal tipo di servizio:

Campo Si applica a Descrizione
event:type Tutti i servizi La fase: 'request' (input, IN CHIAMATA) oppure 'response' (output, ON RESULT).
event:target Tutti i servizi Il nome completo del catalogo unity del servizio a cui è associato il criterio (facoltativo).
event:context.actor.run_as Tutti i servizi Identità run-as per cui la richiesta viene autorizzata.
event:context.actor.context.is_on_behalf_of Tutti i servizi true quando un agente o un'app agisce per conto di un utente (on-behalf-of o OBO). Usarlo per scrivere criteri con riconoscimento dell'agente che si applicano solo quando un agente agisce per un utente.
event:context.actor.context.client_id Tutti i servizi ID client OAuth dell'identità che agisce, quando presente (chiamate OBO).
event:context.actor.context.actor_resource Tutti i servizi Risorsa dell'identità che agisce, ad esempio un agente, quando presente.
event:context.actor.context.is_actor_authenticated Tutti i servizi true quando l'identità agendo autenticata come client riservato.
event:context.tool.name, event:context.tool.arguments Servizi MCP Lo strumento chiamato e i relativi argomenti , ad esempio event:context.tool.arguments.repo.
event:context.message Servizi modello, Servizi provider di modelli Messaggio dell'ultimo utente o assistente estratto (indipendente dall'API). Usare questa opzione per i controlli del contenuto.
event:data Servizi modello, Servizi provider di modelli Payload completo della richiesta o della risposta.
event:request_data Servizi modello, Servizi provider di modelli La richiesta originale, disponibile durante la fase di output (ON RESULT).

Note

L'accesso al percorso (event:...) restituisce un oggetto VARIANT. Eseguirne il cast a un tipo scalare prima di confrontarlo con un valore letterale ,ad esempio event:type::string = 'request'; in caso contrario, il confronto non riesce con un DATATYPE_MISMATCH errore.

Valore restituito

Un criterio personalizzato è un criterio decisionale: restituisce un oggetto con un VARIANT campo , resultALLOWo DENY (senza distinzione tra maiuscole e minuscole) e un oggetto facoltativoASK.reason Il result valore determina cosa accade:

  • ALLOW: l'interazione procede.
  • DENY: Azure Databricks blocca l'interazione. Invece di un errore, il chiamante riceve una risposta riuscita (HTTP 200) il cui turno assistente segnala il blocco, con il reason in un oggetto di livello superiore databricks_service_policy .
  • ASK: l'interazione viene sospesa per l'approvazione umana prima di procedere.

Compilare il risultato con named_struct ed eseguire il wrapping in to_variant_object in modo che la funzione restituisca un VARIANToggetto , mantenendo result e reason come campi di primo livello. Un bare restituisce named_struct un STRUCToggetto e CAST(... AS VARIANT) non è supportato.

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

Il gateway accetta anche un modulo di busta di tipo forward-looking:

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

Note

Accesso al campo chiuso non riuscita: l'accesso a un campo che non esiste nel VARIANT parametro genera un errore e DENY genera un errore (l'accesso SQL VARIANT standard restituisce NULL per i campi mancanti). Ciò impedisce a un criterio di consentire un'interazione quando mancano i campi previsti.

SQL supportato

Azure Databricks traspila il corpo del criterio in CEL e lo valuta in fase di esecuzione, quindi il corpo della funzione supporta solo un subset limitato di SQL. Azure Databricks rifiuta una funzione o un costrutto non supportato quando si allegano i criteri e il criterio non riesce a chiudersi (DENY) durante la valutazione.

Category Supportato nel corpo dei criteri
Operatori Operatori di confronto, logici e aritmetici; \|\|, IN, LIKEe IS [NOT] NULL
Flusso di controllo CASE e IF
Cast CASTto INT/BIGINT, DOUBLE/FLOAT, STRINGo BOOLEAN; l'operatore ::
L'accesso ai dati Accesso al percorso VARIANT/JSON
Funzioni di stringa CONCAT LENGTH, CHAR_LENGTH, UPPER, LOWER, SUBSTRING, TRIM, LTRIMRTRIM, , REPLACESTARTSWITH, , ENDSWITHCONTAINS
Altre funzioni COALESCE NULLIF, IFNULL, , NVL, ABSMOD, ISNULL, ISNOTNULL, , NAMED_STRUCTTO_VARIANT_OBJECT

Non supportato:ai_query, sottoquery, BETWEEN, funzioni di aggregazione, lambda/ EXISTSe variadic CONCAT o COALESCE.