這很重要
這項功能位於 測試版 (Beta) 中。
本教學課程介紹如何在 Unity 目錄中設定數據列篩選和數據行遮罩屬性型存取控制 (ABAC) 原則。
在此範例中,美國分析小組不應能夠存取歐盟客戶記錄或 SSN,不過他們應該能夠存取相同數據表中的其他客戶和客戶數據。 本教學課程包含下列內容:
- 啟用標籤策略和 ABAC 測試版
- 建立標籤原則
- 建立 Unity 目錄目錄、架構和數據表
- 將控管標籤套用至欄位
- 建立UDF以隱藏歐盟成員的數據
- 建立數據列篩選原則
- 建立UDF以隱藏 SSN
- 建立欄位遮罩原則
- 使用政策選取您的表格
步驟 1:啟用標籤政策和 ABAC Beta 版本
身為帳戶管理員,登入帳戶主控台。
在側邊欄中,點擊 預覽。
將[標籤政策]切換為[開啟]。
身為工作區管理員,按兩下 Azure Databricks 工作區頂端列中的用戶名稱。
從選單中,選取 [預覽]。
將 [屬性型存取控制] 切換為 [開啟]。
步驟 2:建立標籤原則
若要建立標籤原則,您必須擁有帳戶層級的標籤原則 CREATE 權限。 帳戶和工作區管理員預設擁有創建權限。
在您的 Azure Databricks 工作區中,按兩下
目錄。
在 [ 快速存取] 頁面上,按兩下 [ 標記原則 > ] 按鈕。
點擊 建立標籤政策。
輸入標籤鍵值
pii
。輸入標籤原則的描述。
輸入標籤的允許值:
ssn
和address
。 只有這些值可以指派給這個標籤鍵。點擊 建立。
這很重要
標記數據可以全域複寫。 請勿使用可能會危害資源安全性的標籤名稱或值。 例如,請勿使用包含個人或敏感性資訊的標籤名稱。
步驟 3:建立客戶數據表
若要遵循這些步驟,您必須擁有 CREATE CATALOG
Unity 目錄中繼存放區的許可權。 您也可以在您擁有 CREATE TABLE
許可權的架構中建立資料表。
- 在提要欄中,按一下 +新增>筆記本。
- 選取 [
SQL
] 作為筆記本語言。 - 按兩下 [ 連線 ],並將筆記本附加至計算資源。
- 將下列命令新增至筆記本並加以執行:
-- 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');
步驟 4:將控管標籤新增至 PII 資料行
- 將下列命令新增至筆記本並加以執行:
-- 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');
步驟 5:建立 UDF 以尋找歐盟位址
- 將下列命令新增至筆記本並加以執行:
-- 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 會檢查指定字串是否未提及歐洲或歐盟。 如果找到這些子字串中的任何一個,則會傳回 FALSE(這表示它是歐盟位址)。 如果找不到任何子字串,則會傳回TRUE(這表示它不是歐盟位址)。
步驟 6:建立數據列篩選原則
按兩下
目錄。
在
abac
目錄旁邊,點擊。
點擊 在目錄總管中開啟。
按兩下 [原則] 索引標籤。
按一下 新增原則。
在 [一般] 中,輸入原則的名稱
hide_eu_customers
和描述。在 主體中:
- 在 [套用至...] 中,搜尋並選取原則所套用的主體。 在此範例中,您可以使用群組 [所有帳戶使用者]。
- 保留 [除外... ] 空白。
在 [類型與目標] 中:
- 在 [ 原則類型] 中,選取 [ 數據列篩選]。
- 在 [ 原則目標] 中,選取
abac
原則範圍的目錄。 - 將 [數據表層級條件 ] 保留空白。
在函式中,選取您在
is_not_eu_address
中建立的abac.customers
函式。在 [ 何時] 欄旁,選取 [具有標籤值]。
在 索引鍵 中選取
pii
,在 值 中選取address
。按一下 [ 建立政策]。
步驟 7:測試您的原則
- 傳回筆記本並執行下列命令:
SELECT DISTINCT * FROM abac.customers.profiles
只會傳回非歐盟居民數據列。
名字 | 姓氏 | 電話號碼 | 位址 | 社會安全號碼 |
---|---|---|---|---|
恩典 | 威爾遜 | 890-123-4567 | 852 Elm St, NV | 890-12-3456 |
愛麗絲 | 約翰生 | 345-678-9012 | 789 松街,德州 | 345-67-8901 |
常春藤 | 泰勒 | 012-345-6789 | 159 阿斯彭街, AZ | 012-34-5678 |
弗蘭克 | 密勒 | 789-012-3456 | 741 Spruce St, WA | 789-01-2345 |
珍 | 史密斯 | 234-567-8901 | 456 橡樹街, CA | 234-56-7890 |
John | 母鹿 | 123-456-7890 | 123 Main St, NY | 123-45-6789 |
查理 | 大衛斯 | 567-890-1234 | 654 雪松街,伊利諾伊州 | 567-89-0123 |
艾米麗 | 白色 | 678-901-2345 | 987 伯奇街, 西澳大利亞州 | 678-90-1234 |
漢克 | 摩爾 | 901-234-5678 | 963 核桃街,科羅拉多州 | 901-23-4567 |
鮑勃 | 棕色 | 456-789-0123 | 321 楓樹街,FL | 456-78-9012 |
您可以繼續建立欄位遮罩原則。
步驟 8:建立 UDF 以遮罩 SSN
- 將下列命令新增至筆記本並加以執行:
-- Masks any SSN input by returning a fully masked value
CREATE FUNCTION mask_SSN(ssn STRING)
RETURN '***-**-****' ;
此 UDF 會傳回完全遮罩的 SSN 字串串 ('***-**-****'),
步驟 9:建立欄位掩碼策略
按兩下
目錄。
在
abac
目錄旁邊,點擊。
點擊 在目錄總管中開啟。
按兩下 [原則] 索引標籤。
按一下 新增原則。
在 [一般] 中,輸入原則的名稱
mask_ssn
和描述。在 主體中:
- 在 [套用至...] 中,搜尋並選取原則所套用的主體。 在此範例中,您可以使用群組 [所有帳戶使用者]。
- 保留 [除外... ] 空白。
在 [類型與目標] 中:
- 在 [原則類型] 中,選取 [欄位遮罩]。
- 在 [ 原則目標] 中,選取
abac
原則範圍的目錄。 - 將 [數據表層級條件 ] 保留空白。
在函式中,選取您在
mask_SSN
中建立的abac.customers
函式。在 [ 何時] 欄旁,選取 [具有標籤值]。
在 索引鍵 中選取
pii
,在 值 中選取ssn
。按一下 [ 建立政策]。
步驟 10:測試您的原則
- 傳回筆記本並執行下列命令:
SELECT * FROM abac.customers.profiles
現在社會安全號碼顯示為***-***-***
。 只會傳回非歐盟居民,因為也會啟用數據列篩選遮罩。
名字 | 姓氏 | 電話號碼 | 位址 | 社會安全號碼 |
---|---|---|---|---|
珍 | 史密斯 | 234-567-8901 | 456 橡樹街, CA | ***-**-**** |
愛麗絲 | 約翰生 | 345-678-9012 | 789 松街,德州 | ***-**-**** |
查理 | 大衛斯 | 567-890-1234 | 654 雪松街,伊利諾伊州 | ***-**-**** |
恩典 | 威爾遜 | 890-123-4567 | 852 Elm St, NV | ***-**-**** |
鮑勃 | 棕色 | 456-789-0123 | 321 楓樹街,FL | ***-**-**** |
漢克 | 摩爾 | 901-234-5678 | 963 核桃街,科羅拉多州 | ***-**-**** |
常春藤 | 泰勒 | 012-345-6789 | 159 阿斯彭街, AZ | ***-**-**** |
艾米麗 | 白色 | 678-901-2345 | 987 伯奇街, 西澳大利亞州 | ***-**-**** |
弗蘭克 | 密勒 | 789-012-3456 | 741 Spruce St, WA | ***-**-**** |
John | 母鹿 | 123-456-7890 | 123 Main St, NY | ***-**-**** |