중요합니다
이 기능은 공개 미리보기 단계에 있습니다.
이 자습서에서는 Unity 카탈로그에서 행 필터 및 열 마스크 ABAC(특성 기반 액세스 제어) 정책을 구성하는 방법을 소개합니다.
이 예제에서는 미국 분석 팀이 EU 고객 레코드 또는 SSN에 액세스할 수 없어야 합니다. 그러나 동일한 테이블의 다른 고객 및 고객 데이터에 액세스할 수 있어야 합니다. 이 자습서에는 다음 단계가 포함되어 있습니다.
- 관리 태그 만들기
- Unity 카탈로그, 스키마 및 테이블 만들기
- 열에 제어 태그 적용
- EU 회원국의 데이터를 숨기기 위한 UDF 만들기
- 행 필터 정책 만들기
- SSN을 숨기기 위한 UDF 만들기
- 열 마스크 정책을 만들기
- 정책을 사용하여 테이블 선택
ABAC 구성 데모는 Unity 카탈로그를 사용하여 ABAC(Attribute-Based Access Control) 검색을 참조하세요.
컴퓨팅 요구 사항
- Databricks Runtime 16.4 이상에서 컴퓨팅을 사용해야 합니다.
- 서버리스 컴퓨팅은 항상 ABAC에서 작동합니다.
이전 런타임을 실행하는 컴퓨팅은 ABAC로 보호되는 테이블에 액세스할 수 없습니다. 임시 해결 방법으로 특정 그룹에만 적용하도록 ABAC를 구성할 수 있습니다. 해당 그룹으로 제한하려는 사용자를 추가합니다. 그룹에 없는 사용자는 테이블에 계속 액세스할 수 있습니다.
1단계: 관리 태그 만들기
관리 태그를 만들려면 계정 수준에서 관리 태그 CREATE 권한이 있어야 합니다. 계정 및 작업 영역 관리자는 기본적으로 CREATE를 사용합니다.
Azure Databricks 작업 영역에서
을 클릭합니다.카탈로그.
관리 태그 > 단추를 클릭합니다.
관리 태그 만들기를 클릭합니다.
태그 키를 입력합니다
pii.관리 태그에 대한 설명을 입력합니다.
태그
ssn에 허용되는 값을 입력합니다address. 이러한 값만 이 태그 키에 할당할 수 있습니다.
만들기를 클릭합니다.
경고
태그 데이터는 일반 텍스트로 저장되며 전역적으로 복제될 수 있습니다. 리소스의 보안을 손상시킬 수 있는 태그 이름, 값 또는 설명자를 사용하지 마세요. 예를 들어 개인 정보나 중요한 정보가 포함된 태그 이름, 값 또는 설명자는 사용하지 마세요.
2단계: 고객 테이블 만들기
이러한 단계를 수행하려면 Unity 카탈로그 메타스토어에 대한 권한이 있어야 합니다 CREATE CATALOG . 사용 권한이 있는 스키마 CREATE TABLE 에서 테이블을 만들 수도 있습니다.
- 사이드바에서 +새로운>노트북을 클릭하세요.
- 전자 필기장 언어로 선택합니다
SQL. - 연결을 클릭하고 Notebook을 컴퓨팅 리소스에 연결합니다.
- Notebook에 다음 명령을 추가하고 실행합니다.
-- Create catalog (if not already exists)
CREATE CATALOG IF NOT EXISTS abac;
USE CATALOG abac;
-- Create schema
CREATE SCHEMA IF NOT EXISTS customers;
USE SCHEMA customers;
-- Create table
CREATE TABLE IF NOT EXISTS profiles (
First_Name STRING,
Last_Name STRING,
Phone_Number STRING,
Address STRING,
SSN STRING
)
USING DELTA;
-- Insert data
INSERT INTO profiles (First_Name, Last_Name, Phone_Number, Address, SSN)
VALUES
('John', 'Doe', '123-456-7890', '123 Main St, NY', '123-45-6789'),
('Jane', 'Smith', '234-567-8901', '456 Oak St, CA', '234-56-7890'),
('Alice', 'Johnson', '345-678-9012', '789 Pine St, TX', '345-67-8901'),
('Bob', 'Brown', '456-789-0123', '321 Maple St, FL', '456-78-9012'),
('Charlie', 'Davis', '567-890-1234', '654 Cedar St, IL', '567-89-0123'),
('Emily', 'White', '678-901-2345', '987 Birch St, WA', '678-90-1234'),
('Frank', 'Miller', '789-012-3456', '741 Spruce St, WA', '789-01-2345'),
('Grace', 'Wilson', '890-123-4567', '852 Elm St, NV', '890-12-3456'),
('Hank', 'Moore', '901-234-5678', '963 Walnut St, CO', '901-23-4567'),
('Ivy', 'Taylor', '012-345-6789', '159 Aspen St, AZ', '012-34-5678'),
('Liam', 'Connor', '111-222-3333', '12 Abbey Street, Dublin, Ireland EU', '111-22-3333'),
('Sophie', 'Dubois', '222-333-4444', '45 Rue de Rivoli, Paris, France Europe', '222-33-4444'),
('Hans', 'Müller', '333-444-5555', '78 Berliner Str., Berlin, Germany E.U.', '333-44-5555'),
('Elena', 'Rossi', '444-555-6666', '23 Via Roma, Milan, Italy Europe', '444-55-6666'),
('Johan', 'Andersson', '555-666-7777', '56 Drottninggatan, Stockholm, Sweden EU', '555-66-7777');
3단계: PII 열에 관리 태그 추가
- Notebook에 다음 명령을 추가하고 실행합니다.
-- Add the governed tag to ssn column
ALTER TABLE abac.customers.profiles
ALTER COLUMN SSN
SET TAGS ('pii' = 'ssn');
-- Add governed tag to address column
ALTER TABLE abac.customers.profiles
ALTER COLUMN Address
SET TAGS ('pii' = 'address');
4단계: EU 주소를 찾는 UDF 만들기
- Notebook에 다음 명령을 추가하고 실행합니다.
-- Determine if an address is not in the EU
CREATE OR REPLACE FUNCTION is_not_eu_address(address STRING)
RETURNS BOOLEAN
RETURN (
SELECT CASE
WHEN LOWER(address) LIKE '%eu%'
OR LOWER(address) LIKE '%e.u.%'
OR LOWER(address) LIKE '%europe%'
THEN FALSE
ELSE TRUE
END
);
이 UDF는 지정된 문자열이 유럽 또는 EU를 참조하는 것으로 보이지 않는지 확인합니다. 이러한 부분 문자열이 있으면 FALSE(EU 주소)를 반환합니다. 부분 문자열을 찾을 수 없는 경우 TRUE를 반환합니다(EU 주소가 아님).
5단계: 행 필터 정책 만들기
개체에 대한 정책을 만들려면 개체에 MANAGE 또는 개체의 소유권이 있어야 합니다.
정책에 UDF를 추가하려면 EXECUTE가 UDF에 있어야 하며, Unity 카탈로그에 등록되어 있어야 합니다.
을 클릭합니다.카탈로그.
이전에 만든
abac카탈로그를 클릭하세요.정책 탭을 클릭합니다.
새 정책을 클릭합니다.
일반:
-
이름에
hide_eu_customers를 입력합니다. - 설명의 경우 정책에 대한 설명을 입력합니다.
- 적용 대상...의 경우 정책이 적용되는 보안 주체를 찾아 선택하세요. 이 예제에서는 모든 계정 사용자 그룹을 사용할 수 있습니다.
- 제외...를 빈칸으로 둡니다.
-
범위에서
abac카탈로그 및 전체 스키마를 선택합니다.
-
이름에
용도로 테이블 행 숨기기를 선택합니다.
조건에서기존 항목 선택을 클릭합니다. 그런 다음
을 클릭합니다.함수를 선택합니다.
함수 선택 메뉴에서
abac카탈로그를,customers스키마를, 그런 다음 이전에 만든is_not_eu_address함수를 클릭합니다.선택을 클릭합니다.
필요에 따라 테스트 함수를 확장하고 입력을 제공하여 마스킹 함수를 테스트 할 수 있습니다. 예를 들어
78 Berliner Str., Berlin, Germany E.U.을 입력하고 실행 테스트를 클릭하면FALSE (Hide row)이 올바르게 반환됩니다.
함수 매개 변수에서:
- 특정 태그가 있는 경우 매개 변수에 매핑 열을 선택합니다.
-
pii를 검색합니다.pii : address를 선택합니다.
정책 만들기를 클릭합니다.
6단계: 정책 테스트
- Notebook으로 돌아가서 다음 명령을 실행합니다.
SELECT DISTINCT * FROM abac.customers.profiles
비유럽연합 비거주자 행만 반환됩니다.
| First_Name | 성씨 | 전화번호 | 주소 | 주민등록번호 |
|---|---|---|---|---|
| 은혜 | 윌슨 | 890-123-4567 | 852 엘름 스트리트, NV | 890-12-3456 |
| 앨리스 | 존슨 | 345-678-9012 | 789 파인 스트리트, TX | 345-67-8901 |
| 아이비 | 테일러 | 012-345-6789 | 159 아스펜 스트리트, AZ | 012-34-5678 |
| 솔직하다 | 밀러 | 789-012-3456 | 741 스프루스 스트리트, 워싱턴주 | 789-01-2345 |
| 제인 | 스미스 | 234-567-8901 | 456 오크 스트리트, 캘리포니아 | 234-56-7890 |
| John | 도 | 123-456-7890 | 123 메인 스트리트, 뉴욕주 | 123-45-6789 |
| 찰리 | 데이비스 | 567-890-1234 | 654 시더 스트리트, IL | 567-89-0123 |
| 에밀리 | 흰색 | 678-901-2345 | 987 버치 스트리트, 워싱턴주 | 678-90-1234 |
| 행크 | 무어 | 901-234-5678 | 963 월넛 스트리트, CO | 901-23-4567 |
| 밥 | 밤색 | 456-789-0123 | 321 메이플 스트리트, 플로리다 | 456-78-9012 |
열 마스크 정책을 계속해서 만들 수 있습니다.
7단계: SSN을 마스킹하는 UDF 만들기
- Notebook에 다음 명령을 추가하고 실행합니다.
-- Masks any SSN input by returning a fully masked value
CREATE FUNCTION mask_SSN(ssn STRING)
RETURN '***-**-****' ;
이 UDF는 완전히 마스킹된 SSN 문자열('***-**-****')을 반환합니다.
8단계: 열 마스크 정책을 생성하기
개체에 대한 정책을 만들려면 개체에 MANAGE 또는 개체의 소유권이 있어야 합니다.
정책에 UDF를 추가하려면 EXECUTE가 UDF에 있어야 하며, Unity 카탈로그에 등록되어 있어야 합니다.
을 클릭합니다.카탈로그.
이전에 만든
abac카탈로그를 클릭하세요.정책 탭을 클릭합니다.
새 정책을 클릭합니다.
일반:
-
이름에
mask_ssn를 입력합니다. - 설명의 경우 정책에 대한 설명을 입력합니다.
- 적용 대상...의 경우 정책이 적용되는 보안 주체를 찾아 선택하세요. 이 예제에서는 모든 계정 사용자 그룹을 사용할 수 있습니다.
- 제외...를 빈칸으로 둡니다.
-
범위에서
abac카탈로그 및 전체 스키마를 선택합니다.
-
이름에
목적을 위해 열 데이터 마스킹을 선택합니다.
조건:
-
특정 태그가 있는 경우 마스크 열을 선택합니다.
pii를 검색하고pii : ssn을 선택합니다. -
기존 항목 선택을 클릭합니다. 그런 다음
을 클릭합니다.함수를 선택합니다.
-
함수 선택 메뉴에서
abac카탈로그를,customers스키마를, 그런 다음 이전에 만든mask_ssn함수를 클릭합니다.
-
특정 태그가 있는 경우 마스크 열을 선택합니다.
선택을 클릭합니다.
필요에 따라 테스트 함수를 확장하고 입력을 제공하여 마스킹 함수를 테스트 할 수 있습니다. 예를 들어
901-234-5678을 입력하고 실행 테스트를 클릭하면***-**-****이 올바르게 반환됩니다.
정책 만들기를 클릭합니다.
9단계: 정책 테스트
- Notebook으로 돌아가서 다음 명령을 실행합니다.
SELECT * FROM abac.customers.profiles
이제 SSN이 ***-***-***로 반환됩니다. 행 필터 마스크도 사용하도록 설정되었으므로 비 EU 거주자만 반환됩니다.
| First_Name | 성씨 | 전화번호 | 주소 | 주민등록번호 |
|---|---|---|---|---|
| 제인 | 스미스 | 234-567-8901 | 456 오크 스트리트, 캘리포니아 | ***-**-**** |
| 앨리스 | 존슨 | 345-678-9012 | 789 파인 스트리트, TX | ***-**-**** |
| 찰리 | 데이비스 | 567-890-1234 | 654 시더 스트리트, IL | ***-**-**** |
| 은혜 | 윌슨 | 890-123-4567 | 852 엘름 스트리트, NV | ***-**-**** |
| 밥 | 밤색 | 456-789-0123 | 321 메이플 스트리트, 플로리다 | ***-**-**** |
| 행크 | 무어 | 901-234-5678 | 963 월넛 스트리트, CO | ***-**-**** |
| 아이비 | 테일러 | 012-345-6789 | 159 아스펜 스트리트, AZ | ***-**-**** |
| 에밀리 | 흰색 | 678-901-2345 | 987 버치 스트리트, 워싱턴주 | ***-**-**** |
| 솔직하다 | 밀러 | 789-012-3456 | 741 스프루스 스트리트, 워싱턴주 | ***-**-**** |
| John | 도 | 123-456-7890 | 123 메인 스트리트, 뉴욕주 | ***-**-**** |