プロバイダー側で共有所有者がポリシーが適用されていない場合、Delta Sharing を通じて ABAC ポリシーで保護されたテーブルとビューを共有できます。 このページでは、行フィルターと列マスクを使用してテーブルを共有する方法と、受信者側でポリシーを適用する必要がある場合にビューを処理する方法について説明します。
前提条件
- Databricks Runtime 16.4 以降、またはサーバーレス コンピューティング。
- アカウント管理者またはワークスペース管理者のアクセス許可 (管理タグを作成するため)。
-
MANAGEターゲット カタログまたはスキーマに対するアクセス許可。 -
EXECUTEUDF に対して - プロバイダーと受信者の間で設定されたデルタ共有。 「Delta Sharing とは」を参照してください。
ABAC ポリシーによって保護されたテーブルの共有
条件を両方満たしているディストリビューターは、Delta Sharing を使用して、ABAC ポリシーで保護されたテーブルを共有できます。
- ユーザーは、必要なデルタ共有のアクセス許可を持っています。
- これらのポリシーは 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 ポリシーを適用する」を参照してください。
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 ポリシーを設定します。 受信者は共有テーブルに対してビューをローカルに作成し、これらのビューを介してデータにアクセスすると、ベース テーブルのポリシーが尊重されます。 この場合、プロバイダー側のビューを共有する必要はありません。
この方法は次のように機能します。
- ビューではなく、ベース テーブルのみを共有します。 受信者側では、共有テーブルは読み取り専用の差分共有スキーマに表示されます。
- ABAC ポリシーをプロバイダー側のソース テーブルと受信者側の共有テーブルに適用します。 プロバイダーのポリシーは、プロバイダー側のアクセスを制御します。 受信者は、受信者側のユーザーのアクセスを制御するポリシーを作成します。
- 別のスキーマの共有ベース テーブルの上に受信者にビューを作成します。 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;