OpenSharing y ABAC

Puede compartir tablas y vistas protegidas por directivas de ABAC a través de OpenSharing si el propietario del recurso compartido está exento de las directivas del lado del proveedor. En esta página se explica cómo compartir tablas con filtros de fila y máscaras de columna y cómo controlar las vistas cuando necesite aplicar directivas en el lado del destinatario.

Prerequisites

  • Databricks Runtime 16.4 o superior, o computación sin servidor.
  • Permisos de administrador de cuenta o administrador del área de trabajo (para crear etiquetas reguladas).
  • Permiso MANAGE en el catálogo o esquema de destino.
  • EXECUTE en las funciones definidas por el usuario (UDF).
  • OpenSharing está configurado entre el proveedor y el destinatario. Consulte ¿Qué es OpenSharing?.

Uso compartido de tablas protegidas por directivas de ABAC

Los propietarios de recursos compartidos pueden compartir tablas protegidas por directivas de ABAC a través de OpenSharing si cumplen ambas condiciones:

  1. Tienen los permisos de OpenSharing necesarios.
  2. Están exentos de las directivas de ABAC (enumeradas en la EXCEPT cláusula ).

En el ejemplo siguiente se muestra una directiva del lado proveedor en la que el propietario del recurso compartido está exento:

-- 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 directiva de ABAC del proveedor no rige el acceso del destinatario. Dado que el propietario del recurso compartido está exento de la directiva del lado proveedor, el destinatario ve datos sin filtrar o sin enmascarar de forma predeterminada. Los destinatarios pueden aplicar sus propias directivas ABAC a las tablas compartidas para aplicar el control de acceso por su parte.

Compartición de vistas protegidas por políticas de ABAC

Los propietarios del recurso compartido también pueden compartir vistas que hagan referencia a tablas base protegidas por ABAC. Al igual que con el uso compartido directo de tablas, el propietario del recurso compartido debe estar exento de las directivas ABAC sobre las tablas subyacentes.

-- 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 compartías vistas antes del 23 de abril de 2026, es posible que tengas que actualizar tus directivas ABAC. Antes de esta fecha, el propietario de la vista debía estar exento de las directivas sobre las tablas subyacentes. A partir del 23 de abril de 2026, el accionista debe estar exento en su lugar. Si Databricks se ha puesto en contacto con usted como cliente potencialmente afectado, tiene hasta el 22 de julio de 2026 para actualizar las EXCEPT cláusulas.

Vistas locales del destinatario sobre tablas compartidas

Dado que las directivas de ABAC solo se pueden establecer en tablas, no en vistas, si necesita que los usuarios del lado destinatario consuman datos a través de vistas y datos confidenciales deben protegerse, comparta las tablas base y establezca directivas de ABAC en ellas. El destinatario crea vistas localmente sobre las tablas compartidas y las directivas de las tablas base se respetan cuando se accede a los datos a través de esas vistas. En este caso, no es necesario compartir vistas del lado proveedor.

Este enfoque funciona de la siguiente manera:

  1. Comparta solo las tablas base, no las vistas. En el lado del destinatario, las tablas compartidas aparecen en un esquema de recurso compartido delta de solo lectura.
  2. Aplique directivas de ABAC a las tablas de origen en el lado del proveedor y a las tablas compartidas en el lado del destinatario. La política del proveedor controla el acceso en el lado del proveedor. El destinatario crea una directiva para controlar el acceso de los usuarios en el lado del destinatario.
  3. Crea vistas en el destinatario sobre las tablas base compartidas en un esquema independiente. Dado que los esquemas openSharing son de solo lectura, las vistas locales de destinatario deben crearse en un esquema diferente. Si establece directivas de ABAC en las tablas OpenSharing, estas directivas se respetan cuando los usuarios acceden a los datos a través de las vistas locales del destinatario.

Vistas locales del destinatario de 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;