Partilha Delta e ABAC

Pode partilhar tabelas e vistas protegidas pelas políticas ABAC através do Delta Sharing, se o proprietário da partilha estiver isento das políticas no lado do fornecedor. Esta página explica como partilhar tabelas com filtros de linhas e máscaras de coluna e como lidar com as vistas quando é necessário aplicar políticas do lado do destinatário.

Pré-requisitos

  • Databricks Runtime 16.4 ou superior, ou computação sem servidor.
  • Permissões de administrador de conta ou de espaço de trabalho (para criar etiquetas governadas).
  • MANAGE Permissão sobre o catálogo ou esquema de destino.
  • EXECUTE sobre as UDFs.
  • Partilha Delta configurada entre o fornecedor e o destinatário. Consulte O que é Delta Sharing?.

Partilhar tabelas protegidas por políticas ABAC

Os acionistas podem partilhar tabelas garantidas pelas apólices ABAC através da Delta Sharing, se cumprirem ambas as condições:

  1. Eles têm as permissões de Partilha Delta necessárias.
  2. Estão isentos das políticas ABAC (listadas na EXCEPT cláusula).

O exemplo seguinte mostra uma apólice do lado do fornecedor onde o acionista está isento:

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

A política ABAC do fornecedor não regula o acesso do destinatário. Como o proprietário de ações está isento da política do lado do fornecedor, o destinatário vê dados não filtrados ou desmascarados por padrão. Os destinatários podem aplicar as suas próprias políticas ABAC às tabelas partilhadas para aplicar o controlo de acesso da sua parte.

Partilha de opiniões protegida pelas políticas ABAC

Os acionistas também podem partilhar opiniões que fazem referência a tabelas base protegidas pelo ABAC. Tal como nas tabelas de partilha direta, o acionista deve estar isento das políticas ABAC nas tabelas subjacentes.

-- 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 partilhava opiniões antes de 23 de abril de 2026, poderá precisar de atualizar as suas políticas do ABAC. Antes desta data, o proprietário da visualização precisava de estar isento das políticas aplicadas às tabelas subjacentes. A partir de 23 de abril de 2026, o acionista deve estar isento. Se a Databricks o contactou como cliente potencialmente afetado, tem até 22 de julho de 2026 para atualizar as suas EXCEPT cláusulas.

Perspetivas destinatário-local sobre tabelas partilhadas

Como as políticas ABAC só podem ser definidas em tabelas, não em vistas, se precisar que utilizadores do lado do destinatário consumam dados através de vistas e dados sensíveis devem ser protegidos, partilhe as tabelas base e defina políticas ABAC nelas. O destinatário cria vistas localmente sobre as tabelas partilhadas, e as políticas nas tabelas base são respeitadas quando os dados são acedidos através dessas vistas. Neste caso, não precisa de partilhar opiniões do lado do provedor.

Esta abordagem funciona da seguinte forma:

  1. Partilhe apenas as tabelas base, não as vistas. No lado do destinatário, as tabelas partilhadas aparecem num esquema delta share apenas de leitura.
  2. Aplique as políticas ABAC às tabelas de origem do lado do fornecedor e às tabelas partilhadas do lado do destinatário. A política do prestador controla o acesso do lado do prestador. O destinatário cria uma política para controlar o acesso dos utilizadores do lado do destinatário.
  3. Criar vistas no destinatário por cima das tabelas base partilhadas num esquema separado. Como os esquemas de Partilha Delta são apenas de leitura, as vistas locais do destinatário devem ser criadas num esquema diferente. Se definir políticas ABAC nas tabelas de Partilha Delta, estas políticas são respeitadas quando os utilizadores acedem aos dados através das vistas locais do destinatário.

Visualizações do destinatário locais do 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;