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

外部サービスポリシーによるパートナーガードレールの適用

備考

ベータ版

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

外部サービスポリシーは、Unity Gateway を経由するトラフィックに対して、AI セキュリティやデータ損失防止サービスなど、すでに使用しているガードレールベンダーの決定を適用します。管理されたすべての呼び出しにおいて、Databricks は評価対象のコンテンツをベンダーの Endpoint に送信します。ベンダーが許可または拒否を返し、Databricks はアプリケーションを変更することなくその決定を強制します。

サービスポリシー をアタッチするのと同じ方法で、外部サービスポリシーを モデルサービス 、 モデルプロバイダーサービス 、または MCP サービス にアタッチします。

外部サービスのポリシーの仕組み​

外部サービスポリシーは3つのパーツで構成されています:

  • Unity Catalog HTTP接続 は、ベンダーのEndpointのURLとそのOAuth認証情報を格納します。複数のポリシーで1つの接続を共有できます。
  • 外部サービスポリシー はサービスにアタッチされます。接続に名前を付け、フェーズ、ランク、モード、およびオプションのポリシー構成を設定します。Databricksは各リクエストに対してそれをランし、結果を強制します。
  • ベンダーのガードレール により、コンテンツが検査され、理由(オプション)とともに判定(ALLOWまたはDENY)が返されます。

ベンダーは Databricks 外部ポリシー API を実装する必要があります。これにより、Databricks が送信するリクエストと、それに対して期待される判定が定義されます。対応しているかどうか、およびEndpointの詳細についてベンダーにお問い合わせください。Databricks は、個々のベンダー向けの統合を構築または保守しません。

始める前に​

必要なもの:

  • Databricks外部ポリシーAPIを実装する ガードレールベンダーのEndpoint 。
  • その Endpoint の OAuth マシン間 (M2M) 認証情報 : クライアント ID、クライアント シークレット、ベンダーのトークン エンドポイント URL。OAuth M2M は、サポートされている唯一の認証方法です。API キー、基本認証、およびユーザー間 OAuth はサポートされていません。
  • 接続を作成するための権限 :CREATE CONNECTION特権、および接続が格納されているカタログとスキーマに対するUSE CATALOGおよびUSE SCHEMA特権。
  • ポリシーをアタッチするための権限 :ガバナンスを適用するサービスで MANAGE、接続で USE CONNECTION、接続のカタログおよびスキーマで USE CATALOG および USE SCHEMA。

2 つの権限セットは、異なるユーザーに属している場合があります。ポリシーをアタッチする人物が CREATE CONNECTION を持っていない場合は、ベンダーの認証情報を管理する人物が事前に接続を作成し、USE CONNECTION を付与することができます。

ステップ 1: ベンダーへの接続を作成する​

接続は、ベンダーのEndpointと認証情報を格納するUnity Catalogオブジェクトです。次の2つの方法のいずれかで作成できます:

  • ポリシーの添付中 に、ポリシーフォームで [新しい接続の作成] を選択します。これは、単一のガードレールに対して最も迅速なオプションです。
  • 事前 : カタログ エクスプローラーまたは CREATE CONNECTION を使用して OAuth マシン間 (M2M) 認証を持つ HTTP 接続を作成し、ポリシー フォームで [既存の接続を使用] を選択します。複数のポリシーで 1 つのエンドポイントを共有する場合や、別のチームがベンダーの認証情報を管理している場合に、このオプションを使用します。外部サービスへの接続の作成を参照してください。

ポリシーフォームから接続を作成する場合は、以下を入力します。

フィールド

説明

接続名

Unity Catalog 接続の名前(例:external_guardrail)。

[カタログ] と [スキーマ]

接続が Unity Catalog 内に保存される場所。

ホスト

