AIセキュリティ保護対象のサービスポリシー
ベータ版
この機能はベータ版です。アカウント管理者は、アカウント コンソールの [プレビュー] ページからこの機能へのアクセスを制御できます。 Databricksのプレビューを管理するを参照してください。
サービスポリシーにより、Unity Catalogに登録されたAIサービスとのやり取りのコンテンツ(Databricksがホストするものだけでなく、 外部 のMCPサーバーやあらゆるプロバイダーのモデルを含む)を管理できます。Unity Catalogの付与は、プリンシパルがサービスを呼び出すことが できるかどうか を決定します。サービスポリシーは、リクエストと応答のコンテンツ、および呼び出しを行っているユーザーに基づいて、そのやり取りが どのように 進むかを管理します。
サービス ポリシーは、AI サービスのガードレールを実装するために使用するメカニズムです。PIIのブロック、プロンプトインジェクション、または安全でないコンテンツなどのガードレールを追加する場合は、サービスポリシーがそのメカニズムです: Databricksには一般的なリスクに対する組み込みのガードレールがあり、組織固有のルールについてはカスタムポリシーを作成できます。
これは、エージェントがユーザーに代わって行動する場合に特に重要です。エージェントは、ユーザーがアクセスできるすべてを継承し、サービスは多くの場合、外部システムにアクセスします。サービスポリシーを使用すると、そのアクティビティにガードレールを設定できます。例えば、エージェントがGitリポジトリにコードをプッシュする前にユーザーの同意を求めたり、個人を特定できる情報 (PII) を含むモデル応答を拒否したり、安全でないコンテンツをブロックしたりすることができます。
サービスポリシーは、Unity Catalog における 3 種類の属性ベースのアクセス制御(ABAC)ポリシーの 1 つです。
- ABAC GRANT ポリシーは、管理タグが条件に一致するセキュリティ保護可能なオブジェクトに対して Unity Catalog の権限を付与します。これらは、プリンシパルがオブジェクトに到達できるかどうかを制御します。
- 行フィルターと列マスクのポリシーは、プリンシパルがテーブル内のどの行と列を表示できるかを制御します。
- サービスポリシーは、AI サービスに対する各リクエストとレスポンスのコンテンツを管理し、許可、拒否、または承認のために保留します。
ABAC GRANT ポリシーはアクセス制御であり、行フィルターおよび列マスクポリシーとサービスポリシーは、プリンシパルがアクセス権を取得した後の動作を管理する コンテンツ ポリシーです。行フィルターや列マスクと同様に、サービスポリシーはガバナンスロジックを含む Unity Catalog 関数を参照し、それをセキュリティ保護可能なオブジェクトにアタッチします。
サービスポリシーがUnity Catalogの付与を補完する方法
Unity Catalogの権限とサービスポリシーは、異なるガバナンスの課題に対応し、異なる適用ポイントで運用されます。
Unity Catalog の権限 | サービスポリシー | |
|---|---|---|
質問への回答 | このプリンシパルはこのサービスを呼び出すことができますか? | このインタラクションはどのように進行すべきですか? |
入力 | プリンシパルの識別情報と付与された権限 | リクエストコンテンツ、レスポンスコンテンツ、ツールアノテーション、アクターコンテキスト |
適用ポイント | リクエストがサービスに到達する前に | サービスが呼び出される前(入力フェーズ、ON CALL)およびサービスが応答した後(出力フェーズ、ON RESULT) |
粒度 | プリンシパルごと、セキュリティ保護可能なオブジェクトごと | リクエストごとに、コンテンツとコンテキストに基づいて |
サービスポリシーはUnity Catalogの権限を置き換えるものではありません。プリンシパルは、サービスを呼び出すためにまず適切なUnity Catalog権限を持っている必要があります。サービスポリシーは、各インタラクションのコンテンツを評価し、追加のガバナンスルールを適用します。
ポリシー決定
サービスポリシーはリクエストまたはレスポンスの内容を評価し、次の3つの結果のいずれかを返します。
- 許可 :インタラクションが進行します。
- DENY : ポリシーがインタラクションをブロックします。Databricksはエラー ステータスの代わりに、成功(HTTP 200)レスポンスを返します。アシスタントのターンにはブロックの原因となったサービスポリシーを示す短いメッセージが含まれ、最上位の
databricks_service_policyオブジェクトにはブロックreasonを含む構造化された詳細情報が含まれます。ブロックを通常のターンとして返すことで、コーディングエージェントのように履歴全体を再送信する会話型クライアントが、その後のすべてのターンで同じブロックを再Triggerすることを防ぎます。 - ASK :対話を進める前に、ポリシーは人間の承認のためにその対話を保留します。この承認ステップにより、機密性の高い操作に対するヒューマン・イン・ザ・ループのワークフローが可能になります。たとえば、管理者は破壊的なMCPツール呼び出しを実行する前に承認できます。MCPサービスを呼び出す外部エージェントの場合、この承認プロンプトはMCP URLエリシテーションを通じて配信されます。決定ポリシーの作成を参照してください。
ポリシーは、インタラクションイベント (アクターとリクエストまたはレスポンスのコンテンツを含む) を受信し、意思決定結果を返す SQL ユーザー定義関数 (UDF) です。
評価ポイント
Databricks は、すべてのインタラクションで 2 つの点でサービス ポリシーを評価します。
- 入力 (ON CALL): Databricks がサービスを呼び出す前、リクエストに対して。このフェーズを使用して、リクエストが基盤となるサービスに到達する前に検査します。例えば、破壊的な MCP ツールを呼び出すリクエストをブロックしたり、PII を含むプロンプトがモデルに到達する前に拒否したりします。
- 出力(ON RESULT):サービスが応答した後、その応答に対して実行されます。このフェーズを使用して、応答が呼び出し元に返される前に検査します。例えば、幻覚コンテンツや機密データを含むレスポンスをブロックします。
カスタムポリシー関数は、両方のポイントで実行されます。現在のフェーズ(event:type)を検査して動作を決定するため、単一のポリシーでリクエスト、レスポンス、またはその両方を管理できます。1 つのフェーズのみで動作させるには、関数本体で event:type に基づいて Branch します。組み込みポリシーは代わりに phases オプションでスコープが設定され、一部は 1 つのフェーズでのみ実行されます(例えば、ジェイルブレイク検出は入力フェーズでのみ実行され、幻覚検出は出力フェーズでのみ実行されます)。
評価順序
1 つのサービスに複数のサービスポリシーをアタッチできます。各アタッチメントには ランク (優先度)があり、チェーンは最初の DENY で停止します。Databricks は、 入力 フェーズ(ON CALL、ランクが低い順)ではランクの昇順で、 出力 フェーズ(ON RESULT)では逆順でポリシーを評価します。ランクを使用して、どのチェックを最初に実行するかを制御します。
ランク内の評価
Databricksは、同じランクのポリシーを2つのステージで評価します:
- LLM-as-a-judge のブロックポリシーは並行して実行されます。 これらは、安全でないコンテンツの検出など、(
DENY) コンテンツをブロックする組み込みのポリシーです。これらはモデルを基にしたチェックであるため、これらを同時に実行するということは、追加されるレイテンシーは最も遅い単一の評価とほぼ同じであり、合計ではありません。 - その後、残りの ポリシーは順番に実行されます が、最初のステージのすべての並列ポリシーが対話を許可した場合に限られます。このステージでは、カスタムSQLポリシーと、承認のために一時停止するポリシー(
ASK)について説明します。これらはアタッチされた順序で評価されます。
評価はどちらかの段階で最初の DENY でショートサーキットされるため、そのランク以降のポリシー、およびすべての高ランクのポリシーは実行されません。Databricksは低速なモデルベースのチェックを並列化するため、サービス上に複数のブロッキングガードレールを重ねてもレイテンシーが増加することはありません。
次の図は、2つのフェーズがサービスの周囲にどのように配置されているか、そして各決定が何をするかを示しています。

