デルタ・シェアリングとABAC

プロバイダー側で共有所有者がポリシーが適用されていない場合、Delta Sharing を通じて ABAC ポリシーで保護されたテーブルとビューを共有できます。 このページでは、行フィルターと列マスクを使用してテーブルを共有する方法と、受信者側でポリシーを適用する必要がある場合にビューを処理する方法について説明します。

前提条件

  • Databricks Runtime 16.4 以降、またはサーバーレス コンピューティング。
  • アカウント管理者またはワークスペース管理者のアクセス許可 (管理タグを作成するため)。
  • MANAGE ターゲット カタログまたはスキーマに対するアクセス許可。
  • EXECUTE UDF に対して
  • プロバイダーと受信者の間で設定されたデルタ共有。 「Delta Sharing とは」を参照してください。

ABAC ポリシーによって保護されたテーブルの共有

条件を両方満たしているディストリビューターは、Delta Sharing を使用して、ABAC ポリシーで保護されたテーブルを共有できます。

  1. ユーザーは、必要なデルタ共有のアクセス許可を持っています。
  2. これらのポリシーは ABAC ポリシーから除外されます ( EXCEPT 句に記載されています)。

次の例は、共有所有者が除外されるプロバイダー側ポリシーを示しています。

-- Provider: row filter policy with the share owner exempted
CREATE POLICY hide_eu_customers
ON CATALOG provider_catalog
ROW FILTER hide_eu
TO `account users`
EXCEPT 'share_owner_group'
FOR TABLES
MATCH COLUMNS has_tag('geo_region') AS region
USING COLUMNS (region);

-- Add the table to the share
CREATE SHARE employees_share;
ALTER SHARE employees_share ADD TABLE provider_catalog.hr.employees;
GRANT SELECT ON SHARE employees_share TO RECIPIENT `recipient_org`;

プロバイダーの ABAC ポリシーでは、受信者のアクセスは管理されません。 共有所有者はプロバイダー側ポリシーから除外されるため、受信者には既定でフィルター処理されていないデータまたはマスクされていないデータが表示されます。 受信者は、独自の ABAC ポリシーを共有テーブルに適用して、自分の側でアクセス制御を適用できます。

ABAC ポリシーによって保護されたビューの共有

共有所有者は、ABAC で保護されたベース テーブルを参照するビューを共有することもできます。 直接テーブルを共有する場合と同様に、共有所有者は基になるテーブルの ABAC ポリシーから除外する必要があります。

-- Provider: row filter policy with the share owner exempted
CREATE POLICY hide_eu_customers
ON CATALOG provider_catalog
ROW FILTER hide_eu
TO `account users`
EXCEPT 'share_owner_group'
FOR TABLES
MATCH COLUMNS has_tag('geo_region') AS region
USING COLUMNS (region);

-- Add the view to the share
ALTER SHARE employees_share ADD VIEW provider_catalog.hr.employees_view AS hr.employees_view;
GRANT SELECT ON SHARE employees_share TO RECIPIENT `recipient_org`;

Note

2026 年 4 月 23 日より前にビューを共有していた場合は、ABAC ポリシーの更新が必要になることがあります。 この日付より前は、 ビュー所有者 が基になるテーブルのポリシーから除外される必要があります。 2026 年 4 月 23 日より、 共有所有者 は除外される必要があります。 影響を受ける可能性のある顧客として Databricks から連絡を受けた場合は、2026 年 7 月 22 日まで、 EXCEPT 句を更新する必要があります。

共有テーブルに対する受信者ローカル ビュー

ABAC ポリシーはビューではなくテーブルでのみ設定できるため、受信者側のユーザーがビューを介してデータを使用する必要があり、機密データを保護する必要がある場合は、基本テーブルを共有し、それらのテーブルに ABAC ポリシーを設定します。 受信者は共有テーブルに対してビューをローカルに作成し、これらのビューを介してデータにアクセスすると、ベース テーブルのポリシーが尊重されます。 この場合、プロバイダー側のビューを共有する必要はありません。

この方法は次のように機能します。

  1. ビューではなく、ベース テーブルのみを共有します。 受信者側では、共有テーブルは読み取り専用の差分共有スキーマに表示されます。
  2. ABAC ポリシーをプロバイダー側のソース テーブルと受信者側の共有テーブルに適用します。 プロバイダーのポリシーは、プロバイダー側のアクセスを制御します。 受信者は、受信者側のユーザーのアクセスを制御するポリシーを作成します。
  3. 別のスキーマの共有ベース テーブルの上に受信者にビューを作成します。 Delta Sharingスキーマは読み取り専用であるため、ビューを受信者側のローカルスキーマで作成する必要があります。 差分共有テーブルに ABAC ポリシーを設定した場合、ユーザーが受信者ローカル ビューを介してデータにアクセスするときに、これらのポリシーが適用されます。

デルタ共有受信者のローカルビュー

-- Recipient: apply an ABAC policy to the shared table
CREATE POLICY hide_eu_customers
ON CATALOG recipient_catalog
ROW FILTER hide_eu
TO `account users`
EXCEPT 'recipient_admins'
FOR TABLES
MATCH COLUMNS has_tag('geo_region') AS region
USING COLUMNS (region);

-- Create a view in a separate schema (delta share schema is read-only)
CREATE VIEW recipient_catalog.analytics.employees_view AS
  SELECT * FROM recipient_catalog.delta_share_schema.employees;