Partage delta et ABAC

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

Prerequisites

  • Databricks Runtime 16.4 ou version supérieure, ou calcul sans serveur.
  • Autorisations d’administrateur de compte ou d’administrateur d’espace de travail (pour créer des balises régies).
  • MANAGE autorisation sur le catalogue ou le schéma cible.
  • EXECUTE sur les UDF.
  • Partage delta configuré entre le fournisseur et le destinataire. Consultez Qu’est-ce que le Delta Sharing ?.

Partage de tables protégées par des stratégies ABAC

Les responsables de partage peuvent partager des tables protégées par des politiques ABAC via Delta Sharing s'ils remplissent ces deux conditions :

  1. Ils disposent des autorisations de partage Delta requises.
  2. Ils sont exemptés de la politique ABAC (répertoriée dans la clause EXCEPT).

L’exemple suivant montre une stratégie côté fournisseur où le propriétaire du partage est exempté :

-- 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 stratégie 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 du côté du fournisseur, le destinataire voit par défaut les données non filtrées ou non masquées. Les destinataires peuvent mettre en œuvre leurs propres stratégies ABAC sur les tables partagées afin de renforcer le contrôle d’accès de leur côté.

Partage de vues protégées par les stratégies ABAC

Les propriétaires de partage peuvent également partager des vues qui font référence à des tables de base protégées par ABAC. Comme avec les tables partagées directement, le propriétaire du partage doit être exempt des politiques ABAC sur les tables sous-jacentes.

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

Si vous partagez des vues avant le 23 avril 2026, vous devrez peut-être mettre à jour vos stratégies ABAC. Avant cette date, le propriétaire de la vue devait être exempté des politiques sur les tables sous-jacentes. À compter du 23 avril 2026, l'actionnaire doit être exempté plutôt. Si Databricks vous a contacté en tant que client potentiellement impacté, vous avez jusqu’au 22 juillet 2026 pour mettre à jour vos EXCEPT clauses.

Vues locales des destinataires sur des tables partagées

Étant donné que les stratégies ABAC ne peuvent être définies que sur des tables, et non sur des vues, si vous avez besoin que les utilisateurs finaux 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 stratégies ABAC sur celles-ci. Le destinataire crée des vues localement sur les tables partagées, et les stratégies sur les tables de base sont respectées lorsque les données sont accessibles via ces vues. Vous n’avez pas besoin de partager des vues côté fournisseur dans ce cas.

Cette approche fonctionne comme suit :

  1. Partagez uniquement les tables de base, et non les vues. Côté destinataire, les tables partagées apparaissent dans un schéma de partage delta en lecture seule.
  2. Appliquez des stratégies ABAC aux tables sources côté fournisseur et aux tables partagées côté destinataire. La stratégie du fournisseur contrôle l’accès côté fournisseur. Le destinataire crée une stratégie pour contrôler l’accès des utilisateurs côté destinataire.
  3. Créez des vues sur le destinataire en haut des tables de base partagées dans un schéma distinct. Étant donné que les schémas de partage Delta sont en lecture seule, les vues locales des destinataires doivent être créées dans un autre schéma. Si vous définissez des stratégies ABAC sur les tables Delta Sharing, ces stratégies sont respectées lorsque les utilisateurs accèdent aux données via les vues locales du destinataire.

Vues locales du destinataire de Delta Sharing

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