練習 - 保護傳輸中、待用及顯示的資料

已完成

marketplaceDb 資料庫會儲存敏感性資訊,例如實際地址、電子郵件地址和電話號碼。 如果這些資訊遭到公開,惡意攻擊者可能會利用資訊來傷害我們的公司或客戶。 請看看如何使用加密和資料遮罩來強化資料庫的安全性。

TLS 網路加密

Azure SQL Database 一律會針對所有連線強制執行傳輸層安全性 (TLS) 加密,其能確保所有資料在資料庫與用戶端之間「傳輸中」都會加密。 藉由使用 TLS 加密,您可以確保任何已攔截應用程式伺服器與資料庫之間流量的人員,都無法讀取該資料。 TLS 加密是保護網際網路流量的標準,且在本案例中能確保您 Azure SQL 資料庫的來回網路流量預設都能受到保護。

透明資料加密

Azure SQL Database 會使用透明資料加密 (TDE) 來保護您的待用資料。 TDE 能對資料庫、相關聯的備份,以及待用的交易記錄檔執行即時加密和解密,而不需變更應用程式。 使用資料庫加密金鑰,透明資料加密會在頁面層級對資料執行即時 I/O 加密和解密。 系統會在將每個頁面讀取至記憶體時對它進行解密,然後在將頁面寫入至磁碟之前對它進行加密。

根據預設,系統會為所有新部署的 Azure SQL 資料庫啟用 TDE。 請務必確認資料加密並未關閉。 較舊的 Azure SQL Server 資料庫可能並未啟用 TDE。

在 Azure 入口網站中看看在 marketplaceDb 資料庫上設定 TDE 的位置。

  1. 使用啟用沙箱時所用的相同帳戶來登入 Azure 入口網站

  2. 在 Azure 入口網站頂端的搜尋列中搜尋 marketplaceDb,然後選取該資料庫。

  3. 在左側功能表窗格的 [安全性] 底下,選取 [資料加密]

  4. 在資料加密選項中,確定 [資料加密] 已設定為 [開啟]。 您也應該會看到 [已加密] 的加密狀態。

因為新的資料庫預設便已加密,您可以確定在建立資料庫時,磁碟上的資料就都已經會加密。

注意

Azure 包含稱為「適用於雲端的 Microsoft Defender」的內建服務,其能讓您掌握環境 (包括 Azure SQL 資料庫) 的安全性。 適用於雲端的 Microsoft Defender 會將所有未啟用 TDE 的資料庫標示出來,讓您可以回報並採取動作以保護資料。

動態資料遮罩

您可能會注意到,當您在上一個單元中執行查詢時,資料庫中的某些資訊會屬於機密資訊。 您可能不想對具有資料存取權的每個人員顯示電話號碼、電子郵件位址和其他資訊。

您可能不想讓使用者能夠看到完整的電話號碼或電子郵件地址,但仍想要將部分資料提供給客戶服務代表,以便識別客戶。 透過使用 Azure SQL Database 的動態資料遮罩功能,您就能限制顯示給使用者的資料。 動態資料遮罩是以原則為基礎的安全性功能,可針對指定的資料庫欄位隱藏查詢結果集中的機密資料,而不會變更資料庫中的資料。

資料遮罩規則是由要套用遮罩的資料行,以及要對資料進行遮罩的方式所組成。 您可以建立自己的遮罩格式,或使用其中一種標準遮罩,例如:

  • 預設值,改為顯示該資料類型的預設值。
  • 信用卡值,只顯示卡號的最後四個數字,並將其他所有數字轉換為小寫的 x。
  • 電子郵件,隱藏網域名稱和所有其他資訊,只顯示電子郵件帳戶名稱的第一個字元。
  • 數字,以某個範圍之間的值來指定亂數。 例如,在信用卡的到期月份和年份上,您可以選取介於 1 到 12 之間的隨機月份,並將年份範圍設定為介於 2018 到 3000 之間。
  • 自訂字串可讓您設定資料開頭要公開的字元數目、資料結尾要公開的字元數目,以及要作為資料其餘部分的重複字元。

當資料庫管理員查詢資料行時,仍然會看到原始值。 非管理者會看到遮罩的值。 您可以將其他使用者新增至 [從遮罩排除的 SQL 使用者] 清單,來允許他們看到未加上遮罩的版本。

請看看資料遮罩在您的 marketplaceDb 資料庫上如何運作。

  1. 在仍處於入口網站中 [marketplaceDb] 資料庫面板上的情況下,在左側功能表窗格的 [安全性] 區段下,選取 [動態資料遮罩]

    遮罩規則畫面會顯示現有動態資料遮罩的清單,以及可能應套用動態資料遮罩之資料行的建議。

    Azure 入口網站的螢幕擷取畫面,其中顯示針對範例資料庫的各種資料庫資料行所建議的遮罩清單。

  2. 請針對只顯示最後四個數字的電話號碼新增遮罩。 選取頂端的 [新增遮罩] 按鈕,以開啟 [新增遮罩規則] 對話方塊。

  3. 選取下列值。

    設定
    結構描述 SalesLT
    Table 客戶
    資料行 Phone (nvarchar)
    遮罩欄位格式 自訂字串 (首碼 [填補] 尾碼)
    公開的首碼 0
    填補字串 XXX-XXX-
    公開的尾碼 4
  4. 選取 [新增] 來新增遮罩規則。

    Azure 入口網站的螢幕擷取畫面,其中顯示新增遮罩規則的值。

  5. 請再針對電子郵件地址新增一個規則。 再次選取頂端的 [新增遮罩] 按鈕,以開啟 [新增遮罩規則] 對話方塊。

    設定
    結構描述 SalesLT
    Table 客戶
    資料行 EmailAddress (nvarchar)
    遮罩欄位格式 電子郵件 (aXXX@XXX.com)
  6. 選取 [新增] 來新增遮罩規則。

  7. 每個新的遮罩都會新增至遮罩規則清單。 選取 [儲存] 來套用您的遮罩。

請看看資料遮罩會如何變更我們的查詢。

  1. 現在,使用 ApplicationUser 使用者身分重新登入資料庫。

    sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U 'ApplicationUser' -P '[password]' -N -l 30
    
  2. 執行下列查詢。

    SELECT FirstName, LastName, EmailAddress, Phone FROM SalesLT.Customer;
    GO
    

    看看系統對輸出進行遮罩的方式。

    FirstName     LastName      EmailAddress         Phone
    ------------- ------------- -------------------- ------------
    Orlando       Gee           oXXX@XXXX.com        XXX-XXX-0173
    Keith         Harris        kXXX@XXXX.com        XXX-XXX-0127
    Donna         Carreras      dXXX@XXXX.com        XXX-XXX-0130
    Janet         Gates         jXXX@XXXX.com        XXX-XXX-0173
    ...
    

使用您所建立的遮罩規則,系統已使用您所指定的格式對資料進行遮罩。 這些規則可讓您的客戶服務代表使用客戶電話號碼的最後四個數字來驗證客戶,但他們將無法看見完整的號碼和客戶的電子郵件地址。