Referência da função da política de serviço
Beta
Este recurso está em Beta. Os administradores de account podem controlar o acesso a este recurso a partir da página **Previews** do console da account. Consulte Gerenciar prévias do Databricks.
Uma política de serviço personalizada é uma função definida pelo usuário (UDF) de SQL registrada no Unity Catalog que o Databricks avalia em cada interação com o serviço ao qual está anexada. Esta página é a referência de campo e sintaxe para essas funções. Para o procedimento completo, consulte Criar e anexar uma política de serviço.
Assinatura de função
Uma função de política de serviço aceita um único parâmetro event VARIANT e retorna um VARIANT:
CREATE OR REPLACE FUNCTION <catalog>.<schema>.<function_name>(
event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN <expression>;
A função realiza a execução em ambos os pontos de avaliação. Ramifique em event:type::string para distingui-los:
'request': a fase ON CALL , antes que o serviço seja invocado.'response': a fase ON RESULT , depois que o serviço responde.
O argumento event
event contém os dados e o contexto da interação. Os campos disponíveis dependem do tipo de serviço:
campo | Aplica-se a | Descrição |
|---|---|---|
| Todos os serviços | A fase: |
| Todos os serviços | O nome completo do Unity Catalog do serviço ao qual a política está anexada (opcional). |
| Todos os serviços | A identidade de execução com a qual a solicitação é autorizada. |
| Todos os serviços |
|
| Todos os serviços | O ID do cliente OAuth da identidade que está atuando, quando presente (chamadas OBO). |
| Todos os serviços | O recurso da identidade em ação, como um agente, quando presente. |
| Todos os serviços |
|
| Serviços MCP | A ferramenta que está sendo chamada e seus argumentos (por exemplo, |
| Serviços de Modelo | A última mensagem de usuário ou assistente extraída (independente de API). Use isto para verificações de conteúdo. |
| Serviços de Modelo | O payload completo de solicitação ou resposta. |
| Serviços de Modelo | A solicitação original, disponível durante ON RESULT. |
O acesso ao caminho (event:...) retorna um VARIANT. Converta-o para um tipo escalar antes de compará-lo a um literal (por exemplo, event:type::string = 'request'); caso contrário, a comparação falha com um erro DATATYPE_MISMATCH.
Valor de retorno
Uma política personalizada é uma Política de Decisão: ela retorna um VARIANT com um campo result de ALLOW, DENY ou ASK (não diferencia maiúsculas de minúsculas) e um reason opcional. O valor result determina o que acontece:
ALLOW: a interação prossegue.DENY: Databricks bloqueia a interação. O chamador recebe um erro estruturado com oreason.ASK: a interação pausa para aprovação humana antes de prosseguir.
Crie o resultado com named_struct e envolva-o em to_variant_object para que a função retorne um VARIANT, mantendo result e reason como campos de nível superior. Um named_struct simples retorna um STRUCT, e CAST(... AS VARIANT) não é compatível.
to_variant_object(named_struct('result', 'DENY', 'reason', 'GitHub push operations are not permitted by policy.'))
O gateway também aceita um formulário de envelope prospectivo:
to_variant_object(named_struct('decision', named_struct('result', 'DENY', 'reason', '...')))
Acesso a campo com falha fechada : Acessar um campo que não existe no parâmetro VARIANT gera um erro e resulta em DENY (o acesso SQL VARIANT padrão retorna NULL para campos ausentes). Isso impede que uma política permita uma interação quando os campos esperados estiverem ausentes.
SQL compatível
A Databricks transpila o corpo da política para CEL e o avalia em tempo de execução, portanto, o corpo da função oferece suporte apenas a um subconjunto restrito de SQL. A Databricks rejeita uma função ou construção não compatível ao anexar a política, e a política falha fechada (DENY) na avaliação.
Categoria | Compatível no corpo da política |
|---|---|
Operadores | Operadores de comparação, lógicos e aritméticos; |
Fluxo de controle |
|
Conversões |
|
Acesso aos dados | VARIANTE / acesso ao caminho JSON |
Funções de strings |
|
Outras funções |
|
Não suportado: ai_query, subqueries, BETWEEN, funções de agregação, lambdas / EXISTS e CONCAT ou COALESCE variádicos.