特定のサービスにアタッチされているポリシーとその実行順序を確認するには、サービスの[ ポリシー ]tabを開き、[ 実行フローを表示 ]をクリックします。
組み込みサービスポリシー
Databricks は、system.ai 名前空間の下で組み込みのサービスポリシーを提供します。これらは、カスタム SQL を使用せずに一般的なガバナンスシナリオをカバーします。Databricks AI ガードレール は、組み込みのサービスポリシーです。これは、カスタムポリシーと同じ方法でアタッチできる、事前構成済みの Databricks 管理ポリシー(安全でないコンテンツやジェイルブレイクの検出など)です。
system.ai.block_unsafe_content: 安全でない、または有害なコンテンツを含むインタラクションを拒否します。system.ai.block_jailbreakモデルの安全指示を回避しようとするリクエストを拒否します。system.ai.block_hallucination:ハルシネーションを含む応答を拒否します。system.ai.detect_sensitive_data:構造化された機密データ(クレジットカード番号や社会保障番号など)を検出し、インタラクションをブロックするか、一致した値を編集(redact)します。他とは異なり、これは決定論的(パターンベースであり、評価器モデルを使用しない)であり、ブロックするだけでなく編集(redact)も可能です。サービスポリシーによる機密データの検出を参照してください。
組み込みポリシーを使用するには、それをサービスにアタッチします。ターゲットサービス上でMANAGEが必要です。
ベータ期間中、組み込みポリシーは Databricks によって管理されており、カタログエクスプローラーの system.ai スキーマで参照できる関数としては表示されません。「サービスポリシーの作成とアタッチ」で説明されているように、Unity AI Gateway UI を通じて名前で選択し、アタッチします。
組み込みサービス ポリシーの仕組み
組み込みサービスポリシーはLLM-as-a-judgeチェックであり、それぞれがDatabricksがキュレートするプロンプトを評価者モデルに対して実行し、コンテンツがポリシーに違反するかどうかを判断します。

