OpenSharing e ABAC

È possibile condividere tabelle e viste protette da criteri ABAC tramite OpenSharing se il proprietario della condivisione è esente da tali criteri dal lato del provider. Questa pagina illustra come condividere tabelle con filtri di riga e maschere di colonna e come gestire le visualizzazioni quando è necessario applicare criteri sul lato destinatario.

Prerequisites

  • Databricks Runtime 16.4 o versione successiva, oppure calcolo senza server.
  • Autorizzazioni di amministratore dell'account o amministratore dell'area di lavoro (per creare tag regolamentati).
  • MANAGE autorizzazione per il catalogo o lo schema di destinazione.
  • EXECUTE nelle funzioni definite dall'utente.
  • OpenSharing configurato tra il provider e il destinatario. Vedere Che cos'è OpenSharing?.

Condivisione di tabelle protette dai criteri di controllo degli accessi basati sugli attributi

I proprietari delle condivisioni possono condividere le tabelle protette da criteri ABAC tramite OpenSharing se soddisfano entrambe queste condizioni:

  1. Dispongono delle autorizzazioni OpenSharing necessarie.
  2. Sono esenti dalle politiche ABAC (elencate nella clausola EXCEPT).

L'esempio seguente mostra una politica dal lato del provider in cui il proprietario della condivisione viene esentato.

-- 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 politica ABAC del provider non regola l'accesso del destinatario. Poiché il titolare della condivisione è esente dalla politica del provider, il destinatario visualizza i dati non mascherati o non filtrati per impostazione predefinita. I destinatari possono applicare i propri criteri ABAC alle tabelle condivise per imporre il controllo di accesso dalla propria parte.

Condivisione delle visualizzazioni protette dai criteri di controllo degli accessi in base al ruolo

I titolari della condivisione possono anche condividere visualizzazioni che fanno riferimento a tabelle di base protette da un controllo degli accessi basato sugli attributi (ABAC). Come per la condivisione diretta delle tabelle, il proprietario della condivisione deve essere esente dai criteri ABAC nelle tabelle sottostanti.

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

Se si erano condivise delle visualizzazioni prima del 23 aprile 2026, potrebbe essere necessario aggiornare le politiche ABAC. Prima di questa data, il proprietario della vista doveva essere esonerato dalle politiche delle tabelle sottostanti. A partire dal 23 aprile 2026, l'azionista deve invece essere esente. Se Databricks ha contattato l'utente come cliente potenzialmente interessato, ha tempo fino al 22 luglio 2026 per aggiornare le EXCEPT clausole.

Viste locali dei destinatari su tabelle condivise

Poiché i criteri ABAC possono essere impostati solo sulle tabelle e non sulle viste, se è necessario che gli utenti lato destinatario utilizzino i dati attraverso viste e i dati sensibili devono essere protetti, condividere le tabelle di base e impostare i criteri ABAC su di esse. Il destinatario crea visualizzazioni in locale sulle tabelle condivise e i criteri nelle tabelle di base vengono rispettati quando si accede ai dati tramite tali viste. In questo caso non è necessario condividere i punti di vista del provider.

Questo approccio funziona come segue:

  1. Condividere solo le tabelle di base, non le viste. Sul lato destinatario, le tabelle condivise vengono visualizzate in uno schema di condivisione differenziale di sola lettura.
  2. Applicare i criteri ABAC alle tabelle di origine sul lato provider e alle tabelle condivise sul lato destinatario. La politica del fornitore controlla l'accesso sul lato del fornitore. Il destinatario crea un criterio per controllare l'accesso per gli utenti sul lato destinatario.
  3. Creare viste per il destinatario sopra le tabelle di base condivise in uno schema separato. Poiché gli schemi OpenSharing sono di sola lettura, le viste locali dei destinatari devono essere create in uno schema diverso. Se nelle tabelle OpenSharing sono impostati criteri ABAC, tali criteri vengono rispettati quando gli utenti accedono ai dati tramite le viste locali del destinatario.

Visualizzazioni locali del destinatario OpenSharing

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