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

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

注記

このページでは、行フィルターおよび列マスクポリシーの要件、クォータ、および制限について説明します。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 on Views プレビューを有効にする必要があり、Databricks Runtime 19 以降を使用する必要があります。ワークスペースレベルのプレビューの管理を参照してください。

ビュー上のポリシーには、次の要件と制限が適用されます:

  • メトリクス ビューはサポートされていません :メトリクス ビューに ABAC ポリシーを適用することはできません。
  • 1つのクエリーでレイヤー化できるポリシーは最大20個です :ベーステーブルにポリシーを設定でき、その上に構築された各ビューに独自のポリシーを設定できます。クエリーがビューを読み取る場合、階層の各レベルですべての適用可能なポリシーが適用されます。適用されるポリシーが20個を超える場合、クエリーは失敗します。
  • CREATE OR REPLACE VIEWは管理タグと直接アタッチされたポリシーを削除します :ビューをCREATE OR REPLACEステートメントで置き換えると、ビューのメタデータが、管理タグおよび直接アタッチされたポリシーとともにクリアされます。メタデータを保持するには、代わりにALTER VIEWを使用してください。CREATE OR REPLACEを使用する場合は、後で管理タグとポリシーを再適用してください。
  • 管理タグが付いた列は、タグが削除されるまで削除できません : ベーステーブルと同様に、ビューの列を削除する前に、その列から管理タグを削除する必要があります。そうしないと、タグに依存するポリシーが誤って削除される可能性があります。
  • 受信者側で共有ビューにABACポリシーを適用することはできません :OpenSharingを介してビューを共有する場合、受信者はその共有ビューにABACポリシーを適用できません。受信者側でポリシーを適用するには、代わりにベーステーブルを共有し、共有テーブルに対するABACポリシーを設定した上で、受信者にそのベーステーブル上に受信者ローカルビューを作成してもらいます。「共有テーブル上の受信者ローカルビュー」を参照してください。

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

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

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

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

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

ABAC ポリシーを使用したテーブルのクローン作成​

ABACポリシーが設定されているテーブルでは、ディープクローンとシャロークローンはサポートされていません。テーブルをクローンするには、テーブルに適用されるすべてのポリシーの EXCEPT 句にリストされているService Principalまたはグループを使用します。

重要

免除された校長は、フィルタリングもマスクもされていないデータを見ることができる。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 とテーブルレベルの行フィルターおよび列マスクの両方に適用される行フィルターおよび列マスクの一般的な制限については、 「制限事項」を参照してください。