Aller au contenu principal

OpenSharing et ABAC

Vous pouvez partager les tables et les vues protégées par des politiques ABAC via OpenSharing si le propriétaire du partage est exempté des politiques côté fournisseur. Cette page explique comment partager des tables avec des filtres de ligne et des masques de colonne, et comment gérer les vues lorsque vous devez appliquer des politiques côté destinataire.

Prérequis

  • Databricks Runtime 16.4 ou version supérieure, ou compute serverless.
  • Autorisations d'administrateur de compte ou d'administrateur de Workspace (pour créer des tags gouvernés).
  • MANAGE autorisation sur le catalogue ou le schéma cible.
  • EXECUTE sur les UDF.
  • OpenSharing configuré entre le fournisseur et le destinataire. Consultez Qu'est-ce qu'OpenSharing ?.

Partage de tables protégées par des politiques ABAC

Les propriétaires de partage peuvent partager des tables sécurisées par des politiques ABAC via OpenSharing s'ils remplissent ces deux conditions :

  1. Ils disposent des autorisations OpenSharing requises.
  2. Ils sont exemptés des politiques ABAC (listées dans la clause EXCEPT).

L'exemple suivant présente une politique côté fournisseur où le propriétaire du partage est exempté :

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

La politique ABAC du fournisseur ne régit pas l'accès du destinataire. Étant donné que le propriétaire du partage est exempté de la politique côté fournisseur, le destinataire voit les données non filtrées ou non masquées par **default**. Les destinataires peuvent appliquer leurs propres politiques ABAC aux tables partagées pour appliquer le contrôle d’accès de leur côté.

Partage de vues protégées par des politiques ABAC

Les propriétaires de partages peuvent également partager des vues qui référencent des tables de base protégées par ABAC. À l'instar du partage direct de tables, le propriétaire du partage doit être exempté des politiques ABAC sur les tables sous-jacentes.

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`;
remarque

Si vous partagiez des vues avant le 23 avril 2026, vous devrez peut-être mettre à jour vos politiques ABAC. Avant cette date, le propriétaire de la vue devait être exempté des politiques relatives aux tables sous-jacentes. À partir du 23 avril 2026, le **propriétaire du partage** doit être exempté plutôt. Si Databricks vous a contacté en tant que client potentiellement concerné, vous avez jusqu’au 22 juillet 2026 pour mettre à jour vos clauses EXCEPT.

Vues locales du destinataire sur les tables partagées

Puisque les politiques ABAC ne peuvent être définies que sur des tables, et non sur des vues, si vous avez besoin que les utilisateurs côté destinataire consomment des données via des vues et que les données sensibles doivent être protégées, partagez les tables de base et définissez des politiques ABAC sur celles-ci. Le destinataire crée des vues localement sur les tables partagées, et les politiques des tables de base sont respectées lorsque les données sont consultées via ces vues. Vous n’avez pas besoin de partager les vues côté fournisseur dans ce cas.

Cette approche fonctionne comme suit :

  1. Partagez uniquement les tables de base, pas les vues. Du côté du destinataire, les tables partagées apparaissent dans un schéma Delta Share en lecture seule.
  2. Appliquez les politiques ABAC aux tables source côté fournisseur et aux tables partagées côté destinataire. La politique d'accès du fournisseur gère l'accès côté fournisseur. Le destinataire crée une politique pour contrôler l'accès pour les utilisateurs côté destinataire.
  3. Créez des vues chez le destinataire au-dessus des tables de base partagées dans un schéma distinct. Étant donné que les schémas OpenSharing sont en lecture seule, les vues locales du destinataire doivent être créées dans un schéma différent. Si vous définissez des politiques ABAC sur les tables OpenSharing, ces politiques sont respectées lorsque les utilisateurs accèdent aux données via les vues locales du destinataire.

Vues locales du destinataire OpenSharing

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;