Pular para o conteúdo principal

Compartilhamento aberto e ABAC

Você pode compartilhar tabelas e views protegidas por políticas ABAC através do OpenSharing se o proprietário do compartilhamento for isento das políticas por parte do fornecedor. Esta página aborda como compartilhar tabelas com filtros de linha e máscaras de coluna e como lidar com exibições quando for necessário impor políticas no lado do destinatário.

Pré-requisitos

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

Compartilhamento de tabelas protegidas por políticas ABAC

Proprietários de compartilhamento podem compartilhar tabelas protegidas por políticas ABAC por meio do OpenSharing desde que atendam a estas duas condições:

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

O exemplo a seguir mostra uma política do lado do provedor onde o proprietário do compartilhamento é 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 governa 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 não mascarados por default. Os destinatários podem aplicar suas próprias políticas ABAC a tabelas compartilhadas para impor o controle de acesso do lado deles.

Compartilhamento de views protegidas por políticas ABAC

Os proprietários de compartilhamento também podem compartilhar views que fazem referência a tabelas base protegidas por ABAC. Assim como ao compartilhar tabelas diretamente, o proprietário do compartilhamento deve ser isento de 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ê estava compartilhando views antes de 23 de abril de 2026, talvez seja necessário atualizar suas políticas ABAC. Antes desta data, o **proprietário da view** precisava ser isento das políticas nas tabelas subjacentes. A partir de 23 de abril de 2026, o **proprietário do compartilhamento** deverá ser isento. Se a Databricks o contatou como um cliente potencialmente impactado, você tem até 22 de julho de 2026 para atualizar suas cláusulas EXCEPT.

Views locais do destinatário sobre tabelas compartilhadas

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

Essa abordagem funciona da seguinte forma:

  1. Compartilhe apenas as tabelas base, não as views. No lado do destinatário, as tabelas compartilhadas aparecem em um esquema de compartilhamento delta somente para leitura.
  2. Aplicar 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 de usuários no lado do destinatário.
  3. Crie views no destinatário sobre as tabelas base compartilhadas em um esquema separado. Como os esquemas do OpenSharing são somente leitura, as visualizações locais do destinatário devem ser criadas em um esquema diferente. Se as políticas ABAC forem definidas nas tabelas OpenSharing, essas políticas serão respeitadas quando os usuários acessarem os dados através das views locais do destinatário.

Views locais do destinatário do OpenSharing

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;