ABAC GRANTポリシー(ベータ版)
ベータ版
ABAC GRANTポリシーはベータ版です。GRANTポリシーはカタログまたはスキーマレベルでアタッチされ、サポートされているセキュリティ保護可能なオブジェクトタイプに対して権限を付与します。付与できる権限は、セキュリティ保護可能なタイプによって異なります。サポートされているセキュリティ保護可能なタイプと権限を参照してください。
ABAC GRANTポリシーは、管理タグが条件に一致するセキュリティ保護可能なオブジェクトに対して、Unity Catalogの権限を動的に付与します。このページでは、ABAC GRANT ポリシーの作成、編集、一覧表示、削除の方法、GRANT ポリシーと直接付与の相互作用、および現在のベータ版の範囲と制限について説明します。
サポートされている任意のセキュリティ保護可能なタイプに対して、カタログエクスプローラーまたはDatabricks SDKを使用してABAC GRANTポリシーを作成および管理できます。SQL はモデルに対してのみサポートされています。
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 は、ポリシー作成時に指定した権限をセキュリティ保護可能なタイプに対して検証し、そのタイプでサポートされていない権限は拒否します。
セキュリティ保護可能なタイプ |
|
|
|
|
|
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | — | — |
| ✓ | ✓ | ✓ | — | — |
| ✓ | ✓ | ✓ | — | — |
| ✓ | ✓ | ✓ | — | — |
| ✓ | ✓ | ✓ | — | — |
| ✓ | — | ✓ | ✓ | ✓ |
ダッシュ(—)は、そのセキュリティ保護可能なタイプに対してGRANTポリシーを通じてその権限を付与できないことを意味しますが、直接的なGRANTステートメントを使用して付与できる場合があります。各オブジェクトタイプに対して直接付与できるすべての権限については、Unity Catalog権限リファレンスを参照してください。
SKILL EXECUTE をサポートしていません。代わりに READ_SKILL および WRITE_SKILL を使用して、スキルのアクセスを管理してください。
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 ステートメント、または Databricks SDK を使用して作成できます。
GRANT ポリシーを作成するには、ポリシーがアタッチされているカタログまたはスキーマに対するMANAGEが必要か、またはそのセキュリティ保護可能なオブジェクトを所有している必要があります。
- Catalog Explorer
- SQL
- Python SDK
-
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 MODELS
[WHEN condition]
パラメーター:
policy_name: ポリシー名です。同じセキュリティ保護可能なオブジェクトに定義されているすべてのポリシーの中で、一意である必要があります。ON { CATALOG | SCHEMA }:ポリシーが添付されるスコープ。GRANTポリシーは、個々のセキュリティ保護可能なオブジェクトではなく、カタログまたはスキーマレベルで添付できます。TO principal [, ...]ポリシーの対象となるユーザー、グループ、またはサービスプリンシパルです。EXCEPT principal [, ...]:ポリシーの対象外となるプリンシパル。GRANT privilege [, ...] FOR MODELS:付与する権限と、それらが適用されるセキュリティ保護可能なタイプ。SQLでは、GRANTポリシーは現在モデルのみをサポートしています。有効な権限はタイプによって異なります。サポートされている型と権限を参照してください。その他のサポートされているタイプに対してポリシーを作成するには、カタログエクスプローラーまたはDatabricks SDKを使用してください。WHEN condition:スコープ内でポリシーが適用されるセキュリティ保護可能なオブジェクトを決定する、タグベースのブール式。組み込み関数has_tag('tag_name')およびhas_tag_value('tag_name', 'tag_value')を使用します。省略した場合は、default でTRUEになります(スコープ内のそのタイプのすべてのセキュリティ保護可能なオブジェクトに適用されます)。利用可能な条件関数については、条件と組み込み関数を参照してください。
モデルの例については、GRANT ポリシーとはを参照してください。
完全なドキュメントについては、Databricks SDK for Python のドキュメントを参照してください。
この例では、system.ai 内のすべての Anthropic がホストする基盤モデルに EXECUTE を data_scientists (請負業者を除く) に付与する GRANT ポリシーを作成します。
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import (
GrantOptions,
PolicyInfo,
PolicyType,
SecurableType,
)
w = WorkspaceClient()
w.policies.create_policy(PolicyInfo(
name="grant_anthropic_foundation_models",
comment="Grant EXECUTE on Anthropic foundation models",
on_securable_type=SecurableType.SCHEMA,
on_securable_fullname="system.ai",
for_securable_type=SecurableType.MODEL,
policy_type=PolicyType.POLICY_TYPE_GRANT,
to_principals=["data_scientists"],
except_principals=["contractors"],
grant=GrantOptions(privileges=["EXECUTE"]),
when_condition="has_tag_value('ai.model_creator', 'anthropic')",
))
その他のセキュリティ保護可能なタイプについては、for_securable_type を対応する SecurableType 値に設定し、そのタイプで有効な権限を渡します。サポートされているタイプと権限を参照してください。
GRANTポリシーの編集
- Catalog Explorer
- SQL
- Python SDK
親カタログまたはスキーマの [ポリシー] タブから、それらにアタッチされている GRANT ポリシーを管理します。
- Databricks ワークスペースで、
カタログ をクリックします。
- ポリシーが関連付けられているカタログまたはスキーマを選択してください。
- [ ポリシー ] タブをクリックします。
- 編集したいポリシーを選択します。
- 変更したい任意のフィールドを更新してください。
- 「 ポリシーを更新 」をクリックします。
SQL で GRANT ポリシーを編集するには、CREATE OR REPLACE POLICY を同じ名前とターゲットで実行します。「GRANT ポリシーの作成」を参照してください。
SQLのCREATE OR REPLACE POLICYとは異なり、update_policyは部分的な更新をサポートしています。変更するフィールドを指定するには、update_maskパラメーターを使用します。更新されるのは、それらのフィールドのみです。update_mask が "*" であるか空の場合、policy_info 内のすべてのフィールドが適用されます。
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import PolicyInfo
w = WorkspaceClient()
w.policies.update_policy(
on_securable_type="SCHEMA",
on_securable_fullname="system.ai",
name="grant_anthropic_foundation_models",
policy_info=PolicyInfo(
except_principals=["contractors", "interns"],
),
update_mask="except_principals",
)
GRANT ポリシーを削除する
- Catalog Explorer
- SQL
- Python SDK
親カタログまたはスキーマの [ポリシー] タブから、それらにアタッチされている GRANT ポリシーを管理します。
- Databricks ワークスペースで、
カタログ をクリックします。
- ポリシーが関連付けられているカタログまたはスキーマを選択してください。
- [ ポリシー ] タブをクリックします。
- ポリシーを選択してください。
- ポリシーを削除 をクリックします。
SQL で GRANT ポリシーを削除するには、DROP POLICY を実行します:
DROP POLICY IF EXISTS grant_anthropic_foundation_models ON SCHEMA system.ai;
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.policies.delete_policy(
on_securable_type="SCHEMA",
on_securable_fullname="system.ai",
name="grant_anthropic_foundation_models",
)
ポリシーを表示
セキュリティ保護可能なオブジェクトで定義されているポリシーを一覧表示するには、SHOW POLICIES を使用します。SHOW EFFECTIVE POLICIES を使用すると、スキーマに影響するカタログ レベルのポリシーなど、親スコープから継承されたポリシーも含められます。
SHOW [EFFECTIVE] POLICIES ON { CATALOG | SCHEMA } securable_name
結果には、ポリシー名、ポリシータイプ、および各ポリシーが定義されているカタログまたはスキーマが含まれます。GRANT ポリシーは、同じスコープにアタッチされている行フィルターおよび列マスクポリシーと共に、ポリシータイプGRANTとして返されます。table列は、テーブルスコープのポリシー(行フィルターと列マスク)にのみ値が設定されます。カタログまたはスキーマにアタッチされているGRANTポリシーの場合、NULLとなります。
例:
SHOW EFFECTIVE POLICIES ON SCHEMA system.ai;
ポリシー名 | ポリシータイプ | カタログ | スキーマ | テーブル | Comment |
|---|---|---|---|---|---|
アンソロピック・ファウンデーションモデルの付与 | GRANT | システム | AI | NULL | Anthropic基盤モデルに対する実行権を付与する |
SHOW GRANTS には、GRANT ポリシーを通じて付与された権限は含まれません。セキュリティ保護可能なオブジェクトに対するすべてのアクセス権を確認するには、そのオブジェクトの SHOW GRANTS 出力と、親スキーマまたはカタログ上の SHOW EFFECTIVE POLICIES によって返される GRANT ポリシーを組み合わせます。
ポリシーについて説明します
特定の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 |
基盤モデルにおけるシステムタグ 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、スキルについてはREAD_SKILLおよびWRITE_SKILLなどのタグによって、そのタイプのサポートされている権限の範囲を制限します。
制限事項:
CREATE MODEL権限とCREATE MODEL VERSION権限はGRANTポリシーではサポートされていないため、直接付与する必要があります。MODELでサポートされている権限については、サポートされているタイプと権限を参照してください。ALL_PRIVILEGES、MANAGE、およびMODIFYは GRANT ポリシーではサポートされていません。- ユーザーがセキュリティ保護可能なオブジェクトにアクセスするために必要な前提条件である
USE SCHEMAおよびUSE CATALOGの権限は、GRANTポリシーではサポートされていないため、直接付与する必要があります。 - ポリシーはカタログまたはスキーマに添付できますが、個々のセキュリティ保護可能なオブジェクトには添付できません。
SHOW GRANTSGRANT ポリシーによって付与された権限は返されません。INFORMATION_SCHEMAGRANT ポリシーは含まれていません。- SQLでのGRANTポリシーの作成は、現在モデルでのみ利用可能です。モデルサービス、モデルプロバイダーサービス、モデルコンテキストプロトコル(MCP)サービス、エージェントサービス、またはスキルに関するポリシーを作成するには、カタログエクスプローラまたはDatabricks SDKを使用します。ポリシー作成後も、SQLで管理できます。
SHOW POLICIES、SHOW EFFECTIVE POLICIES、DESCRIBE POLICY、およびDROP POLICYはカタログまたはスキーマのスコープを取り、セキュリティ保護可能なタイプによる制限を受けません。 - システムタグはモデルでは利用可能ですが、モデルサービスではまだ利用できません。ポリシーをモデルサービスにスコープするには、顧客が適用した管理タグで一致させます。
- モデルまたはモデルバージョンの削除はGRANTポリシーの対象外です。モデルのバージョンとモデルを削除する方法については、Unity Catalogでのモデルのライフサイクルの管理を参照してください。
- GRANTポリシーが定義されているモデルを共有するためにDelta Sharingを使用することはできません。Delta Sharingは、GRANTポリシーが適用されているかどうかにかかわらず、モデルサービス、モデルプロバイダーサービス、MCPサービス、エージェントサービス、またはスキルの共有をサポートしていません。
詳細情報
Unity Catalog での特権の管理も参照してください。