ABAC GRANTポリシー
ABAC GRANTポリシーは、管理タグが条件に一致するセキュリティ保護可能なオブジェクトに対して、Unity Catalogの権限を動的に付与します。このページでは、ABAC GRANTポリシーの作成、編集、一覧表示、削除の方法、GRANTポリシーと直接付与の相互作用、および現在のスコープと制限について説明します。
サポートされている任意のセキュリティ保護可能なタイプに対して、Catalog Explorer、SQL、または REST API を使用して ABAC GRANT ポリシーを作成および管理できます。
ABACの概要、および管理タグやhas_tag、has_tag_valueなどの組み込み関数といった主要な概念については、属性ベースアクセス制御(ABAC)の基本概念を参照してください。
コンピュートの要件
SQLを使用してGRANTポリシーを作成、変更、または削除するには、Databricks Runtime 18 LTS以上を実行しているクラシックコンピュートリソースが必要です。
Databricks Runtime 18 は Databricks Runtime 18.0、18.1、および 18.2 より新しいです。以前はより新しい番号のバージョンとして提供されていた機能が、代わりに Databricks Runtime 18 への日付付きアップデートとして提供されます。詳細については、統合リリースノートについてを参照してください。
GRANT ポリシーとは何ですか?
GRANTポリシーは、管理タグがポリシーの条件と一致するセキュリティ保護可能なオブジェクトに、Unity Catalogの権限を動的に付与する属性ベースのアクセス制御ポリシーです。Unity Catalog は、アクセスがチェックされるたびに、ポリシーのスコープ内にある各セキュリティ保護可能なオブジェクトの管理タグに対して、ポリシーの WHEN 条件を評価し、一致するすべてのセキュリティ保護可能なオブジェクトに権限を付与します。
これに対し、直接のGRANTステートメントは、3階層の名前空間(catalog.schema.object)で識別される保護可能なオブジェクトに権限を割り当てます。
GRANT ポリシーは、作成した管理タグ、または Databricks によって条件で事前定義されたシステムタグのいずれかを参照できます。
GRANT ポリシーの例
これらの例は、顧客が登録したMLflowモデルと、system.ai内のDatabricksがホストする基盤モデルの両方に適用されます。Unity CatalogでのMLflowモデルの登録方法に関する情報については、Unity Catalogでのモデルのライフサイクルの管理を参照してください。Databricks でホストされている基盤モデルについては、「Unity Catalog からの AI モデルおよび LLM モデルへのアクセス」を参照してください。
以下のポリシーでは、production.ml_models 内の顧客登録済み MLflow モデルに適用された lifecycle 管理タグを使用します。このポリシーは、lifecycle = 'production'というタグが付いたモデルに対してのみEXECUTEを付与します:
CREATE POLICY grant_production_model_access
ON SCHEMA production.ml_models
COMMENT 'Grant EXECUTE on production MLflow models'
TO `analysts`
GRANT EXECUTE FOR MODELS
WHEN has_tag_value('lifecycle', 'production');
以下のポリシーは、事前に適用された ai.model_creator システムタグを使用して、contractors を除く system.ai 内のすべての Anthropic がホストする基盤モデルに EXECUTE を data_scientists に付与します。このポリシーは、Databricks が後で追加するあらゆる Anthropic モデルを自動的に対象とします。
CREATE POLICY grant_anthropic_foundation_models
ON SCHEMA system.ai
COMMENT 'Grant EXECUTE on Anthropic foundation models'
TO `data_scientists`
EXCEPT `contractors`
GRANT EXECUTE FOR MODELS
WHEN has_tag_value('ai.model_creator', 'anthropic');
直接付与を使用した同等のアクセスでは、system.aiにあるモデルごとに1つのステートメントが必要であり、Databricksが新しいAnthropicモデルを追加するたびに再発行されます。
GRANT EXECUTE ON MODEL `system`.`ai`.`databricks-claude-sonnet-4-6` TO `data_scientists`;
GRANT EXECUTE ON MODEL `system`.`ai`.`databricks-claude-opus-4-7` TO `data_scientists`;
GRANT EXECUTE ON MODEL `system`.`ai`.`databricks-claude-haiku-4-5` TO `data_scientists`;
GRANTポリシーは、行フィルターおよび列マスクポリシーとは2つの点で異なります。
- 行フィルターと列マスクのポリシーは、ユーザーがすでにアクセスできるデータの内容を制限します。GRANT ポリシーは、ユーザーがそもそもオブジェクトにアクセスできるかどうかを決定します。
- 行フィルターと列マスクのポリシーには、フィルターまたはマスクを実装するためのユーザー定義関数 (UDF) が必要です。GRANT ポリシーは UDF を使用しません。条件はポリシー定義にインラインで表現されます。
付与できる権限は、セキュリティ保護可能なタイプによって異なります。サポートされているタイプとそのポリシーで付与可能な権限の完全なリストについては、サポートされているセキュリティ保護可能なタイプと権限を参照してください。
サポートされているセキュリティ保護可能なタイプと権限
次の表に、サポートされているタイプと、それらに対してポリシーで付与可能な権限を示します。Unity Catalog は、ポリシー作成時に指定した権限をセキュリティ保護可能なタイプに対して検証し、そのタイプでサポートされていない権限は拒否します。
セキュリティ保護可能なタイプ |
|
|
|
|---|---|---|---|
モデル | ✓ | ✓ | ✓ |
モデルサービス | ✓ | ✓ | ✓ |
モデルプロバイダーサービス | ✓ | ✓ | ✓ |
MCPサービス | ✓ | ✓ | ✓ |
エージェントサービス | ✓ | ✓ | ✓ |
SQLでは、FORの後にGRANT EXECUTE FOR MODEL SERVICESのような複数形のセキュリティ保護可能なオブジェクトタイプを使用します。タイプは、MODEL SERVICESのようにスペースを含めるか、MODEL_SERVICESのようにアンダースコアを使用して記述できます。単数形は受け付けられません。REST APIでは、for_securable_typeをアンダースコア付きの単数形に設定します(例:MODEL_SERVICE)。
GRANTポリシーは、カタログまたはスキーマにアタッチできます。
各オブジェクトタイプに対して直接付与できる権限の完全なリストについては、Unity Catalog の権限リファレンスを参照してください。
GRANT ポリシーと直接のGRANTの連携
オブジェクトに対する有効な権限は、直接付与された権限と、適用可能なすべてのGRANTポリシーの和集合です。この結合ロジックは、サポートされている型と権限に含まれるすべてのサポート対象の型と権限に適用されます。以下の例では、モデルに対して EXECUTE を使用しています。次のいずれかが当てはまる場合、プリンシパルはモデルに対して EXECUTE を保持します:
- モデルのカタログまたはスキーマにアタッチされたGRANTポリシーは、
TOにプリンシパルをリストし(EXCEPTにはリストしません)、ポリシーのWHEN条件がモデルのタグと一致します。 - モデル、そのスキーマ、またはそのカタログに対する直接の
GRANT EXECUTEは、直接付与されたか、グループメンバーシップを通じてか、あるいは他の管理権限を通じてかにかかわらず、そのプリンシパルに適用されます。
アクセスはこれらのソースの結合であるため、より選択的なGRANTポリシーは、除外されたプリンシパルがEXECUTEを欠いていることを意味しません。プリンシパルは、モデルに対する直接付与、またはその親スキーマもしくは親カタログを介して、まだ権限を保持できます。モデルに対するEXECUTEの制御の主な方法としてGRANTポリシーを使用する予定がある場合は、まず、すでに存在する直接のGRANTがそのポリシーを上書きする可能性があるかどうかを判断してください。
- スコープがそのスキーマまたはカタログ内のモデルをカバーするすべてのGRANTポリシーを一覧表示するには、
SHOW EFFECTIVE POLICIES ON SCHEMA <parent_schema>(またはON CATALOG <parent_catalog>) を使用できます。SHOW EFFECTIVE POLICIESはON MODELを直接サポートしていません。対応する REST API はGET /api/2.1/unity-catalog/policies/{on_securable_type}/{on_securable_fullname}?include_inherited=trueです(Python SDK:w.policies.list_policies(..., include_inherited=True))。 - 直接の許可を列挙するために、モデルとその祖先に
SHOW GRANTSを適用してください。セキュラブルオブジェクトへの直接付与に対する同等のREST APIはGET /api/2.1/unity-catalog/permissions/{securable_type}/{full_name}です(Python SDK:w.grants.get(...));直接付与と継承された付与の結合については、GET /api/2.1/unity-catalog/effective-permissions/{securable_type}/{full_name}を使用します(Python SDK:w.grants.get_effective(...))。
GRANT ポリシーを作成
GRANT ポリシーは、カタログエクスプローラ UI、CREATE POLICY SQL ステートメント、または REST API を使用して作成できます。
GRANT ポリシーを作成するには、ポリシーがアタッチされているカタログまたはスキーマに対するMANAGEが必要か、またはそのセキュリティ保護可能なオブジェクトを所有している必要があります。
- Catalog Explorer
- SQL
- REST API
-
Databricks ワークスペースで、
カタログ をクリックします。
-
ポリシーを添付するカタログまたはスキーマを選択します。GRANT ポリシーは、カタログまたはスキーマレベルでのみ添付できます。
-
[ ポリシー ] タブをクリックします。
-
新しいポリシー をクリックします。
-
「 ポリシー識別 」の下で、 ポリシー名 とオプションの 説明 を入力します。
-
プリンシパルとスコープ:
- 「 適用先 」で、ポリシーが適用されるプリンシパル(ユーザー、グループ、またはサービスプリンシパル)を選択します。
- 除外対象 で、ポリシーから除外するプリンシパルを任意で選択します。
- **スコープ**で、ポリシーがアタッチされているカタログまたはスキーマを確認してください。
-
「**ポリシータイプ**」で、「**アクセス権の付与**」を選択します。
-
セキュリティ保護可能なオブジェクト で、ポリシーを適用するセキュリティ保護可能なタイプを選択します。サポートされているタイプと権限を参照してください。
-
[条件] で、カタログまたはスキーマ内の選択したタイプのセキュリティ保護可能なオブジェクトに対してポリシーのスコープを設定する方法を選択します:
- No condition は、選択したカタログまたはスキーマの下にあるそのタイプのすべてのセキュリティ保護可能なオブジェクトにポリシーを適用します。
- これらのタグのいずれかに一致するセキュリティ保護可能なオブジェクト は、選択された管理タグの少なくとも 1 つを持つセキュリティ保護可能なオブジェクトにのみポリシーを適用します。
- カスタム式に一致するセキュリティ保護可能なオブジェクト を使用すると、タグベースの式を記述して、ポリシーを適用するセキュリティ保護可能なオブジェクトを決定できます。使用可能な条件関数については、条件と組み込み関数を参照してください。
-
Privileges で、付与する権限を選択します。利用可能な権限は、選択したセキュリティ保護可能なタイプによって異なります。サポートされているタイプと権限を参照してください。
-
保存する前に、同等のSQLステートメントを確認するため、[ コードを表示 ] をクリックしてから、[ ポリシーを作成 ] をクリックします。
GRANTポリシーのSQL構文は、ROW FILTERまたはCOLUMN MASKの代わりにGRANT ... FOR ... WHEN ...本体を使用します。
CREATE [OR REPLACE] POLICY policy_name
ON { CATALOG catalog_name | SCHEMA schema_name }
[COMMENT description]
TO principal [, ...]
[EXCEPT principal [, ...]]
GRANT privilege [, ...] FOR securable_type
[WHEN condition]
パラメーター:
policy_name: ポリシー名です。同じセキュリティ保護可能なオブジェクトに定義されているすべてのポリシーの中で、一意である必要があります。ON { CATALOG | SCHEMA }:ポリシーが添付されるスコープ。GRANTポリシーは、個々のセキュリティ保護可能なオブジェクトではなく、カタログまたはスキーマレベルで添付できます。TO principal [, ...]ポリシーの対象となるユーザー、グループ、またはサービスプリンシパルです。EXCEPT principal [, ...]:ポリシーの対象外となるプリンシパル。GRANT privilege [, ...] FOR securable_type:付与する権限と、それが適用されるセキュリティ保護可能なタイプ。有効な権限はタイプによって異なります。サポートされているタイプと権限を参照してください。WHEN condition:スコープ内でポリシーが適用されるセキュリティ保護可能なオブジェクトを決定する、タグベースのブール式。組み込み関数has_tag('tag_name')およびhas_tag_value('tag_name', 'tag_value')を使用します。省略した場合は、default でTRUEになります(スコープ内のそのタイプのすべてのセキュリティ保護可能なオブジェクトに適用されます)。利用可能な条件関数については、条件と組み込み関数を参照してください。
以下のポリシーは、ファイナンスドメイン用にタグ付けされた analytics.tools 内のすべてのMCPサービスに対して EXECUTE を付与します:
CREATE POLICY grant_finance_mcp_services
ON SCHEMA analytics.tools
COMMENT 'Grant EXECUTE on finance MCP services'
TO `analysts`
GRANT EXECUTE FOR MCP SERVICES
WHEN has_tag_value('domain', 'finance');
モデルの例については、GRANT ポリシーとはを参照してください。
この例では、system.ai 内のすべての Anthropic がホストする基盤モデルに EXECUTE を data_scientists (請負業者を除く) に付与する GRANT ポリシーを作成します。
curl -X POST "https://${DATABRICKS_HOST}/api/2.1/unity-catalog/policies" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
--data-binary @- << 'EOF'
{
"name": "grant_anthropic_foundation_models",
"comment": "Grant EXECUTE on Anthropic foundation models",
"on_securable_type": "SCHEMA",
"on_securable_fullname": "system.ai",
"for_securable_type": "MODEL",
"policy_type": "POLICY_TYPE_GRANT",
"to_principals": ["data_scientists"],
"except_principals": ["contractors"],
"grant": {
"privileges": ["EXECUTE"]
},
"when_condition": "has_tag_value('ai.model_creator', 'anthropic')"
}
EOF
name、on_securable_type、on_securable_fullname、for_securable_type、policy_type、to_principals、および grant.privileges は必須です。comment、except_principals、および when_condition はオプションです。
リクエストとレスポンスの詳細については、REST API リファレンスの ポリシーの作成 を参照してください。
grant.privileges で有効な権限は、for_securable_type によって異なります。サポートされているタイプと権限を参照してください。
GRANTポリシーの編集
- Catalog Explorer
- SQL
- REST API
親カタログまたはスキーマの [ポリシー] タブから、それらにアタッチされている GRANT ポリシーを管理します。
- Databricks ワークスペースで、
カタログ をクリックします。
- ポリシーが関連付けられているカタログまたはスキーマを選択してください。
- [ ポリシー ] タブをクリックします。
- 編集したいポリシーを選択します。
- 変更したい任意のフィールドを更新してください。
- 「 ポリシーを更新 」をクリックします。
SQL で GRANT ポリシーを編集するには、CREATE OR REPLACE POLICY を同じ名前とターゲットで実行します。「GRANT ポリシーの作成」を参照してください。
SQL の CREATE OR REPLACE POLICY とは異なり、PATCH は部分的な更新をサポートしています。変更するフィールドを指定するには、update_mask クエリーパラメーターを使用します。それらのフィールドのみが更新され、リクエスト本文に存在しないフィールドは変更されません。update_mask を省略した場合、リクエスト本文内のすべてのフィールドが更新されます。update_mask を * に設定する場合、リクエスト本文には、to_principals、for_securable_type、policy_type、および grant.privileges というすべての必須フィールドを含める必要があります。
この例では、ポリシーから除外されるプリンシパルに interns を追加します。
curl -X PATCH "https://${DATABRICKS_HOST}/api/2.1/unity-catalog/policies/SCHEMA/system.ai/grant_anthropic_foundation_models?update_mask=except_principals" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
--data-binary @- << 'EOF'
{
"except_principals": ["contractors", "interns"]
}
EOF
送信する値は既存のリストに追加されるのではなく置き換えられるため、新しいプリンシパルだけでなく、除外するすべてのプリンシパルを含める必要があります。
GRANT ポリシーを削除する
- Catalog Explorer
- SQL
- REST API
親カタログまたはスキーマの [ポリシー] タブから、それらにアタッチされている GRANT ポリシーを管理します。
- Databricks ワークスペースで、
カタログ をクリックします。
- ポリシーが関連付けられているカタログまたはスキーマを選択してください。
- [ ポリシー ] タブをクリックします。
- ポリシーを選択してください。
- ポリシーを削除 をクリックします。
SQL で GRANT ポリシーを削除するには、DROP POLICY を実行します:
DROP POLICY grant_anthropic_foundation_models ON SCHEMA system.ai;
curl -X DELETE "https://${DATABRICKS_HOST}/api/2.1/unity-catalog/policies/SCHEMA/system.ai/grant_anthropic_foundation_models" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}"
ポリシーを表示
セキュリティ保護可能なオブジェクトで定義されているポリシーを一覧表示するには、SHOW POLICIES を使用します。SHOW EFFECTIVE POLICIES を使用すると、スキーマに影響するカタログ レベルのポリシーなど、親スコープから継承されたポリシーも含められます。
SHOW [EFFECTIVE] POLICIES ON { CATALOG | SCHEMA } securable_name
結果には、ポリシー名、ポリシータイプ、各ポリシーが定義されているセキュリティ保護可能なオブジェクトのカタログとスキーマ、およびそのセキュリティ保護可能なオブジェクトのタイプとフルネームが含まれます。GRANTポリシーは、同じスコープにアタッチされている行フィルターポリシーや列マスクポリシーとともに、ポリシータイプ GRANT で返されます。Table 列は、ポリシーがテーブルに定義されている場合にのみ入力されます。これは、行フィルターポリシーおよび列マスクポリシーに適用されます。GRANTポリシーの場合、Table 列は NULL です。
例:
SHOW EFFECTIVE POLICIES ON SCHEMA system.ai;
Policy Name Policy Type Catalog Schema Table Comment on_securable_type on_securable_fullname
--------------------------------- ----------- ------- ------ ----- -------------------------------------------- ----------------- ---------------------
grant_anthropic_foundation_models GRANT system ai NULL Grant EXECUTE on Anthropic foundation models SCHEMA system.ai
ポリシーについて説明します
特定のGRANTポリシーの詳細を表示するには、DESCRIBE POLICYを使用します。ターゲットのセキュリティ保護可能なオブジェクトに対する READ METADATA または MANAGE、あるいはオブジェクトの所有権が必要です。
{ DESC | DESCRIBE } POLICY policy_name ON { CATALOG | SCHEMA } securable_name
結果には、名前、セキュリティ保護可能なオブジェクトのタイプ、セキュリティ保護可能なオブジェクトの名前、プリンシパル、権限、およびWHEN条件を含む、ポリシーのプロパティがキーと値のペアとして表示されます。
例:
DESCRIBE POLICY grant_anthropic_foundation_models ON SCHEMA system.ai;
info_name | 情報値 |
|---|---|
名前 | アンソロピック・ファウンデーションモデルの付与 |
セキュリティ保護可能なタイプ | スキーマ |
セキュリティ対象について | system.ai |
プリンシパルへ | データサイエンティスト |
プリンシパルを除く | 請負業者 |
セキュリティ保護可能なタイプ | モデル |
ポリシーの種類 | GRANT |
付与された権限 | EXECUTE |
条件時 | AIモデル作成者:Anthropic |
Information Schema を使用したポリシー定義のクエリー
INFORMATION_SCHEMA.ABAC_POLICY_DEFINITIONSを使用して、現在のカタログ内のGRANTポリシー定義をクエリーできます:
SELECT *
FROM information_schema.abac_policy_definitions
WHERE policy_type = 'GRANT';
利用可能な列とその他の例については、ABAC_POLICY_DEFINITIONSを参照してください。
基盤モデルにおけるシステムタグ system.ai
Databricks が system.ai でホストする基盤モデルには、GRANT ポリシーが直接参照できるシステムタグがあらかじめタグ付けされています。これらのモデルをポリシーで使用するために、ご自身でタグ付けする必要はありません。
タグ | 値の例 |
|---|---|
|
|
|
|
独自のカタログとスキーマに登録するモデルには、標準のUnity Catalogタグワークフローを使用して管理タグを適用します。See 管理タグ.
ポリシー クォータ
リソース | 上限 |
|---|---|
メタストアごとのポリシー | 10,000 |
カタログまたはスキーマごとのポリシー | 100 |
これらのクォータは、行フィルターと列マスクのポリシーに関するクォータとは別です。
監査ログ
GRANT ポリシーの作成、変更、および削除操作は、行フィルターポリシーおよび列マスキングポリシーと同じcreatePolicy、deletePolicy、getPolicy、およびlistPoliciesのアクションとしてログに記録されます。監査ログクエリのサンプルについては、監査ログを参照してください。
ベストプラクティス
TOおよびEXCEPTでグループを使用し、個々のユーザーは使用しないでください。 ポリシーで指定されたグループにユーザーを追加または削除すると、ポリシーを編集することなく、ポリシーの適用対象が変更されます。- 対象をカバーする最小のスコープでポリシーをアタッチしてください。 ポリシーを適用する保護対象を含む最も狭いスコープを使用してください。より広範なスコープでは、ポリシーのタグ照合に無関係なセキュリティ保護可能オブジェクトを含めてしまい、意図しないアクセスを許可してしまう可能性があります。
- 安全なデフォルト設定にはタグ継承を使用してください。 子孫が継承するように、親カタログまたはスキーマでデフォルトのタグ値を適用します。継承されたタグは、異なる値が必要な特定のオブジェクトでのみ上書きする必要があります。
EXCEPTと組み合わせて、ポリシーの制御された例外を処理します。 - 同じ権限に対して、GRANTポリシーと直接付与を併用しないでください。 特定の保護可能なオブジェクトに対する特定の権限については、GRANTポリシーまたは直接付与のいずれかを選択してください。両方を選択することはできません。GRANT ポリシーは直接付与される権限と統合されます。そのため、それらを同じ保護対象で混在させると、誰がアクセス権を持っているかを把握し、変更を監査することが難しくなります。
USE CATALOGおよびUSE SCHEMAの前提条件には直接付与を使用し、そのタイプのサポートされている権限には GRANT ポリシーを使用します。 GRANT ポリシーは、セキュリティ保護可能なオブジェクトへのアクセスに必要なUSE CATALOGおよびUSE SCHEMAの前提条件を付与しません。それらを直接付与し、GRANT ポリシーを使用して、サポートされている場合はEXECUTEなどのタグによってそのタイプのサポートされる権限の範囲を決定します。
制限事項:
CREATE MODEL権限とCREATE MODEL VERSION権限はGRANTポリシーではサポートされていないため、直接付与する必要があります。MODELでサポートされている権限については、サポートされているタイプと権限を参照してください。ALL_PRIVILEGES、MANAGE、およびMODIFYは GRANT ポリシーではサポートされていません。- ユーザーがセキュリティ保護可能なオブジェクトにアクセスするために必要な前提条件である
USE SCHEMAおよびUSE CATALOGの権限は、GRANTポリシーではサポートされていないため、直接付与する必要があります。 - ポリシーはカタログまたはスキーマに添付できますが、個々のセキュリティ保護可能なオブジェクトには添付できません。
- GRANTポリシーによって付与された権限は、
SHOW GRANTSでは返されません。 - モデルまたはモデルバージョンの削除はGRANTポリシーの対象外です。モデルのバージョンとモデルを削除する方法については、Unity Catalogでのモデルのライフサイクルの管理を参照してください。
- GRANTポリシーが定義されているモデルを共有するためにDelta Sharingを使用することはできません。Delta Sharing は、GRANT ポリシーが適用されているかどうかにかかわらず、モデルサービス、モデルプロバイダーサービス、MCP サービス、またはエージェントサービスの共有をサポートしていません。
詳細情報
Unity Catalog での特権の管理も参照してください。