델타 공유 및 ABAC

공유 소유자가 공급자 쪽 정책에서 제외된 경우 델타 공유를 통해 ABAC 정책으로 보호되는 테이블 및 뷰를 공유할 수 있습니다. 이 페이지에서는 행 필터 및 열 마스크와 테이블을 공유하는 방법과 받는 사람 쪽에서 정책을 적용해야 할 때 보기를 처리하는 방법을 설명합니다.

사전 요구 사항

  • Databricks Runtime 16.4 이상 또는 서버리스 컴퓨팅
  • 계정 관리자 또는 작업 영역 관리자 권한(관리 태그 만들기)
  • MANAGE 대상 카탈로그 또는 스키마에 대한 사용 권한입니다.
  • EXECUTE UDF에 대해
  • 공급자와 받는 사람 간에 구성된 델타 공유입니다. Delta Sharing이란?을 참조하세요.

ABAC 정책으로 보호되는 테이블 공유

공유 소유자는 다음 두 조건을 모두 충족하는 경우 델타 공유를 통해 ABAC 정책으로 보호되는 테이블을 공유할 수 있습니다.

  1. 필요한 델타 공유 권한이 있습니다.
  2. 그들은 EXCEPT 절에 나열된 ABAC 정책들로부터 면제됩니다.

다음 예제에서는 공유 소유자가 제외되는 공급자 쪽 정책을 보여줍니다.

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

공급자의 ABAC 정책은 받는 사람의 액세스를 제어하지 않습니다. 공유 소유자는 공급자 쪽 정책에서 제외되므로 받는 사람은 기본적으로 필터링되지 않거나 마스크되지 않은 데이터를 볼 수 있습니다. 받는 사람은 공유 테이블에 자신의 ABAC 정책을 적용하여 액세스 제어를 적용할 수 있습니다.

ABAC 정책으로 보호되는 뷰 공유

공유 소유자는 ABAC로 보호되는 기본 테이블을 참조하는 보기를 공유할 수도 있습니다. 직접 공유 테이블과 마찬가지로 공유 소유자는 기본 테이블의 ABAC 정책에서 제외되어야 합니다.

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

메모

2026년 4월 23일 이전에 보기를 공유한 경우 ABAC 정책을 업데이트해야 할 수 있습니다. 이 날짜 이전에는 뷰 소유자가 기본 테이블의 정책에서 제외되어야 했습니다. 2026년 4월 23일부터 공유 소유자는 대신 면제되어야 합니다. Databricks가 잠재적으로 영향을 받을 수 있는 고객으로 연락한 경우, 2026년 7월 22일까지 EXCEPT 절항을 업데이트해야 합니다.

공유 테이블에 대한 수신자-로컬 보기

ABAC 정책은 뷰가 아닌 테이블에만 설정할 수 있으므로 뷰를 통해 데이터를 사용하는 받는 사람 쪽 사용자가 필요하고 중요한 데이터를 보호해야 하는 경우 기본 테이블을 공유하고 ABAC 정책을 설정합니다. 받는 사람은 공유 테이블을 통해 로컬로 보기를 만들고, 해당 뷰를 통해 데이터에 액세스할 때 기본 테이블의 정책이 적용됩니다. 이 경우 공급자 쪽 보기를 공유할 필요가 없습니다.

이 방법은 다음과 같이 작동합니다.

  1. 뷰가 아닌 기본 테이블만 공유합니다. 받는 사람 쪽에서 공유 테이블은 읽기 전용 델타 공유 스키마에 표시됩니다.
  2. 공급자 쪽의 원본 테이블과 받는 사람 쪽의 공유 테이블에 ABAC 정책을 적용합니다. 공급자의 정책은 공급자 쪽에서 액세스를 제어합니다. 받는 사람은 받는 사람 쪽의 사용자에 대한 액세스를 제어하는 정책을 만듭니다.
  3. 별도의 스키마에서 공유 기본 테이블 위에 있는 받는 사람에서 보기를 만듭니다. 델타 공유 스키마는 읽기 전용이므로 다른 스키마에서 받는 사람-로컬 뷰를 만들어야 합니다. 델타 공유 테이블에서 ABAC 정책을 설정하는 경우 사용자가 받는 사람-로컬 보기를 통해 데이터에 액세스할 때 이러한 정책이 적용됩니다.

델타 공유 수신자 로컬 보기

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