Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 ilreasonin un oggetto di livello superioredatabricks_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.