共用方式為


教學課程:設定 ABAC

這很重要

這項功能目前處於 公開預覽版

本教學課程介紹如何在 Unity 目錄中設定數據列篩選和數據行遮罩屬性型存取控制 (ABAC) 原則。

在此範例中,美國分析團隊不應能夠存取歐盟客戶記錄或 SSN。 不過,他們應該能夠存取相同資料表中的其他客戶和客戶資料。 本教學課程包含下列步驟:

  1. 建立受控管的標籤
  2. 建立 Unity 目錄目錄、架構和數據表
  3. 將控管標籤套用至欄位
  4. 建立UDF以隱藏歐盟成員的數據
  5. 建立數據列篩選原則
  6. 建立UDF以隱藏 SSN
  7. 建立欄位遮罩原則
  8. 使用政策選取您的表格

如需設定 ABAC 的示範,請參閱使用 Unity 目錄探索 Attribute-Based 存取控制 (ABAC)。

計算需求

  • 您必須在 Databricks Runtime 16.4 或更新版本上使用計算。
  • 無伺服器運算一律可與 ABAC 搭配使用。

執行較舊執行階段的運算無法存取受 ABAC 保護的資料表。 作為暫時的因應措施,您可以將 ABAC 設定為僅套用至特定群組。 將您要限制的使用者新增至該群組。 不在群組中的使用者仍然可以存取資料表。

步驟 1:建立受控管的標籤

若要建立受控管標籤,您必須在帳戶層級擁有受管控標籤 CREATE 許可。 帳戶和工作區管理員預設擁有創建權限。

  1. 在您的 Azure Databricks 工作區中,按兩下 [資料] 圖示。目錄

  2. 按下 「受控標籤」 > 按鈕。

  3. 按一下 建立受控管標籤

  4. 輸入標籤鍵值 pii

  5. 輸入受控管標籤的說明。

  6. 輸入標籤的允許值: ssnaddress。 只有這些值可以指派給這個標籤鍵。

    教學課程:建立標籤原則。

  7. 點擊 建立

警告

標籤資料儲存為純文字,並可全域複製。 請勿使用可能危及資源安全性的標籤名稱、值或描述元。 例如,請勿使用包含個人或敏感資訊的標籤名稱、值或描述子。

步驟 2:建立客戶資料表

若要遵循這些步驟,您必須擁有 CREATE CATALOG Unity 目錄中繼存放區的許可權。 您也可以在您擁有 CREATE TABLE 許可權的架構中建立資料表。

  1. 在提要欄中,按一下 +新增>筆記本
  2. 選取 [SQL] 作為筆記本語言。
  3. 按兩下 [ 連線 ],並將筆記本附加至計算資源。
  4. 將下列命令新增至筆記本並加以執行:
-- 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 欄

  1. 將下列命令新增至筆記本並加以執行:
-- 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:建立 UDF 以尋找歐盟地址

  1. 將下列命令新增至筆記本並加以執行:
-- 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(這表示它不是歐盟位址)。

步驟 5:建立資料列篩選原則

若要在物件上建立原則,您必須擁有 MANAGE 物件或物件的所有權。 若要將 UDF 新增至原則,您必須擁有 EXECUTE 並確保 UDF 位於 Unity Catalog 目錄中。

  1. 按兩下 [資料] 圖示。目錄

  2. 按一下您先前建立的 abac 目錄。

  3. 按兩下 [原則] 索引標籤。

  4. 按一下 新增原則

  5. 一般來說

    • 對於名稱,輸入 hide_eu_customers
    • 針對 Description,輸入策略的描述。
    • 針對套用至...,搜索並選擇政策适用的主體。 在此範例中,您可以使用群組 [所有帳戶使用者]。
    • Except for... 留空。
    • 針對 Scope(範圍),選擇 abac 目錄和所有結構描述。

    範例:一般區段的 ABAC 資料列篩選器政策設定。

  6. 針對 Purpose,選擇 隱藏表格列

  7. 條件 中,按一下 選取現有。 然後,單擊 功能 圖標。選擇功能

  8. 選取函式功能表中,先按一下abac目錄,再按一下customers結構描述,然後按一下您先前建立的is_not_eu_address函式。

  9. 按一下 ‹選取›。

    條件區段的 ABAC 列篩選政策設定範例。

  10. 或者,您可以展開 測試功能 並提供輸入,以測試遮罩功能。 例如,輸入 78 Berliner Str., Berlin, Germany E.U. 並按一下 執行測試 會正確傳回 FALSE (Hide row)

    範例 ABAC 列過濾器遮罩功能測試。

  11. 函數參數中

    • 選擇 Map column to parameter 如果它有特定標籤
    • 搜尋 pii。 選取 pii : address

    函數參數區段的 ABAC 列篩選器政策設定範例。

  12. 按一下 [ 建立政策]。

步驟 6:測試您的政策

  1. 傳回筆記本並執行下列命令:
SELECT DISTINCT * FROM abac.customers.profiles

只會傳回非歐盟居民數據列。

名字 姓氏 電話號碼 位址 SSN
恩典 威爾遜 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

您可以繼續建立欄位遮罩原則。

步驟 7:建立 UDF 以遮罩 SSN

  1. 將下列命令新增至筆記本並加以執行:
-- 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 Catalog 目錄中。

  1. 按兩下 [資料] 圖示。目錄

  2. 按一下您先前建立的 abac 目錄。

  3. 按兩下 [原則] 索引標籤。

  4. 按一下 新增原則

  5. 一般來說

    • 對於名稱,輸入 mask_ssn
    • 針對 Description,輸入策略的描述。
    • 針對套用至...,搜索並選擇政策适用的主體。 在此範例中,您可以使用群組 [所有帳戶使用者]。
    • Except for... 留空。
    • 針對 Scope(範圍),選擇 abac 目錄和所有結構描述。

    一般區段的 ABAC 欄遮罩政策設定範例。

  6. 針對 Purpose(目的),選擇 遮蔽欄位資料

  7. 條件下:

    • 選擇 遮罩欄 如果它有特定標籤。 搜尋pii並選擇pii : ssn
    • 按一下 選擇現有。 然後,單擊 功能 圖標。選擇功能
    • 選取函式功能表中,先按一下abac目錄,再按一下customers結構描述,然後按一下您先前建立的mask_ssn函式。
  8. 按一下 ‹選取›。

    「條件」區段的 ABAC 資料行遮罩原則設定範例。

  9. 或者,您可以展開 測試功能 並提供輸入,以測試遮罩功能。 例如,輸入 901-234-5678 並按一下 執行測試 會正確傳回 ***-**-****

    ABAC 欄位遮罩函數測試範例。

  10. 按一下 [ 建立政策]。

步驟 9:測試您的政策

  1. 傳回筆記本並執行下列命令:
SELECT * FROM abac.customers.profiles

現在社會安全號碼顯示為***-***-***。 只有非歐盟居民會被列出,因為同時啟用了資料列篩選遮罩。

名字 姓氏 電話號碼 位址 SSN
史密斯 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 ***-**-****