實作敏感性資料的合規控制

已完成

在移轉資料庫之後實作合規性控制很重要,以確保您的資料保持安全且符合相關法規。 移轉至新的環境,例如 Azure SQL,帶來了新的安全性功能和特徵。

探索伺服器和資料庫稽核

Azure SQL 稽核會追蹤資料庫事件,並將其記錄到 Azure 儲存體帳戶、Log Analytics 工作區或事件中樞中儲存的稽核記錄中。 此外,它可輔助維護法規合規性、分析活動模式,以及可能表示安全性違規的偏差偵測。

您可以定義伺服器層級和資料庫層級原則。 伺服器原則會自動涵蓋 Azure 中的新資料庫和現有資料庫。

  • 不論資料庫的個別稽核設定為何,啟用伺服器稽核都會觸發資料庫的稽核。
  • 您可以在資料庫層級啟用稽核,讓伺服器和資料庫原則同時存在。
  • 系統會自動啟用唯讀複本上的稽核。

除了下列案例之外,最好不要同時啟用伺服器稽核和資料庫稽核。

  • 您需要不同的儲存體帳戶、保留期間或特定資料庫的 Log Analytics 工作區。

  • 需要對具有獨特事件類型或與伺服器上其他資料庫不同的類別的特定資料庫進行稽核。

否則,建議您只啟用伺服器層級的稽核,並維持停用所有資料庫的資料庫層級稽核。

SQL Database 的預設稽核原則包含下列動作群組集合:

動作群組 定義
BATCH_COMPLETED_GROUP 稽核針對資料庫執行的所有查詢和預存程序。
SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP 這表示主體成功登入了資料庫。
FAILED_DATABASE_AUTHENTICATION_GROUP 這表示主體無法登入資料庫。

若要為 Azure SQL Server 上的所有資料庫啟用稽核,請在伺服器主刀鋒視窗的 [安全性] 區段中,選取 [稽核]

Screenshot of auditing option in the Security section of a SQL server.

[稽核] 頁面可讓您設定稽核記錄目的地,您也可選擇是否要在與 Azure SQL 稽核相同的記錄目的地上追蹤 Microsoft 支援工程作業,或選取不同的記錄目的地。

Screenshot of the Auditing page of a SQL server.

您可以執行下列查詢,以在 Log Analytics 工作區中檢閱 Microsoft 支援服務作業的稽核記錄:

AzureDiagnostics
| where Category == "DevOpsOperationsAudit"

重要

Azure SQL 資料庫和 Azure SQL 受控執行個體的稽核服務已經過微調,以獲得最佳可用性和效能。 不過,值得注意的是,在異常高活動或重大網路壅塞的狀況下,可能不會記錄特定稽核的事件。

稽核敏感度標籤

與資料分類合併時,您也可以監視對敏感性資料的存取。 Azure SQL 稽核已進行強化,以在稽核記錄中包含稱為 data_sensitivity_information 的新欄位。

藉由記錄經由查詢所傳回資料的敏感度標籤,此欄位可讓您更輕鬆地追蹤對分類資料行的存取。

Screenshot of the Information Protection page from Azure portal.

稽核是由資料庫引擎中發生的追蹤和記錄事件所組成。 Azure SQL 稽核簡化了啟用稽核所需的設定步驟,讓您可更輕鬆地追蹤 SQL Database 和 SQL 受控執行個體的資料庫活動。

動態資料遮罩

「動態資料遮罩」的運作方式是將資料模糊化,以限制其曝光。 它會讓不需要存取敏感性資訊的使用者可以查看資料行,但無法查看實際的資料。 「動態資料遮罩」可在展示層運作,且只有擁有高使用權限的使用者可以看到未遮罩的資料。

「動態資料遮罩」的優點是對應用程式或資料庫進行最少的修改。 您可以透過 Azure 入口網站,或使用 T-SQL 輕鬆進行設定。

Screenshot of the dynamic data masking T-SQL commands.

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

Screenshot of how to add masking rule in Azure portal.

您可以瀏覽至 Azure 入口網站中的資料庫,然後在資料庫主要窗格的 [安全性] 區段中,選取 [動態資料遮罩],即可新增遮罩規則。

動態資料遮罩可支援以下可用的遮罩模式:

遮罩函數 定義 T-SQL 範例
Default 完全遮罩資料行中的資料,不向使用者公開值的任何部分。 使用者會看到字串值的以 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)')
Email 只有軌跡網域尾碼的第一個字母不會被遮罩: 例如,”aXXX@XXXXXXX.com” ALTER TABLE [Customer] ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
Number 這個遮罩格式只應用在數值的資料行。 它會顯示一個亂數作為遮罩值取代實際值。 而且每次查詢,都會以不同的數字顯示。 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 匯入和匯出時,匯出的資料檔案中仍會有含遮罩的資料,而匯入的資料庫則會含有非使用中的遮罩資料。