實作動態資料遮罩

已完成

「動態資料遮罩」的運作方式是將資料模糊化,以限制其曝光。 不需要查看敏感數據的使用者可以檢視包含數據的數據行,但無法檢視實際數據本身。 動態數據遮罩可在呈現層運作,且高許可權使用者一律可以看到未遮罩的數據。

「動態資料遮罩」的優點是不需要對應用程式或資料庫進行許多修改。 您可以透過 Azure 入口網站或使用 T-SQL 進行設定,如下所示。

動態資料遮罩 T-SQL 命令的螢幕擷取畫面。

在範例中,會對只擁有資料表 SELECT 權限的 DDMDemo 使用者同時隱藏 PhoneNumberEmailAddress 兩個資料行。 此使用者可以看到電話號碼的最後四個數字,因為它是使用 partial 函式進行遮罩,此函式會取代資料行中的最後四個數字以外的數字。 這個遮罩會視為自訂函式。 除了 T-SQL 之外,如果您使用 Azure SQL Database,您可以在 Azure 入口網站中建立動態遮罩規則:

如何在 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 INTOINSERT INTO 將遮罩資料行中的資料複製到另一個資料表時,可導致資料在目標資料表中仍為有遮罩的資料。

當不具備 UNMASK 權限的使用者執行 SQL Server 匯入和匯出時,匯出的資料檔案中仍會有含遮罩的資料,而匯入的資料庫則會含有非使用中的遮罩資料。

若要深入了解「動態資料遮罩」的運作方式,請參閱動態資料遮罩