共用方式為


如何在 Synapse 資料倉儲中實作動態資料遮罩

適用於:✅ Microsoft Fabric 中的 SQL 分析端點和倉儲

動態資料遮罩是一種尖端的資料保護技術,可協助組織保護資料庫中的敏感資訊。 可讓您為特定的資料行定義遮罩規則,確保只有授權使用者才能查看原始資料,同時對其他人隱藏資料。 動態資料遮罩透過根據使用者的存取權限動態變更呈現給使用者的資料,提供了額外的安全層。

如需詳細資訊,請參閱 Fabric 資料倉儲中的動態資料遮罩

必要條件

開始之前,請確定您具備下列項目:

  1. 具有作用中容量或試用容量的 Microsoft Fabric 工作區。
  2. 倉儲。
    1. 動態資料遮罩適用於 SQL 分析端點。 如本文稍後所示,您可以使用 ALTER TABLE ... ALTER COLUMN 將遮罩新增至現有的資料行。
    2. 此練習使用倉儲。
  3. (用於管理) 對工作區具有系統管理員、成員或參與者權限的使用者,或對倉儲具有提升權限的使用者。
    1. 在本教學課程中為「系統管理員帳戶」。
  4. (用於測試) 對工作區沒有系統管理員、成員或參與者權限的使用者,或對倉儲沒有提升權限的使用者。
    1. 在本教學課程中為「測試使用者」。

1. 連線

  1. 開啟 Fabric 工作區,然後瀏覽至您要套用動態資料遮罩的倉儲。
  2. 使用具有對倉儲的提升存取權的帳戶 (工作區上的管理員/成員/參與者角色,或倉儲上的控制權限) 登入。

2. 設定動態資料遮罩

  1. 使用系統管理員帳戶登入 Fabric 入口網站。

  2. 在 [網狀架構] 工作區中,流覽至您的倉儲。

  3. 選取 [新增 SQL 查詢] 選項,然後在 [空白] 下選取 [新增 SQL 查詢]

  4. 在 SQL 指令碼中,使用 MASKED WITH FUNCTION 子句定義動態資料遮罩規則。 例如:

    CREATE TABLE dbo.EmployeeData (
        EmployeeID INT
        ,FirstName VARCHAR(50) MASKED WITH (FUNCTION = 'partial(1,"-",2)') NULL
        ,LastName VARCHAR(50) MASKED WITH (FUNCTION = 'default()') NULL
        ,SSN CHAR(11) MASKED WITH (FUNCTION = 'partial(0,"XXX-XX-",4)') NULL
        ,email VARCHAR(256) NULL
        );
    GO
    INSERT INTO dbo.EmployeeData
        VALUES (1, 'TestFirstName', 'TestLastName', '123-45-6789','email@youremail.com');
    GO
    INSERT INTO dbo.EmployeeData
        VALUES (2, 'First_Name', 'Last_Name', '000-00-0000','email2@youremail2.com');
    GO
    
    • FirstName 資料行僅顯示字串的第一個和最後兩個字元,中間有 -
    • LastName 資料行顯示 XXXX
    • SSN 資料行顯示 XXX-XX-,後接字串的最後四個字元。
  5. 選取 [執行] 按鈕以執行指令碼。

  6. 確認指令碼的執行。

  7. 指令碼會將指定的動態資料遮罩規則套用至資料表中的指定資料行。

3. 測試動態資料遮罩

套用動態資料遮罩規則後,您可以透過以對工作區不具有管理員、成員或參與者權限或對倉儲不具有提升權限的測試使用者身分,查詢資料表來測試遮罩。

  1. 以測試使用者身分登入 Azure Data Studio 或 SQL Server Management Studio 之類的工具,例如 TestUser@contoso.com。
  2. 以測試使用者身分,對資料表執行查詢。 遮罩的資料會根據您定義的規則顯示。
    SELECT * FROM dbo.EmployeeData;
    
  3. 使用系統管理員帳戶,授與測試使用者的 UNMASK 權限。
    GRANT UNMASK ON dbo.EmployeeData TO [TestUser@contoso.com];
    
  4. 以測試使用者身分,確認以 TestUser@contoso.com 身分登入的使用者可以看到未遮罩的資料。
    SELECT * FROM dbo.EmployeeData;
    
  5. 使用系統管理員帳戶,撤銷測試使用者的 UNMASK 權限。
    REVOKE UNMASK ON dbo.EmployeeData TO [TestUser];
    
  6. 確認測試使用者看不到未遮罩的資料,只能看到遮罩的資料。
    SELECT * FROM dbo.EmployeeData;
    
  7. 使用系統管理員帳戶,您可以授與和撤銷 UNMASK 角色的權限
    GRANT UNMASK ON dbo.EmployeeData TO [TestRole];
    REVOKE UNMASK ON dbo.EmployeeData TO [TestRole];
    

4. 管理和修改動態資料遮罩規則

若要管理或修改現有的動態資料遮罩規則,請建立新的 SQL 指令碼。

  1. 您可以使用 MASKED WITH FUNCTION 子句,將遮罩新增至現有的資料行:

    ALTER TABLE dbo.EmployeeData
    ALTER COLUMN [email] ADD MASKED WITH (FUNCTION = 'email()');
    GO
    
    ALTER TABLE dbo.EmployeeData 
    ALTER COLUMN [email] DROP MASKED;
    

5. 清理

  1. 若要清理此測試資料表,請執行以下操作:
    DROP TABLE dbo.EmployeeData;