サービス ポリシー関数リファレンス
ベータ版
この機能はベータ版です。アカウント管理者は、アカウント コンソールの [プレビュー] ページからこの機能へのアクセスを制御できます。 Databricksのプレビューを管理するを参照してください。
カスタムサービスポリシーは、Unity Catalogに登録されたSQLユーザー定義関数 (UDF) であり、Databricksがそれがアタッチされているサービスとの各インタラクションで評価します。このページは、それらの関数のフィールドと構文リファレンスです。エンドツーエンドの手順については、サービスポリシーを作成してアタッチするを参照してください。
関数シグネチャ
サービスポリシー関数は単一のevent VARIANTパラメーターを受け取り、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 インタラクションデータとコンテキストを保持します。利用可能なフィールドはサービスタイプによって異なります。
フィールド | 適用対象 | 説明 |
|---|---|---|
| すべてのサービス | フェーズ: |
| すべてのサービス | ポリシーがアタッチされているサービスのUnity Catalog完全名 (オプション)。 |
| すべてのサービス | リクエストの認証に使用される実行 ID |
| すべてのサービス |
|
| すべてのサービス | アクティングIDのOAuthクライアントID(存在する場合、OBOコール時)。 |
| すべてのサービス | 存在する場合、エージェントなどのアクション実行アイデンティティのリソース。 |
| すべてのサービス |
|
| MCPサービス | 呼び出されているツールとその引数(例: |
| モデルサービス | 抽出された最後のユーザーまたはアシスタントメッセージ(API非依存)。コンテンツの確認にご利用ください。 |
| モデルサービス | リクエストまたはレスポンスのペイロード全体。 |
| モデルサービス | 元のリクエストは、ON RESULT中に利用可能です。 |
パスアクセス (event:...) は VARIANT を返します。スカラー型にキャストしてからリテラルと比較します (例えば、event:type::string = 'request')。そうしないと、比較は DATATYPE_MISMATCH エラーで失敗します。
戻り値
カスタムポリシーは決定ポリシーです。これは、ALLOW、DENY、またはASK (大文字と小文字を区別しません) の result フィールドと、オプションの reason を含む VARIANT を返します。result の値によって、何が起こるかが決まります。
ALLOW:対話が進行します。DENY: Databricksはインタラクションをブロックします。呼び出し元は、reasonを含む構造化エラーを受け取ります。ASK人間による承認が得られるまで一時停止します。
named_structで結果を構築し、関数がVARIANTを返すようにto_variant_objectでラップし、resultとreasonをトップレベルフィールドとして保持します。単純なnamed_structはSTRUCTを返しますが、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', '...')))
Fail-closedフィールドアクセス: パラメーターに存在しないフィールドにアクセスすると、エラーが発生し、VARIANT DENYになります(標準のSQLVARIANT NULLアクセスでは、フィールドがない場合に が返されます)。これにより、予期されたフィールドがない場合にポリシーがインタラクションを許可することを防ぎます。
サポートされている SQL
Databricks はポリシー本文を CEL に変換し、ランタイムで評価するため、関数本文は SQL の制限付きサブセットのみをサポートします。Databricks は、ポリシーをアタッチするときにサポートされない関数または構文を拒否し、評価時にポリシーは fail closed(DENY)になります。
カテゴリー | ポリシー本文でサポートされています |
|---|---|
演算子 | 比較演算子、論理演算子、および算術演算子、 |
コントロールフロー |
|
キャスト |
|
データアクセス | VARIANT / JSON パス アクセス |
文字列関数 |
|
その他の機能 |
|
サポートされていません: ai_query、サブクエリ、BETWEEN、集計関数、ラムダ / EXISTS、および可変長引数 CONCAT または COALESCE。