サービス ポリシー関数リファレンス

Important

この機能は ベータ版です。 アカウント管理者は、アカウント コンソール の [プレビュー ] ページからこの機能へのアクセスを制御できます。 Manage Azure Databricks プレビューを参照してください。

カスタム サービス ポリシーは、Unity カタログに登録されている SQL ユーザー定義関数 (UDF) であり、アタッチされているサービスとの各対話で評価Azure Databricks。 このページは、これらの関数のフィールドと構文のリファレンスです。 エンドツーエンドの手順については、「 サービス ポリシーの作成とアタッチ」を参照してください。

関数のシグネチャ

サービス ポリシー関数は、単一の eventVARIANT パラメーターを受け取り、 VARIANTを返します。

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

この関数は両方の評価ポイントで実行されます。 event:type::string上で分岐して、それらを区別します。

  • 'request'サービスが呼び出される前に入力フェーズ(ON CALL)を経ます。
  • 'response':サービスが応答した後の 出力 位相(ON RESULT)です。

event引数

event には、対話データとコンテキストが含まれます。 使用可能なフィールドは、サービスの種類によって異なります。

フィールド 適用対象 説明
event:type すべてのサービス 位相: 'request' (入力、オンコール)または 'response' (出力、オン・リザルト)。
event:target すべてのサービス ポリシーがアタッチされているサービスの Unity カタログの完全な名前 (省略可能)。
event:context.actor.run_as すべてのサービス 要求が承認する実行 ID。
event:context.actor.context.is_on_behalf_of すべてのサービス true エージェントまたはアプリがユーザーに代わって動作している場合 (On-behalf-of、または OBO)。 これを使用して、エージェントがユーザーに対して機能する場合にのみ適用されるエージェント対応ポリシーを記述します。
event:context.actor.context.client_id すべてのサービス 動作する ID の OAuth クライアント ID (存在する場合 ) (OBO 呼び出し)。
event:context.actor.context.actor_resource すべてのサービス エージェントなどの動作 ID のリソース (存在する場合)。
event:context.actor.context.is_actor_authenticated すべてのサービス true 機能する ID が機密クライアントとして認証された場合。
event:context.tool.nameevent:context.tool.arguments MCP サービス 呼び出されるツールとその引数 ( event:context.tool.arguments.repoなど)。
event:context.message モデル サービス、モデル プロバイダー サービス 抽出された最後のユーザーまたはアシスタント メッセージ (API に依存しない)。 これはコンテンツ チェックに使用します。
event:data モデル サービス、モデル プロバイダー サービス 要求または応答の完全なペイロード。
event:request_data モデル サービス、モデル プロバイダー サービス 出力フェーズ中に利用可能な元のリクエスト(ON RESULT)です。

Note

パス アクセス (event:...) は、 VARIANTを返します。 リテラル (たとえば、 event:type::string = 'request') と比較する前にスカラー型にキャストします。それ以外の場合、比較は DATATYPE_MISMATCH エラーで失敗します。

値を返す

カスタム ポリシーは意思決定ポリシーです。VARIANTresult、またはALLOW (大文字と小文字を区別しない) のDENY フィールドとオプションのASKを持つreasonを返します。 result値は、何が起こるかを決定します。

  • ALLOW: 操作が続行されます。
  • DENY: Azure Databricksは相互作用をブロックします。 エラーの代わりに、呼び出し元は成功裏に(HTTP 200)応答を受け取り、そのアシスタントターンがブロックを報告し、 reason はトップレベルの databricks_service_policy オブジェクトに含まれています。
  • ASK: 操作は、続行する前に人間の承認のために一時停止します。

named_structを使用して結果をビルドし、to_variant_objectでラップして、VARIANTresultを最上位フィールドとして保持して、関数がreasonを返すようにします。 ベア named_structSTRUCTを返し、 CAST(... AS VARIANT) はサポートされていません。

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

ゲートウェイは、次の封筒形式も受け入れます。

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

Note

フィールド アクセスの失敗: VARIANT パラメーターに存在しないフィールドにアクセスすると、エラーが発生し、 DENY が発生します (標準の SQL VARIANT アクセスでは、フィールドが見つからない場合は NULL が返されます)。 これにより、予期されるフィールドがない場合に、ポリシーで対話が許可されなくなります。

サポートされている SQL

Azure Databricks、ポリシー本体を CEL にトランスパイルし、実行時に評価するため、関数本体は SQL の制限されたサブセットのみをサポートします。 Azure Databricksは、ポリシーをアタッチするときにサポートされていない関数またはコンストラクトを拒否し、評価時にポリシーが閉じられ (DENY) 失敗します。

Category ポリシー本文でサポートされます
Operators 比較演算子、論理演算子、および算術演算子。 \|\|INLIKE、および IS [NOT] NULL
制御フロー CASE および IF
キャスト CAST INT演算子を/BIGINTDOUBLE、/FLOATSTRINGBOOLEAN、または::する場合
データアクセス VARIANT/JSON パス アクセス
文字列関数 CONCATLENGTHCHAR_LENGTHUPPERLOWERSUBSTRINGTRIMLTRIMRTRIMREPLACESTARTSWITHENDSWITHCONTAINS
その他の関数 COALESCENULLIFIFNULLNVLABSMODISNULLISNOTNULLNAMED_STRUCTTO_VARIANT_OBJECT

サポートされていません:ai_query、サブクエリ、 BETWEEN、集計関数、ラムダ/ EXISTS、可変 CONCAT または COALESCE