Referência da função de política de serviço

Importante

Esse recurso está em Beta. Os administradores de conta podem controlar o acesso a esse recurso na página Visualizações do console da conta. Consulte Gerenciar visualizações do Azure Databricks.

Uma política de serviço personalizada é uma UDF (função definida pelo usuário) do SQL registrada no Catálogo do Unity que Azure 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 de ponta a ponta, consulte Criar e anexar uma política de serviço.

Assinatura de função

Uma função de política de serviço usa um único eventVARIANT parâmetro e retorna um VARIANT:

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

A função é executada em ambos os pontos de avaliação. event:type::string Ramificar para diferenciá-los:

  • 'request': a fase de entrada (ON CALL), antes que o serviço seja invocado.
  • 'response': a fase de saída (ON RESULT), após a resposta do serviço.

O event argumento

event carrega os dados de interação e o contexto. Os campos disponíveis dependem do tipo de serviço:

Campo Aplica-se a Descrição
event:type Todos os serviços A fase: 'request' (entrada, EM CHAMADA) ou 'response' (saída, EM RESULTADO).
event:target Todos os serviços O nome completo do Catálogo do Unity do serviço ao qual a política está anexada (opcional).
event:context.actor.run_as Todos os serviços A identidade executar como a qual a solicitação autoriza.
event:context.actor.context.is_on_behalf_of Todos os serviços true quando um agente ou aplicativo está agindo em nome de um usuário (em nome ou OBO). Use-o para gravar políticas com reconhecimento de agente que se aplicam somente quando um agente age para um usuário.
event:context.actor.context.client_id Todos os serviços A ID do cliente OAuth da identidade de atuação, quando presente (chamadas OBO).
event:context.actor.context.actor_resource Todos os serviços O recurso da identidade de atuação, como um agente, quando presente.
event:context.actor.context.is_actor_authenticated Todos os serviços true quando a identidade de atuação é autenticada como um cliente confidencial.
event:context.tool.name, event:context.tool.arguments Serviços MCP A ferramenta que está sendo chamada e seus argumentos (por exemplo, event:context.tool.arguments.repo).
event:context.message Serviços de Modelo, Serviços de Provedor de Modelos A última mensagem de usuário ou assistente extraída (independente de API). Use isso para verificações de conteúdo.
event:data Serviços de Modelo, Serviços de Provedor de Modelos O conteúdo completo de solicitação ou resposta.
event:request_data Serviços de Modelo, Serviços de Provedor de Modelos A solicitação original, disponível durante a fase de saída (NO RESULTADO).

Note

O acesso ao caminho (event:...) retorna um VARIANT. Converta-o em um tipo escalar antes de compará-lo a um literal (por exemplo, ); caso contrário, event:type::string = 'request'a comparação falhará com um DATATYPE_MISMATCH erro.

Valor de retorno

Uma política personalizada é uma Política de Decisão: ela retorna um com um VARIANTresult campo de ALLOW, DENYou ASK (não diferencia maiúsculas de minúsculas) e um opcional reason. O result valor determina o que acontece:

  • ALLOW: a interação continua.
  • DENY: Azure Databricks bloqueia a interação. Em vez de um erro, o chamador recebe uma resposta bem-sucedida (HTTP 200) cujo turno assistente reporta o bloqueio, com o reason em um objeto de nível superior databricks_service_policy .
  • ASK: a interação pausa para aprovação humana antes de prosseguir.

Compile o resultado com named_struct e embrulhe-o para que to_variant_object a função retorne um VARIANTcampo , mantendo result e reason como de nível superior. Um bare named_struct retorna um STRUCTe CAST(... AS VARIANT) não tem suporte.

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 futuro:

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

Note

Acesso a campo fechado por falha: acessar um campo que não existe no VARIANT parâmetro 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 estão ausentes.

SQL suportado

Azure Databricks transpila o corpo da política para CEL e o avalia em runtime, de modo que o corpo da função dá suporte apenas a um subconjunto restrito do SQL. Azure Databricks rejeita uma função ou construção sem suporte quando você anexa a política e a política falha ao fechar (DENY) na avaliação.

Categoria Com suporte no corpo da política
Operators Operadores de comparação, lógicos e aritméticos; \|\|, INe LIKEIS [NOT] NULL
Fluxo de controle CASE e IF
Conversões CASTpara INT/BIGINT, DOUBLE/FLOAT, STRINGou BOOLEAN; o operador ::
Acesso a dados Acesso ao caminho VARIANT/JSON
Funções de cadeia de caracteres CONCAT, LENGTH, CHAR_LENGTH, UPPER, , LOWER, SUBSTRING, , TRIM, LTRIM, RTRIM, REPLACE, , STARTSWITH, , ENDSWITHCONTAINS
Outras funções COALESCE, NULLIF, IFNULL, NVL, ABS, , MOD, ISNULL, , ISNOTNULL, NAMED_STRUCT, TO_VARIANT_OBJECT

Sem suporte:ai_query, subconsultas, BETWEENfunções de agregação, lambdas/ EXISTSe variadic CONCAT ou COALESCE.