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.name、event: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 エラーで失敗します。
値を返す
カスタム ポリシーは意思決定ポリシーです。VARIANT、result、またはALLOW (大文字と小文字を区別しない) のDENY フィールドとオプションのASKを持つreasonを返します。
result値は、何が起こるかを決定します。
-
ALLOW: 操作が続行されます。 -
DENY: Azure Databricksは相互作用をブロックします。 エラーの代わりに、呼び出し元は成功裏に(HTTP 200)応答を受け取り、そのアシスタントターンがブロックを報告し、reasonはトップレベルのdatabricks_service_policyオブジェクトに含まれています。 -
ASK: 操作は、続行する前に人間の承認のために一時停止します。
named_structを使用して結果をビルドし、to_variant_objectでラップして、VARIANTと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', '...')))
Note
フィールド アクセスの失敗: VARIANT パラメーターに存在しないフィールドにアクセスすると、エラーが発生し、 DENY が発生します (標準の SQL VARIANT アクセスでは、フィールドが見つからない場合は NULL が返されます)。 これにより、予期されるフィールドがない場合に、ポリシーで対話が許可されなくなります。
サポートされている SQL
Azure Databricks、ポリシー本体を CEL にトランスパイルし、実行時に評価するため、関数本体は SQL の制限されたサブセットのみをサポートします。 Azure Databricksは、ポリシーをアタッチするときにサポートされていない関数またはコンストラクトを拒否し、評価時にポリシーが閉じられ (DENY) 失敗します。
| Category | ポリシー本文でサポートされます |
|---|---|
| Operators | 比較演算子、論理演算子、および算術演算子。 \|\|、 IN、 LIKE、および IS [NOT] NULL |
| 制御フロー |
CASE および IF |
| キャスト |
CAST
INT演算子を/BIGINTDOUBLE、/FLOATSTRING、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。