評価者モデルサービス
各組み込みサービスポリシーは、コンテンツを判断するモデルである**評価器モデルサービス**でプロンプトを実行します。Databricksはdefaultの評価器を事前に選択するため、セットアップは不要です。CAN QUERY別のモデルを使用するには、ポリシーをアタッチするときに**詳細オプション**を展開して選択します。選択したモデルには が必要です。評価器は保護対象のサービスとは別であるため、ポリシーは別のモデルを評価器として使用して、あるモデルサービスへのリクエストを評価できます。
Databricksは、読み取り専用であるポリシーのプロンプトを管理しています。評価者が適用する正確な基準を確認するには、ポリシーをアタッチした際に プロンプト の下でご覧いただけます。
評価器が受け取るもの
組み込みサービスポリシーが実行されると、Databricksは評価器に2つの部分からなるリクエストを送信します:機会
- ポリシープロンプトと出力コントラクト(次のセクションで説明)を含む システムメッセージ 。
- 評価対象のコンテンツを含む ユーザーメッセージ :入力の場合はモデルサービス上の最後のユーザーメッセージまたはMCPサービス上のツール呼び出しとその引数、出力の場合はモデルの返信。
評価器はその抽出された単一の項目のみを参照します。保護されたサービスのシステムプロンプトや、画像および音声コンテンツは参照されません。defaultで、各評価は1つのメッセージに限定されるため、組み込みのサービスポリシーでは、会話全体にわたる段階的なエスカレーションなど、複数のメッセージにまたがるパターンを検出できません。
モデルおよびモデルプロバイダーサービスでの入力評価については、このウィンドウを拡大できます。ポリシーをアタッチする際、評価器が受け取る直近の会話のやり取りの数を設定します。これにより、評価器は最新のメッセージだけでなく、その範囲のやり取りを参照できるようになります。これは入力のみに適用され、MCPサービスでは利用できません。
出力コントラクト
DatabricksはポリシープロンプトにJSON出力コントラクトを自動的に追加するため、評価者はフリーテキストではなく構造化された決定を返します。評価者は以下を返します。
flagged(Boolean):コンテンツがポリシーの基準に違反している場合はtrue。confidence(浮動小数点数、0.0~1.0、オプション):評価器がその決定に抱く信頼度。reason(文字列):コンテンツにフラグが立てられた理由の短い説明。flaggedがtrueの場合に返されます。
評価者がflagged: trueを返した場合、Databricksはdefaultでそのインタラクションをブロックします。MCPサービスにおいて、承認を求めるように構成されたポリシーは、ツールがランする前に人間による承認のためにリクエストを一時停止します。Databricksが契約を自動的に適用するため、組み込みのサービスポリシーにはフェーズとランク以外の構成は必要ありません。
評価コスト
Databricksは、組み込みのサービスポリシーに対して別途料金を請求しません。各評価は、評価モデルサービスへの他の呼び出しと同様に課金されるため、コストはそのモデルが提供される方法によって異なります。各評価で課金されるトークンには、ポリシープロンプト、出力コントラクト、抽出されたメッセージ、および評価者の応答が含まれます。オーバーヘッドを制限するため、フェーズあたりのポリシー数を少なく保ち、低レイテンシの評価モデルを推奨します。
サポートされているサービス
ベータ期間中、以下の Unity Catalog サービス セキュリティ保護可能なオブジェクトにサービス ポリシーをアタッチできます。
- MCPサービス:マネージド、外部、およびカスタムのMCPサーバー。
- モデルサービス:ホストされているLLMエンドポイントおよび外部LLMエンドポイント。
- モデルプロバイダーサービス:統制された外部モデルプロバイダー。
フェイルクローズド動作
サービスポリシーの評価はフェイルクローズドセマンティクスを使用します。Unity AI Gateway を介してポリシーをアタッチすると、Databricks はアタッチ時にそれを検証し、評価中にエラーが発生すると DENY になります。エラーには、ポリシー関数のユーザーエラー、システムエラー、リクエストコンテキスト内の不足しているフィールド、およびタイムアウトが含まれます。
誤って設定された、または破損したポリシーは、インタラクションを通過させるのではなくブロックします。
制限事項
ベータ版の期間中、以下の制限が適用されます:
- 変換 : サービスポリシーは決定(ALLOW、DENY、または ASK)を返しますが、ベータ期間中はリクエストや応答のコンテンツを変換しません。唯一の例外は組み込みの
system.ai.detect_sensitive_dataポリシーであり、これはモデルサービス上で一致した値を編集(redact)できます。 - サポートされているサービス : サービスポリシーは、MCPサービス、モデルサービス、モデルプロバイダーサービスに適用されます。エージェントサービスはサポートされていません。
- 単一メッセージ評価 :defaultでは、組み込みのサービスポリシーは一度に1つのメッセージを評価します。モデルサービスおよびモデルプロバイダーサービスでの入力評価では、ウィンドウを直近の会話のやり取りの数まで増やすことができます。出力評価およびMCPサービスは、単一メッセージのままです。組み込みサービスポリシーの仕組みをご覧ください。
- ネストされた評価:組み込みサービスポリシー用に選択した評価モデルサービスに独自のポリシーがアタッチされている場合、Databricksは評価の実行時にそれらをスキップします。これにより再帰が防止されます。