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

行フィルターと列マスクのポリシーの要件、クォータ、および制限

注記

このページでは、行フィルターおよび列マスクポリシーの要件、クォータ、および制限について説明します。GRANT ポリシーについては、ABAC GRANT ポリシーを参照してください。

このページには、Unity CatalogにおけるABAC行フィルターおよび列マスクのポリシーに関する要件、ポリシーのクォータ、および現在の制限事項が記載されています。

コンピュート要件

ABAC ポリシーを使用するには、次のコンピュート構成のいずれかを使用する必要があります。

古いランタイムを必要とするワークロードの実行方法については、 「古いランタイムからのアクセス」を参照してください。

管理タグの要件

ABAC ポリシーでは、非管理タグではなく、管理タグを使用します。 管理タグは、誰が作成、割り当て、管理できるかを決定するアクセス制御を備えたアカウント レベルで定義されます。 詳細については、管理タグを参照してください。

注記

タグの割り当てまたは変更後、変更が反映されるまで数分かかる場合があります。

ポリシーの割り当て

リソース

上限

ポリシー per metastore (all objects)

10,000

メタストアごとのポリシー、直接アタッチ(ベータ)

100

カタログごとのポリシー

100

スキーマごとのポリシー

100

テーブルごとのポリシー

50

ポリシーあたりのプリンシパル(TOおよびEXCEPT句に適用)

20

MATCH COLUMNS句ごとの列条件

3

リソース

上限

ポリシー per metastore (all objects)

10,000

メタストアごとのポリシー、直接アタッチ(ベータ)

100

カタログごとのポリシー

100

スキーマごとのポリシー

100

テーブルごとのポリシー

50

ポリシーあたりのプリンシパル(TOおよびEXCEPT句に適用)

20

MATCH COLUMNS句ごとの列条件

3

管理タグのクォータなどの詳細については、 「サービスの制限」を参照してください。

ABACの制限

ポリシー条件における ID 属性

has_identity_attribute_value 関数と has_identity_attribute_tag_match 関数は、クエリーを実行しているユーザーのID属性を評価します。これらは、列マスクポリシーの WHEN 句でサポートされています。次の制限が適用されます:

  • これらは、列マスクポリシーの MATCH COLUMNS 句ではサポートされていません。
  • これらは GRANT または DENY ポリシーではサポートされていません。
  • カタログエクスプローラーのポリシー作成インターフェイスは、属性関数をサポートしていません。SQL を使用してこれらのポリシーを作成します。

使用パターンについては、クエリーを実行するユーザーの属性に基づいて列をマスクするを参照してください。

古いランタイムからのアクセス

Databricks Runtimeバージョン 16.4 より前の標準および専用のコンピュートは、ABAC で保護されたテーブルにアクセスできません。 古いランタイムで実行し続けるために特定のワークロードが必要な場合は、ABAC ポリシーを広範囲に適用するのではなく、特定のグループに適用します。 ポリシーを適用するユーザーまたはプリンシパルのみをそのグループに追加し、 EXCEPT句を使用して古いランタイムワークロードを実行するプリンシパルを除外します。グループ外のユーザーは、基となるテーブルへの完全なアクセス権を保持します。これにより、サポートされているランタイムへの移行中も、ワークロードは引き続きテーブルにアクセスできるようになります。

ビューに関するABACポリシー

ABAC ポリシーをビューに直接適用することはできません。 ただし、ユーザーが ABAC でテーブルを参照するビューをクエリする場合、 それらの ビューを介してデータにアクセスする際には、それらの条件が尊重されます。

基となるテーブルに対する ABAC 行フィルタと列マスクは、 セッションユーザーの ID 、つまりクエリを実行している人物を使用して評価されます。ユーザーは、基本テーブル上のABACで定義された、アクセス権限のある行と列の値のみを見ることができます。 基本テーブル上で。 基本テーブルへのアクセスチェックと依存関係へのアクセスチェックは、ビュー所有者のIDを使用するため、ユーザーは基となるテーブルに対する直接的な権限がなくてもビューを照会できます。

注記

ABAC を持つテーブルが関数を介してアクセスされる場合にも、同じセッションユーザー ID モデルが適用されます。

