メインコンテンツまでスキップ

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

備考

ベータ版

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

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

関数シグネチャ

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

SQL
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 Catalog完全名 (オプション)。

event:context.actor.run_as

すべてのサービス

リクエストの認証に使用される実行 ID

event:context.actor.context.is_on_behalf_of

すべてのサービス

true エージェントまたはアプリがユーザーに代わって行動している場合(オン・ビハーフ・オブ、またはOBO)。これを使用して、エージェントがユーザーに代わって行動する場合にのみ適用される、エージェント対応のポリシーを作成します。

event:context.actor.context.client_id

すべてのサービス

アクティングIDのOAuthクライアントID(存在する場合、OBOコール時)。

event:context.actor.context.actor_resource

すべてのサービス

存在する場合、エージェントなどのアクション実行アイデンティティのリソース。

event:context.actor.context.is_actor_authenticated

すべてのサービス

true 実行中のIDが機密クライアントとして認証された場合。

event:context.tool.name, event:context.tool.arguments

MCPサービス

呼び出されているツールとその引数(例:event:context.tool.arguments.repo)。

event:context.message

モデルサービス

抽出された最後のユーザーまたはアシスタントメッセージ(API非依存)。コンテンツの確認にご利用ください。

event:data

モデルサービス

リクエストまたはレスポンスのペイロード全体。

event:request_data

モデルサービス

元のリクエストは、ON RESULT中に利用可能です。

注記

パスアクセス (event:...) は VARIANT を返します。スカラー型にキャストしてからリテラルと比較します (例えば、event:type::string = 'request')。そうしないと、比較は DATATYPE_MISMATCH エラーで失敗します。

戻り値

カスタムポリシーは決定ポリシーです。これは、ALLOWDENY、またはASK (大文字と小文字を区別しません) の result フィールドと、オプションの reason を含む VARIANT を返します。result の値によって、何が起こるかが決まります。

  • ALLOW:対話が進行します。
  • DENY: Databricksはインタラクションをブロックします。呼び出し元は、reasonを含む構造化エラーを受け取ります。
  • ASK人間による承認が得られるまで一時停止します。

named_structで結果を構築し、関数がVARIANTを返すようにto_variant_objectでラップし、resultreasonをトップレベルフィールドとして保持します。単純なnamed_structSTRUCTを返しますが、CAST(... AS VARIANT)はサポートされていません。

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

ゲートウェイは、将来を見据えたエンベロープ形式も受け入れます。

SQL
to_variant_object(named_struct('decision', named_struct('result', 'DENY', 'reason', '...')))
注記

Fail-closedフィールドアクセス: パラメーターに存在しないフィールドにアクセスすると、エラーが発生し、VARIANT DENYになります(標準のSQLVARIANT NULLアクセスでは、フィールドがない場合に が返されます)。これにより、予期されたフィールドがない場合にポリシーがインタラクションを許可することを防ぎます。

サポートされている SQL

Databricks はポリシー本文を CEL に変換し、ランタイムで評価するため、関数本文は SQL の制限付きサブセットのみをサポートします。Databricks は、ポリシーをアタッチするときにサポートされない関数または構文を拒否し、評価時にポリシーは fail closed(DENY)になります。

カテゴリー

ポリシー本文でサポートされています

演算子

比較演算子、論理演算子、および算術演算子、||INLIKE IS [NOT] NULL

コントロールフロー

CASE そして IF

キャスト

CAST INT/BIGINTDOUBLE/FLOATSTRING、またはBOOLEANへ;::演算子

データアクセス

VARIANT / JSON パス アクセス

文字列関数

CONCATLENGTHCHAR_LENGTHUPPERLOWERSUBSTRINGTRIMLTRIMRTRIMREPLACESTARTSWITHENDSWITHCONTAINS

その他の機能

COALESCENULLIFIFNULLNVLABSMODISNULLISNOTNULLNAMED_STRUCTTO_VARIANT_OBJECT

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

関連