Pular para o conteúdo principal

Delta Sharing e ABAC

É possível compartilhar tabelas e visualizações protegidas por políticas ABAC por meio Delta Sharing , desde que o proprietário do compartilhamento esteja isento das políticas no lado do provedor. Esta página aborda como compartilhar tabelas com filtros de linha e máscaras de coluna, e como lidar com a visualização quando você precisa aplicar políticas no lado do destinatário.

Pré-requisitos

  • Databricks Runtime 16.4 ou superior, ou compute serverless .
  • Permissões de administrador da conta ou administrador workspace (para criar tags governadas).
  • MANAGE permissão no catálogo ou esquema de destino.
  • EXECUTE nas UDFs.
  • Delta Sharing configurado entre o provedor e o destinatário. Veja O que é Delta Sharing?

tabelas compartilhamento protegidas por políticas ABAC

Os proprietários de compartilhamentos podem compartilhar tabelas protegidas por políticas ABAC por meio Delta Sharing se atenderem a ambas as seguintes condições:

  1. Eles possuem as permissões Delta Sharing necessárias.
  2. Eles estão isentos das políticas ABAC (listadas na cláusula EXCEPT ).

O exemplo a seguir mostra uma política do lado do provedor em que o proprietário da ação está isento:

SQL
-- 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 provedor, o destinatário vê os dados não filtrados ou não mascarados por default. Os destinatários podem aplicar suas próprias políticas ABAC às tabelas compartilhadas para impor o controle de acesso em seu próprio ambiente.

visualização de compartilhamento protegida pelas políticas ABAC

Os proprietários de compartilhamentos também podem compartilhar visualizações que fazem referência a tabelas base protegidas por ABAC. Assim como no compartilhamento direto de tabelas, o proprietário do compartilhamento deve estar isento das políticas ABAC nas tabelas subjacentes.

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

Se você tinha acesso ao compartilhamento antes de 23 de abril de 2026, talvez precise atualizar suas políticas ABAC. Antes dessa data, o proprietário daview precisava ser isento das políticas nas tabelas subjacentes. A partir de 23 de abril de 2026, o proprietário das ações deverá ser isento. Se a Databricks entrou em contato com você como um cliente potencialmente afetado, você tem até 22 de julho de 2026 para atualizar suas cláusulas EXCEPT .

Visão local do destinatário sobre tabelas compartilhadas

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

Essa abordagem funciona da seguinte maneira:

  1. Compartilhe apenas as tabelas base, não a visualização. Do lado do destinatário, as tabelas compartilhadas aparecem em um esquema de compartilhamento delta somente leitura.
  2. Aplique as 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 em seu próprio sistema.
  3. Crie uma visualização no destinatário com base nas tabelas base compartilhadas em um esquema separado. Como os esquemas Delta Sharing são somente leitura, a visualização local do destinatário deve ser criada 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 da visualização local do destinatário.

Visão local do beneficiário Delta Sharing

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