セッションユーザーIDモデルは、ABACの一般提供版リリースと同時に導入されました。従来、ポリシーの評価はビュー所有者または関数定義者のIDを使用して行われていました。詳細については、 2026 年 4 月のリリースノートを参照してください。

ABACのマテリアライズドビューとストリーミングテーブルに関するポリシー

パイプラインがマテリアライズドビューまたはストリーミングテーブルを更新する際、パイプラインの所有者またはランのIDを使用してポリシーを評価します。そのIDがABACポリシーの対象である場合、マテリアライズドビューまたはストリーミングテーブルには、マスクまたはフィルター処理されたデータが永続的に含まれます。これを回避するには、パイプラインの更新中に読み取られるすべてのテーブルに関連付けられたABACポリシーの EXCEPT 句に、パイプライン所有者またはランとしてのIDを追加します。TO 句を使用して、マスクまたはフィルター処理されたデータを受け取るユーザーとグループを指定します。

ABACポリシーを含むOpenSharingテーブル、またはそれらを参照するビュー

ABACポリシーが割り当てられたテーブル、またはABACポリシーが割り当てられたテーブルを参照するビューは、共有所有者がそのポリシーから免除されている場合(EXCEPT句に記載されている場合)に限り、OpenSharingを介してのみ共有できます。ポリシーは、受信者のアクセス権を管理するものではありません。受領者は、共有テーブルに独自のABACポリシーを適用することで、自身の側でアクセス制御を実施できます。

OpenSharing を ABAC とともに使用する方法について詳しくは、OpenSharing と ABAC をご覧ください。

ABAC ポリシーを使用したテーブルのタイムトラベルとクローン作成

ABAC ポリシーは履歴テーブルのスナップショットに対して評価できないため、アクティブな行フィルターまたは列マスクを持つテーブルではタイムトラベル クエリが失敗します。 深いクローンと浅いクローンも、ABAC ポリシーのあるテーブルではサポートされていません。

これらの操作を有効にするには、サービスプリンシパルまたはグループを作成し、それをポリシーのEXCEPT句に追加します。ポリシーは免除されたプリンシパルに対しては評価されないため、これらの操作は実行できます。

重要

免除された校長は、フィルタリングもマスクもされていないデータを見ることができる。ETLやパイプラインワークロードに使用されるサービスプリンシパルなど、信頼できるIDのみを除外します。

例えば、次のポリシーでは、タイムトラベルクエリやクローン操作を実行できるユーザーetl_service_principalを除くすべてのユーザーのPII列をマスクします。

SQL
CREATE POLICY mask_pii
ON CATALOG prod
COLUMN MASK prod.governance.mask_value
TO `account users`
EXCEPT `etl_service_principal`
FOR TABLES
MATCH COLUMNS
has_tag_value('pii', 'ssn') AS ssn
ON COLUMN ssn;

AI SearchインデックスとABACポリシー

そのテーブルから作成されたAI Searchインデックスには、ソーステーブルのABACポリシーは適用されません。インデックスはソーステーブルからすべての行を同期し、クエリの処理時に行フィルターまたは列マスクのポリシーを適用しません。

列マスクが設定されているテーブルの場合、同期する列の設定を使用して、マスクされた列をインデックスから除外できます。

同一ユーザーに対して、同じテーブルまたは列に複数のポリシーが存在する

特定のテーブルと特定のユーザーに対しては、解決できる行フィルタは 1 つだけです。また、特定の列と特定のユーザーに対しては、解決できる列マスクは 1 つだけです。 複数のポリシーを定義できますが、ユーザーがテーブルをクエリするときは、1 つのポリシーの条件のみが一致する必要があります。 同じユーザー、テーブル、または列に対して複数の異なる行フィルターまたは列マスクが適用された場合、Databricks はアクセスをブロックし、エラーを返します。同じ引数を持つ同じ行フィルタまたは列マスクUDFに解決される場合、複数のポリシーが許可されます。

詳細については、 「複数のフィルターとマスクに関するルール」を参照してください。

専用コンピュート上のABAC

専用コンピュートでの ABAC の制限については、 「制限事項」を参照してください。

ABACとテーブルレベルの行フィルターおよび列マスクに共通する制限事項

ABAC とテーブルレベルの行フィルターおよび列マスクの両方に適用される行フィルターおよび列マスクの一般的な制限については、 「制限事項」を参照してください。