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

Delta SharingとABAC

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

前提条件

  • Databricks Runtime 16.4 以降、またはサーバレス コンピュート。
  • アカウント管理者またはワークスペース管理者権限(管理タグを作成するため)。
  • MANAGE 対象のカタログまたはスキーマに対する権限。
  • EXECUTE UDFについて。
  • プロバイダーと受信者の間でDelta Sharingが設定されています。 Delta Sharingとは何かをご覧ください。

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

株主は、ABACによって保護されたテーブルを共有できます。 以下の2つの条件を両方満たす場合、 Delta Sharingを通じて共有できます。

  1. 彼らは必要なDelta Sharing権限を持っています。
  2. これらはABACのポリシー( EXCEPT条項に記載)の適用対象外です。

以下の例は、株式所有者が免除されるプロバイダー側のポリシーを示しています。

SQL
-- 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の適用除外を受けなければなりません。 基となるテーブルに対して。

SQL
-- 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`;
注記

2026年4月23日より前に意見を共有していた場合は、ABACを更新する必要があるかもしれません。 。 この日付より前は、 ビューの所有者は 基となるテーブルに関するポリシーの適用除外を受ける必要がありました。2026年4月23日以降は、 株主が 免除対象とならなければならない。Databricksから影響を受ける可能性のある顧客として連絡を受けた場合、 EXCEPT条項を更新するための期限は2026年7月22日です。

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

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

このアプローチは次のように機能します。

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

Delta Sharingの受信者のローカルビュー

SQL
-- 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;