Compartilhamento Delta e ABAC

Você pode compartilhar tabelas e exibições protegidas por políticas ABAC por meio do Delta Sharing se o proprietário do compartilhamento estiver isento das políticas do lado do provedor. Esta página aborda como compartilhar tabelas com filtros de linha e máscaras de coluna e como lidar com exibições quando você precisa impor políticas no 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 administrador de espaço de trabalho (para criar tags reguladas).
  • MANAGE permissão no catálogo ou esquema de destino.
  • EXECUTE nas UDFs.
  • Compartilhamento Delta configurado entre o provedor e o destinatário. Confira O que é o Compartilhamento Delta?.

Compartilhando tabelas protegidas por políticas ABAC

Os proprietários de ações poderão compartilhar tabelas protegidas por políticas do ABAC através do Delta Sharing se atenderem às duas condições:

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

O exemplo a seguir mostra uma política do provedor na qual o proprietário do compartilhamento é 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 provedor não rege o acesso do destinatário. Como o proprietário do compartilhamento está isento da política do lado do provedor, o destinatário vê dados não filtrados ou desmascarados por padrão. Os destinatários podem aplicar suas próprias políticas ABAC a tabelas compartilhadas para impor o controle de acesso do seu lado.

Visualizações de compartilhamento protegidas por políticas ABAC

Os proprietários de compartilhamento também podem compartilhar exibições que fazem referência a tabelas base protegidas pelo ABAC. Assim como no compartilhamento direto de tabelas, o proprietário do compartilhamento 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`;

Observação

Se você estava compartilhando visões antes de 23 de abril de 2026, talvez seja necessário atualizar suas políticas ABAC. Antes dessa data, o proprietário da visualização precisava ser isento de políticas nas tabelas subjacentes. A partir de 23 de abril de 2026, o proprietário da ação deve, ao invés disso, ser isento. Se o Databricks tiver contatado você como um cliente potencialmente afetado, você terá até 22 de julho de 2026 para atualizar suas EXCEPT cláusulas.

Visualizações locais do destinatário em tabelas compartilhadas

Como as políticas ABAC só podem ser definidas em tabelas, e não em visões, se você precisar que os usuários do lado do destinatário consumam dados através de visões e os dados confidenciais precisarem ser protegidos, compartilhe as tabelas base e defina políticas ABAC nelas. O destinatário cria exibições localmente sobre as tabelas compartilhadas e as políticas nas tabelas base são respeitadas quando os dados são acessados por meio dessas exibições. Neste caso, você não precisa compartilhar exibições do lado do provedor.

Essa abordagem funciona da seguinte maneira:

  1. Compartilhe apenas as tabelas base, não as exibições. No lado do destinatário, as tabelas compartilhadas aparecem em um esquema delta de compartilhamento somente leitura.
  2. Aplique políticas ABAC às tabelas de origem no lado do provedor e às tabelas compartilhadas no lado do destinatário. A política do provedor controla o acesso no lado do provedor. O destinatário cria uma política para controlar o acesso dos usuários no lado do destinatário.
  3. Crie exibições no destinatário na parte superior das tabelas base compartilhadas em um esquema separado. Como os esquemas de compartilhamento Delta são somente leitura, as exibições locais do destinatário devem ser criadas em um esquema diferente. Se você definir políticas ABAC nas tabelas Delta Sharing, essas políticas serão respeitadas quando os usuários acessarem os dados por meio das vistas locais do destinatário.

Visualizações locais do receptor do compartilhamento Delta

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