スキームを含むベンダーのホスト(例: https://api.example.com)。

API パス (オプション)

そのホスト上のパス(例:/ai-security/v1)。

認証タイプ

常に OAuth M2M を使用します。このフィールドは変更できません。

クライアント ID と クライアント シークレット

ベンダーが発行したサービスアカウントの認証情報。

トークンのエンドポイント

ベンダーのOAuthトークンURL(例:https://api.example.com/oidc/v1/token)。

OAuthスコープ (オプション)

ベンダーが必要とする場合は、guardrail.read guardrail.scan などのスペース区切りのスコープ。

フィールド

説明

接続名

Unity Catalog 接続の名前(例:external_guardrail)。

[カタログ] と [スキーマ]

接続が Unity Catalog 内に保存される場所。

ホスト

スキームを含むベンダーのホスト(例: https://api.example.com)。

API パス (オプション)

そのホスト上のパス(例:/ai-security/v1)。

認証タイプ

常に OAuth M2M を使用します。このフィールドは変更できません。

クライアント ID と クライアント シークレット

ベンダーが発行したサービスアカウントの認証情報。

トークンのエンドポイント

ベンダーのOAuthトークンURL(例:https://api.example.com/oidc/v1/token)。

OAuthスコープ (オプション)

ベンダーが必要とする場合は、guardrail.read guardrail.scan などのスペース区切りのスコープ。

通常、ベンダーは1つのEndpointから多くのポリシーを提供し、ステップ2で設定したポリシー設定を使用してそれらを区別します。通常、ポリシーごとではなく、ベンダーのEndpointごとに1つの接続を作成します。

ステップ2:外部サービスポリシーをアタッチする​

  1. ワークスペースのサイドバーで、[ AI Gateway ] をクリックします。

  2. 管理するサービスを選択します。 [Models] tabのモデルサービス、 [Providers] tabのモデルプロバイダーサービス、または [MCPs] tabのMCPサービスのいずれかを選択します。

  3. [ ポリシー ] タブ を開き、[ 新しいポリシー ] をクリックします。

  4. ポリシーの Name を入力します。

  5. ガードレールタイプ で、 外部 を選択します。

  6. サービスの他のポリシーに対する相対的な評価順序を制御するには、 ランク を設定します。最も低いランクがリクエスト時に最初にランし、レスポンス時に最後に実行されます。また、DENY はそれ以降のすべてのランクを停止します。同じランクでは、ブロックする LLM-as-a-judge ポリシーの DENY のみがベンダーの呼び出しをスキップします。カスタム SQL ポリシーまたは同じランクの別の順次ポリシーの DENY ではスキップされないため、ベンダーは引き続きコンテンツを受信します。ポリシーが拒否したときにベンダーの呼び出しをスキップするには、外部サービスポリシーのランクよりも前に評価されるランクに設定します。評価順序を参照してください。

  7. [フェーズ] で、 [入力ガードレール] (サービスの呼び出し前)、 [出力ガードレール] (応答後)、またはその両方を選択します。ベンダーがリクエストのみを検査する場合は、入力のみを選択してください。各フェーズはベンダーへの個別の呼び出しとなるため、両方のフェーズを選択すると呼び出しの数がほぼ 2 倍になります。

  8. 接続を選択します。 [既存の接続を使用] を選択してリストから選択するか、 [新しい接続を作成] を選択して ステップ 1 のフィールドを入力します。

  9. (オプション) ポリシー設定(Policy configuration) で、{"profile": "strict"}などのJSONオブジェクトを入力します。Databricksはこの値を読み取りません。入力したとおりの正確なテキストが、リクエストごとにベンダーに送信されます。ベンダーのドキュメントには、受け入れられるキーが記載されています。ベンダーが必要としない場合は、空のままにします。

  10. Advanced options を展開し、 Mode を選択します。

    • [強制] はベンダーの決定を適用します。DENY が呼び出しをブロックします。
    • Log はポリシーを評価し、何もブロックせずに想定される判定結果を記録します。結果を unified trace table で確認します。ここでは、各評価が policy_evaluated イベントであり、想定される判定結果が policy.dry_run_action および policy.dry_run_reason に含まれています。ポリシー評価イベントを参照してください。サービスに inference table がある場合、結果はそこに記録されます。
  11. 「 ポリシーの作成 」をクリックします。

Databricksでは、 Log モードから開始することを推奨しています。ポリシーに実際のトラフィックを流し、ブロックされる内容を確認してから、 Enforce に切り替えます。

注記

ログモードでは呼び出しがブロックされませんが、すべての評価によってベンダーへの呼び出しが引き続き行われ、ベンダー契約に含まれるクォータまたは呼び出しごとの料金が消費されます。課金対象の評価を確認できるように、起動する前に、統合トレーステーブルまたはサービス上の推論テーブルを設定してください。

ステップ 3: ポリシーをテストする​

ポリシーをアタッチまたは変更した後は、変更が伝播するまでしばらく時間を置いてからテストしてください。伝播には通常 60~90 秒かかります。

次に、ベンダーのガードレールが検知するはずのリクエストを送信します。 Enforce モードでは、Databricks は呼び出しをブロックし、他のブロック用サービスポリシーと同様に、databricks_service_policy オブジェクトを含む成功(HTTP 200)応答を返します。ポリシーの決定を参照してください。ブロック reason はベンダーの説明です。ベンダーが何も返さない場合、呼び出し元には次のdefaultの理由が表示されます。

アクセス拒否:このリクエストは、このサービスのポリシーによって許可されていません。

Databricks がベンダーに送信するデータ​

評価ごとに、Databricks は、評価対象のコンテンツ、管理対象サービスの名称、および設定したポリシー構成をベンダーに送信します。コンテンツは、サービスとフェーズによって異なります。

サービス

フェーズ

コンテンツが送信されました

MCP サービス

入力

ツール名とその引数。

MCP サービス

出力

元のツール呼び出しと共に出力されるツール結果。

モデル サービスまたはモデル プロバイダー サービス

入力

メッセージなどの完全なモデルリクエストボディ。

モデル サービスまたはモデル プロバイダー サービス

出力

元のリクエストとともに、完全なモデル応答本文。

サービス

フェーズ

コンテンツが送信されました

MCP サービス

入力

ツール名とその引数。

MCP サービス

出力

元のツール呼び出しと共に出力されるツール結果。

モデル サービスまたはモデル プロバイダー サービス

入力

メッセージなどの完全なモデルリクエストボディ。

モデル サービスまたはモデル プロバイダー サービス

出力

元のリクエストとともに、完全なモデル応答本文。

モデルのリクエストおよびレスポンスの本文は、呼び出し元が使用した API 形式(OpenAI Chat Completions、OpenAI Responses、Anthropic Messages、Gemini など)で送信されます。Databricks はそれらを共通の形式に変換しません。

Databricksは、呼び出し元のIDではなく、ベンダーコンテンツのみを送信します。リクエストにトレースがある場合、DatabricksはそのトレースIDも送信するため、ベンダーの Logs 内の評価をリクエストと照合できます。

ポリシーをアタッチする前にネットワークエグレスを確認する​

外部サービスポリシーは、評価対象のコンテンツ (未加工のモデルの要求と応答、またはMCPツールの引数と結果などを含むことができます) をサードパーティのサービスに送信します。ポリシーをアタッチする前に、ベンダーのデータ処理プラクティスを確認し、接続のターゲットを確認してください。

Unity Catalog接続は、資格情報と接続構成を管理します。到達可能なネットワークの宛先は制限されません。外部サービスポリシーには制限付きネットワークポリシーが必要ないため、ワークスペースにネットワークポリシーがない場合、アウトバウンドアクセスは制限されず、ポリシーは構成済みの接続を通じて到達可能な任意のEndpointに評価済みコンテンツを送信できます。

Databricks では、承認されたポリシーサービスの送信先のみを許可する、アクセス制限された ネットワークポリシーの適用を推奨しています。接続とネットワークポリシーおよびServerlessエグレス制御のためのネットワークポリシーの管理を参照してください。

フェイルクローズドの動作​

外部サービス ポリシーは失敗してクローズします。ベンダーの Endpoint がタイムアウトになった場合、エラーを返した場合、Databricks が解析できない応答を返した場合、または ALLOW や DENY 以外の判定を返した場合、Databricks は呼び出しを拒否します。ベンダーが利用できない場合にトラフィックを通過させる外部サービス ポリシーを構成することはできません。

Enforce モードでは、ベンダーの可用性とレイテンシーが、制御対象となるすべてのコールのクリティカルパスに置かれます。

  • ポリシーを適用する前に、ベンダーのレイテンシーと可用性を確認してください。Databricks は応答を約 5 秒間待ちます。応答が遅い場合は拒否されます。
  • ログモードではEndpointの問題はマスクされません。障害が発生しているEndpointでも DENY の結果が記録されるため、ログモードで予期しない拒否が多数発生する場合は、エンフォースに切り替える前にEndpointを修正するサインです。

制限事項​

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

  • 許可および拒否のみ :外部サービスポリシーは ALLOW または DENY を返します。これらは人間の承認のための呼び出しを保持できず(ASK)、コンテンツの墨消しや書き換えを行うことはできません。
  • 一度に 1 つのサービス :ポリシーは単一のサービスにアタッチします。複数のサービスに一度に 1 つのポリシーをアタッチすることはできません。
  • UIのみ :外部サービスポリシーの添付は、Unity Gateway UIを介して行います。REST API または Terraform を介した添付は利用できません。
  • OAuth M2M のみ : 接続には OAuth マシン間(M2M)認証を使用する必要があります。
  • ベンダーサポートが必要です :ベンダーは Databricks 外部ポリシー API を実装する必要があります。Databricks はベンダーごとのアダプターを提供していません。

トラブルシューティング​

症状

考えられる原因

ポリシーをアタッチした直後は、ポリシーの効果はありません。

伝播ウィンドウ内でテストを実行しました。通常、これには 60~90 秒かかります。しばらく待ってから、もう一度お試しください。

すべての呼び出しが拒否されます。

Endpointにアクセスできない、エラーが返される、またはタイムアウトが発生するため、ポリシーはフェイルクローズになります。接続のホスト、パス、認証情報を確認し、ベンダーに問い合わせてEndpointの稼働状態を確認してください。

すべての呼び出しが拒否され、結果が認識されないという理由が返されます。

ベンダーが ALLOW または DENY 以外の判定を返しました。ベンダーにお問い合わせください。

拒否された呼び出しには、ベンダーのものではなくdefaultの理由が表示されます。

ベンダーから理由が返されなかったため、Databricksにはdefaultのテキストが表示されます。

Log モードには結果が表示されません。

サービス上の統合トレーステーブルも推論テーブルも設定されていないため、Log モードの結果はクエリー可能などこにも記録されません。このポリシーは引き続きベンダーを呼び出します。

接続は保存されますが、呼び出しは失敗します。

資格情報またはトークンの Endpoint が間違っています。クライアント ID、クライアント シークレット、トークンの Endpoint、および必要なスコープをベンダーに確認してください。

症状

考えられる原因

ポリシーをアタッチした直後は、ポリシーの効果はありません。

伝播ウィンドウ内でテストを実行しました。通常、これには 60~90 秒かかります。しばらく待ってから、もう一度お試しください。

すべての呼び出しが拒否されます。

Endpointにアクセスできない、エラーが返される、またはタイムアウトが発生するため、ポリシーはフェイルクローズになります。接続のホスト、パス、認証情報を確認し、ベンダーに問い合わせてEndpointの稼働状態を確認してください。

すべての呼び出しが拒否され、結果が認識されないという理由が返されます。

ベンダーが ALLOW または DENY 以外の判定を返しました。ベンダーにお問い合わせください。

拒否された呼び出しには、ベンダーのものではなくdefaultの理由が表示されます。

ベンダーから理由が返されなかったため、Databricksにはdefaultのテキストが表示されます。

Log モードには結果が表示されません。

サービス上の統合トレーステーブルも推論テーブルも設定されていないため、Log モードの結果はクエリー可能などこにも記録されません。このポリシーは引き続きベンダーを呼び出します。

接続は保存されますが、呼び出しは失敗します。

資格情報またはトークンの Endpoint が間違っています。クライアント ID、クライアント シークレット、トークンの Endpoint、および必要なスコープをベンダーに確認してください。

次のステップ​