オープン共有と ABAC
プロバイダー側で共有所有者がポリシーの適用を免除されている場合、ABAC ポリシーによって保護されているテーブルとビューを OpenSharing を介して共有できます。このページでは、行フィルターと列マスクを使用してテーブルを共有する方法と、受信者側でポリシーを適用する必要がある場合にビューを処理する方法について説明します。
前提条件
- Databricks Runtime 16.4 以降、またはサーバレスコンピュート。
- アカウント管理者またはワークスペース管理者の権限(管理タグを作成するため)。
MANAGEターゲットカタログまたはスキーマに対する権限。EXECUTEUDFについて。- OpenSharingはプロバイダーと受信者の間で構成されています。「オープン共有とは何ですか?」をご覧ください。
ABACポリシーによって保護されたテーブルの共有
共有所有者は、以下の両方の条件を満たしている場合、OpenSharing を介して ABAC ポリシーによって保護されたテーブルを共有できます。
- 必要なOpenSharing権限が付与されています。
- それらは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`;
2026年4月23日より前にビューを共有していた場合、ABACポリシーを更新する必要がある場合があります。この日付より前は、基礎となるテーブルのポリシーから ビュー所有者 が免除される必要がありました。2026年4月23日以降は、代わりに 共有所有者 が免除される必要があります。Databricksから影響を受ける可能性のある顧客として連絡があった場合、EXCEPT条項を更新する期限は2026年7月22日です。
共有テーブル上の受信者ローカルビュー
ABACポリシーはビューではなくテーブルにのみ設定できるため、受信者側のユーザーがビューを介してデータを消費する必要があり、機密データを保護する必要がある場合は、ベーステーブルを共有し、それらにABACポリシーを設定してください。受信者は共有テーブル上にローカルでビューを作成し、それらのビューを介してデータがアクセスされる際には、ベーステーブルのポリシーが尊重されます。この場合、プロバイダー側のビューを共有する必要はありません。
このアプローチは次のとおりです:
- ベーステーブルのみを共有し、ビューは共有しないでください。 受信者側では、共有テーブルは読み取り専用の Delta Sharing スキーマに表示されます。
- プロバイダー側のソーステーブルと、受信者側の共有テーブルにABACポリシーを適用します。 プロバイダーのポリシーは、プロバイダー側でアクセスを制御します。受信者は、受信者側のユーザーのアクセスを制御するポリシーを作成します。
- 受信側で、個別のスキーマにて共有ベーステーブル上にビューを作成します。 OpenSharingスキーマは読み取り専用であるため、受信者側のビューは別のスキーマに作成する必要があります。OpenSharingテーブルに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;