チュートリアル: GRANT ポリシーを使用してモデルへのアクセスを管理する
system.ai スキーマ内のモデル、モデルサービス、モデルプロバイダーサービス、およびMCPサービスへのアクセスを管理するには、ABAC GRANTポリシーを使用します。すべてのオブジェクトに対して直接GRANTを維持する代わりに、サポートされているセキュリティ保護可能なタイプごとにポリシーを1つ作成し、管理タグによってアセットを照合します。
このチュートリアルを完了すると、以下のことができるようになります:
- 管理タグを使用して、モデル、モデルサービス、モデルプロバイダーサービス、およびMCPサービスへのアクセスを動的に許可します。
- 選択したモデルファミリーへのアクセスを削除する一方で、他のタグ付けされたモデルやモデルサービス、および承認済みのモデルプロバイダーサービスとMCPサービスは引き続き利用できるようにします。
このウォークスルーでは、Databricks が system.ai 内のモデルおよびモデルサービスに適用する ai.model_family システムタグを使用します。モデルプロバイダーサービスおよびMCPサービスの場合、ユーザー定義の管理タグ access_status = approved が使用されます。
GRANTポリシーは、Unity Catalogの関数をサポートしていません。system.aiからdefaultのEXECUTE権限を削除すると、AI Functionsへのアクセス権も削除されます。このチュートリアルでは、直接的な権限付与を使用して必要な関数へのアクセスを許可する方法を説明します。
始める前に
このチュートリアルのポリシーは、すべてのアカウントユーザーとService Principalを含む account users グループに適用されます。
次の権限が必要です:
MANAGEsystem.ai上の権限、またはスキーマの所有権。system.aiから defaultEXECUTE権限を削除するためのアカウント管理者またはメタストア管理者の権限。- SQLでGRANTポリシーを作成するには、Databricks Runtime 18 LTS以降を実行しているクラシックコンピュートリソースが必要です。コンピュートの要件を参照してください。
- 管理タグに対する
CREATE権限、管理タグに対するASSIGN権限、およびタグ付けするアセットに対するAPPLY_TAG権限。管理タグのアクセス許可を管理するを参照してください。
ステップ 1: GRANT ポリシーを作成する
除外するモデルファミリーを選択
system.ai 内のモデルおよびモデルサービスには、自動的に適用される ai.model_family や ai.model_creator などのシステムタグがあります。これらのタグは、自分で作成や割り当てを行わなくても、ポリシー内で直接参照できます。
追加のタグに基づいてポリシー条件を作成するには、独自の管理タグを作成して割り当て、GRANTポリシーでそれらのタグを参照します。
カタログエクスプローラーで、管理対象とするモデルとモデルサービスを検査し、除外する ai.model_family 値を選択します。以下のポリシーで、<excluded-model-family> をその値に置き換えます。
GRANT ポリシーは、アセットがポリシーのタグベースの条件に一致する場合にのみアクセス権を付与します。以下のポリシーでは、モデルまたはモデルサービスは、値が <excluded-model-family> ではない ai.model_family タグを持つ場合にのみ一致します。
サービス用の管理タグを作成
モデルプロバイダーサービスおよび MCP サービスへのアクセスを管理するには、アカウントユーザーがアクセスできるサービスを識別する管理タグを作成して割り当てます。このチュートリアルでは、例として access_status = approved を使用します。
access_statusという名前の管理タグを作成し、許可される値としてapprovedを設定します。「管理タグの管理」を参照してください。- アカウントユーザーが使用できる各モデルプロバイダーサービスおよびMCPサービスに
access_status = approvedを適用します。タグは、カタログエクスプローラーまたはUnity Catalogエンティティタグ割り当てAPIを使用して割り当てることができます。
モデルとサービスのポリシーを作成する
GRANTポリシーは、1つのセキュリティ保護可能オブジェクトタイプを対象とします。同じ条件を使用して、モデルとモデルサービスに対して個別のポリシーを作成します。
CREATE POLICY grant_allowed_models
ON SCHEMA system.ai
COMMENT 'Grant EXECUTE on models outside the excluded family'
TO `account users`
GRANT EXECUTE FOR MODELS
WHEN has_tag('ai.model_family')
AND NOT has_tag_value('ai.model_family', '<excluded-model-family>');
CREATE POLICY grant_allowed_model_services
ON SCHEMA system.ai
COMMENT 'Grant EXECUTE on model services outside the excluded family'
TO `account users`
GRANT EXECUTE FOR MODEL SERVICES
WHEN has_tag('ai.model_family')
AND NOT has_tag_value('ai.model_family', '<excluded-model-family>');
ポリシーは、除外値と一致しない ai.model_family タグを持つ新しいモデルおよびモデルサービスに対して、自動的に EXECUTE 特権を付与します。ユーザーは、これらのポリシーを通じて、そのタグが付いていないアセットに対する EXECUTE 特権を受け取りません。
上記のポリシーは、ai.model_family 値が条件に一致するモデルおよびモデルサービスに対して、自動的に EXECUTE を付与します。アカウントユーザーがアクセスできるモデルやモデルサービスを明示的に制御したい場合は、代わりに独自の管理タグを使用してください。たとえば、承認された各モデルまたはモデルサービスに access_status = approved を適用し、次に has_tag_value('access_status', 'approved') をポリシー条件として使用します。
モデルプロバイダーサービスおよび MCP サービスの場合、管理者が access_status = approved を適用すると、以下のポリシーによって EXECUTE が付与されます。
CREATE POLICY grant_allowed_model_provider_services
ON SCHEMA system.ai
COMMENT 'Grant EXECUTE on approved model provider services'
TO `account users`
GRANT EXECUTE FOR MODEL PROVIDER SERVICES
WHEN has_tag_value('access_status', 'approved');
CREATE POLICY grant_allowed_mcp_services
ON SCHEMA system.ai
COMMENT 'Grant EXECUTE on approved MCP services'
TO `account users`
GRANT EXECUTE FOR MCP SERVICES
WHEN has_tag_value('access_status', 'approved');
ステップ2:AI Functionsへのアクセスを許可する
system.ai内のAI関数へのアクセス権を付与するには、その関数に対して直接EXECUTEを付与します。たとえば、次のステートメントは組み込みのpython_exec関数へのアクセス権を付与します。
GRANT EXECUTE ON FUNCTION system.ai.python_exec TO `account users`;
ユーザーがアクセスする必要のある各 AI Functions に対して、この直接付与を繰り返します。詳細については、AI Functions Unity Catalog の権限を参照してください。
ステップ3:defaultスキーマのGRANTを削除する
GRANTポリシーを作成した後、defaultのスキーマレベルのEXECUTE権限を削除します。
EXECUTE を取り消す前に、account users が引き続きカタログとスキーマを使用できることを確認してください:
GRANT USE CATALOG ON CATALOG system TO `account users`;
GRANT USE SCHEMA ON SCHEMA system.ai TO `account users`;
Revoke the default grant:
REVOKE EXECUTE ON SCHEMA system.ai FROM `account users`;
この変更は、モデル、モデルサービス、モデルプロバイダーサービス、MCPサービス、AI Functionsなど、system.ai内のすべてのアカウントユーザーおよびすべての実行可能アセットに影響します。
ステップ 4: アクセスを検証する
ポリシーがsystem.aiにアタッチされていることを確認します:
SHOW EFFECTIVE POLICIES ON SCHEMA system.ai;
他の EXECUTE 権限を持たないアカウントユーザーとしてテストし、以下を確認します:
- ユーザーは、除外されていない
ai.model_family値を持つモデルまたはモデルサービスに対するEXECUTE権限を持っています。 - ユーザーは、除外値を持つモデルまたはモデルサービスに対する
EXECUTE権限を持っていません。 ai.model_familyタグがない場合、ユーザーはそのアセットに対するEXECUTE権限を持ちません。- ユーザーは、
access_status = approvedのタグが付いたモデルプロバイダーサービスまたはMCPサービスに対するEXECUTE権限を持っています。 - これらのポリシーを通じて、タグ付けされていないモデルプロバイダーサービスまたはMCPサービスに対する
EXECUTE権限をユーザーは持っていません。 - ユーザーが AI 関数に対する
EXECUTE権限を持つのは、直接付与された場合のみです。
別のモデルファミリーを除外するには、CREATE OR REPLACE POLICY を使用して grant_allowed_models と grant_allowed_model_services の両方の WHEN 条件内の <excluded-model-family> を更新します。更新されたポリシーは、ai.model_family 値が除外値と異なるモデルおよびモデルサービスに対してのみ EXECUTE を付与します。
モデルプロバイダーサービスおよびMCPサービスの場合、access_status = approvedを適用または削除して、EXECUTEを受け取るサービスを変更します。