實作動態資料遮罩
「動態資料遮罩」的運作方式是將資料模糊化,以限制其曝光。 不需要查看敏感數據的使用者可以檢視包含數據的數據行,但無法檢視實際數據本身。 動態數據遮罩可在呈現層運作,且高許可權使用者一律可以看到未遮罩的數據。
「動態資料遮罩」的優點是不需要對應用程式或資料庫進行許多修改。 您可以透過 Azure 入口網站或使用 T-SQL 進行設定,如下所示。
在範例中,會對只擁有資料表 SELECT 權限的 DDMDemo 使用者同時隱藏 PhoneNumber 及 EmailAddress 兩個資料行。 此使用者可以看到電話號碼的最後四個數字,因為它是使用 partial 函式進行遮罩,此函式會取代資料行中的最後四個數字以外的數字。 這個遮罩會視為自訂函式。 除了 T-SQL 之外,如果您使用 Azure SQL Database,您可以在 Azure 入口網站中建立動態遮罩規則:
您可以瀏覽至 Azure 入口網站中的資料庫,然後在資料庫主要窗格的 [安全性] 區段中,選取 [動態資料遮罩],即可抵達新增遮罩規則的畫面。
動態資料遮罩可支援以下可用的遮罩模式:
| 遮罩功能 | 定義 | T-SQL 範例 |
|---|---|---|
| 預設值 | 完全遮罩資料行中的資料,不向使用者公開值的任何部分。 使用者會看到字串值的以 XXXX、數字以 0,且日期值以 01.01.1900 顯示。 | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'default()') |
| 信用卡 | 該遮罩會將最後四個字元以外的所有字元遮住,只讓使用者查看最後四個數字。 對於只需要查看信用卡號碼的最後四個數字、但不需要查看完整數字的客戶服務專員,則此遮罩會很有用。 這項資料會以信用卡的一般格式 XXXX-XXXX-XXXX-1234 來顯示。 | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)') |
| 電子郵件 | 只有軌跡網域尾碼的第一個字母不會被遮罩: 例如,”aXXX@XXXXXXX.com” | ALTER TABLE [Customer] ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()') |
| 數字 | 這個遮罩格式只應用在數值的資料行。 它會顯示一個亂數作為遮罩值取代實際值。 而且每次查詢,都會以不同的數字顯示。 | ALTER TABLE [Customer] ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)') |
| 自訂字串 | 此選項可使用任何值遮罩文字,並在遮罩值的任一端顯示自訂的字元數量。 如果要遮罩值的長度等於或小於遮罩所指定的字元數,則只會顯示遮罩字元。 | ALTER TABLE [Customer] ALTER COLUMN [PhoneNumber] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)') |
若要讓使用者從已定義了遮罩的資料行中擷取無遮罩的資料,您必須明確授與 UNMASK 權限。
注意
您可以使用根據結果的推斷來識別遮罩的數據。 如果您使用數據遮罩,也應該限制使用者執行非計劃性查詢的能力。
因此,強烈建議您將動態數據遮罩與其他安全性功能搭配使用,例如稽核、加密、數據列層級安全性,以更好地保護敏感數據。
使用案例
資料遮罩為一種簡單且輕量的功能,適用於多種案例,包括:
對沒有資料庫直接存取權的應用程式使用者,進行資料的遮罩處理。
對使用者群組的私人資訊加以設限。
將遮罩處理的資料提供給外部廠商,您可在保護敏感性資訊的同時,保留資料中各項目之間的關聯性。
將實際生產環境中的資料庫複本匯出至較低階的環境中,以供不具備
UNMASK權限的使用者進行開發之用。 以遮罩格式匯出資料。
匯入及匯出資料
使用 SELECT INTO 或 INSERT INTO 將遮罩資料行中的資料複製到另一個資料表時,可導致資料在目標資料表中仍為有遮罩的資料。
當不具備 UNMASK 權限的使用者執行 SQL Server 匯入和匯出時,匯出的資料檔案中仍會有含遮罩的資料,而匯入的資料庫則會含有非使用中的遮罩資料。
若要深入了解「動態資料遮罩」的運作方式,請參閱動態資料遮罩。