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

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

備考

ベータ版

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

カスタム SQL サービスポリシーは、Unity Catalog に登録された SQL ユーザー定義関数 (UDF) であり、Databricks はそれがアタッチされているサービスとのすべてのインタラクション時に評価します。This page is the field and syntax reference for those functions.For the end-to-end procedure, see Create a SQL ポリシー.

関数シグネチャ​

サービスポリシー関数は単一の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'(入力、ON CALL)または 'response'(出力、ON RESULT)。

event:target

すべてのサービス

ポリシーがアタッチされているサービスのUnity Catalog完全名 (オプション)。

event:context.request_tags

モデルサービス、モデルプロバイダーサービス、MCPサービス(tools/call)

呼び出し元が指定した文字列のキーと文字列の値を持つ JSON オブジェクト。リクエストタグを参照してください。

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

すべてのサービス

フェーズ: 'request'(入力、ON CALL)または 'response'(出力、ON RESULT)。

event:target

すべてのサービス

ポリシーがアタッチされているサービスのUnity Catalog完全名 (オプション)。

event:context.request_tags

モデルサービス、モデルプロバイダーサービス、MCPサービス(tools/call)

呼び出し元が指定した文字列のキーと文字列の値を持つ JSON オブジェクト。リクエストタグを参照してください。

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 エラーで失敗します。

タグのリクエスト​

カスタムポリシーによって、Databricks-Ai-Gateway-Request-Tagsヘッダーで送信されたタグを評価できます。

HTTP
Databricks-Ai-Gateway-Request-Tags: {"project":"p-1042"}

このサポートは、MCP tools/call を含め、サービスポリシーが実行されるパス上の Unity Gateway リクエストに適用されます。

タグはリクエストヘッダーから取得され、他のポリシーメタデータとともに event:context に表示されます。event:data および event:request_data には、ペイロード本体が含まれます。

event:context.request_tags は event VARIANT 内のオブジェクトであり、文字列のキーと文字列の値を持ち、論理的には MAP<STRING, STRING> です。event:context.request_tags.project::string を使用してタグを読み取ります。キーと値は、大文字と小文字、句読点、および空の文字列を保持します。ヘッダーのないリクエストには、空のオブジェクト({})が含まれます。両方の評価フェーズは、リクエスト変換、リトライ、モデルfallbackを含め、同じリクエストタグを受け取ります。

defaultでは、デコードされたキーと値の合計サイズは 10 KiB の UTF-8 データに制限されます。HTTP ヘッダーのサイズ制限も適用されます。SDK および REST の例については、リクエストのタグ付けを参照してください。

モデルサービスは、不正な形式またはサイズオーバーのタグヘッダーを拒否します。適用可能なサービスポリシーが設定された MCP tools/call リクエストの場合、ゲートウェイはポリシーを評価する前( Log モードを含む)にこれらのヘッダーも拒否します。

タグは呼び出し元から提供されるものであり、サービスタグや認証済みアクターのコンテキストとは別個のものです。タグ単体では、IDやプロジェクトを使用する権限は確立されません。これらの権限を確認する際は、信頼できるIDおよび認可データを使用してください。タグ値の確認例については、適格なプロジェクトの要件を参照してください。

次の制限が適用されます:

  • リクエストタグは、外部ポリシー プロバイダーに送信されるイベントに含まれないか、LLM-as-a-judgeのプロンプトに自動的に追加されません。
  • MCPの ASK 承認ではリクエストのタグが区別されず、承認プロンプトにも表示されません。タグが異なっていても、それ以外が一致する呼び出しに対して承認を再利用できます。タグベースの適用には ALLOW および DENY の決定を使用します。これらの決定は、各リクエストに対して評価されます。

戻り値​

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

  • ALLOW:対話が進行します。
  • DENY:Databricksがインタラクションをブロックします。エラーの代わりに、呼び出し元は成功(HTTP 200)レスポンスを受け取ります。このレスポンスのアシスタントターンはブロックを報告し、最上位のdatabricks_service_policyオブジェクト内にreasonが含まれます。
  • ASK:MCPサービスでは、ツールのラン前にユーザーの承認を得るためにリクエストが停止する。カスタムSQLまたはPythonのポリシーがモデルサービスまたはモデルプロバイダーサービスに対して ASK を返す場合、これらのサービスはユーザーに承認を求めることができないため、Databricksはリクエストまたはレスポンスをブロックします。

named_structで結果を構築し、関数がVARIANTを返すようにto_variant_objectでラップし、resultとreasonをトップレベルフィールドとして保持します。単純なnamed_structはSTRUCTを返しますが、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)になります。

カテゴリー

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

演算子

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

コントロールフロー

CASE そして IF

キャスト

CAST INT/BIGINT、DOUBLE/FLOAT、STRING、またはBOOLEANへ;::演算子

データアクセス

VARIANT / JSON パス アクセス

文字列関数

CONCAT、LENGTH、CHAR_LENGTH、UPPER、LOWER、SUBSTRING、TRIM、LTRIM、RTRIM、REPLACE、STARTSWITH、ENDSWITH、 CONTAINS

その他の機能

COALESCE、NULLIF、IFNULL、NVL、ABS、MOD、ISNULL、ISNOTNULL、NAMED_STRUCT、 TO_VARIANT_OBJECT

カテゴリー

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

演算子

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

コントロールフロー

CASE そして IF

キャスト

CAST INT/BIGINT、DOUBLE/FLOAT、STRING、またはBOOLEANへ;::演算子

データアクセス

VARIANT / JSON パス アクセス

文字列関数

CONCAT、LENGTH、CHAR_LENGTH、UPPER、LOWER、SUBSTRING、TRIM、LTRIM、RTRIM、REPLACE、STARTSWITH、ENDSWITH、 CONTAINS

その他の機能

COALESCE、NULLIF、IFNULL、NVL、ABS、MOD、ISNULL、ISNOTNULL、NAMED_STRUCT、 TO_VARIANT_OBJECT

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

関連​