共用方式為


Microsoft Fabric 中 SQL 資料庫中的資料加密

適用於:✅Microsoft Fabric 中的 SQL 資料庫

這很重要

這項功能目前處於預覽階段。

Microsoft Fabric 使用 Microsoft 管理的金鑰加密所有靜態資料。 所有 SQL 資料庫資料都儲存在遠端的 Azure 儲存帳號中。 為了符合使用 Microsoft 管理金鑰的靜態加密要求,SQL 資料庫使用的每個 Azure 儲存帳號都設定啟用 服務端加密

透過 客戶管理的 Fabric 工作區金鑰,你可以利用 Azure Key Vault 金鑰,為 Microsoft Fabric 工作區的資料增加另一層保護,包括 Microsoft Fabric 中 SQL 資料庫中的所有資料。 客戶管理的金鑰可提供更大的彈性,讓您管理其輪替、控制存取和使用方式稽核。 客戶管理的金鑰也協助組織滿足資料治理需求,並符合資料保護與加密標準。

  • 當客戶管理的金鑰在 Microsoft Fabric 中為工作空間設定時,會自動啟用該工作空間內所有 SQL 資料庫(及 )使用指定的客戶管理金鑰進行tempdb。 這個流程完全無縫,不需要人工介入。
    • 雖然加密過程會自動啟動,但並非即時完成;持續時間取決於每個 SQL 資料庫的大小,較大的 SQL 資料庫需要更多時間來完成加密。
    • 在設定好客戶管理金鑰後,工作空間中建立的任何 SQL 資料庫也會使用客戶管理金鑰進行加密。
  • 若移除客戶管理的金鑰,工作空間中所有 SQL 資料庫的解密程序將被觸發。 與加密一樣,解密也取決於 SQL 資料庫的大小,且可能需要時間完成。 解密後,SQL 資料庫會回復使用 Microsoft 管理的金鑰進行加密。

Microsoft Fabric 中 SQL 資料庫中透明資料加密的運作方式

透明資料加密能即時加密與解密資料庫、相關備份及交易日誌檔案的靜態狀態。

  • 此過程發生在頁面層級,意即每頁在讀取記憶體時會解密,並在寫回磁碟前重新加密。
  • 透明資料加密利用一種稱為資料庫加密金鑰(DEK)的對稱金鑰來保護整個資料庫的安全。
  • 當資料庫啟動時,加密後的 DEK 會被解密,並由 SQL Server 資料庫引擎用來管理加密與解密操作。
  • DEK 本身由透明資料加密保護器保護,這是一種由客戶管理的非對稱金鑰——具體來說,是由客戶管理、在工作區層級設定的金鑰。

Microsoft Fabric 中 SQL 資料庫加密示意圖。

備份與還原

一旦 SQL 資料庫以客戶管理的金鑰加密,任何新產生的備份也會用同一金鑰加密。

當金鑰被更改時,SQL 資料庫的舊備份不會更新以使用最新的金鑰。 若要恢復以客戶管理金鑰加密的備份,請確保該金鑰資料已在 Azure 金鑰庫中取得。 因此,我們建議客戶將所有舊版本的客戶管理金鑰保留在 Azure Key Vault 中,以便還原 SQL 資料庫備份。

SQL 資料庫還原流程將始終尊重客戶管理的 Key Workspace 設定。 下表列出了根據客戶管理的金鑰設定及備份是否加密的各種還原情境。

備用是...... 客戶管理的密鑰工作區設定 還原後的加密狀態
沒有加密 Disabled SQL 資料庫並非加密
沒有加密 已啟用 SQL 資料庫以客戶管理的金鑰加密
以客戶管理的金鑰加密 Disabled SQL 資料庫並非加密
以客戶管理的金鑰加密 已啟用 SQL 資料庫以客戶管理的金鑰加密
以客戶管理的金鑰加密 啟用但由客戶管理的不同金鑰 SQL 資料庫以新的客戶管理金鑰加密

驗證成功的客戶管理金鑰

一旦你在工作區啟用客戶管理的金鑰加密,現有的資料庫就會被加密。 啟用客戶管理金鑰時,工作區中的新資料庫也會被加密。 要確認你的資料庫是否成功加密,請執行以下 T-SQL 查詢:

SELECT DB_NAME(database_id) as DatabaseName, * 
FROM sys.dm_database_encryption_keys 
WHERE database_id <> 2;
  • 若欄位 encryption_state_desc 顯示 ENCRYPTEDASYMMETRIC_KEYencryptor_type,則該資料庫為加密。
  • 若狀態為 ENCRYPTION_IN_PROGRESS,欄位 percent_complete 將顯示加密狀態變更的進度。 這會是0若沒有進行狀態變化。
  • 若未加密,資料庫將不會出現在 的 sys.dm_database_encryption_keys查詢結果中。

排除無法存取的客戶管理金鑰

當客戶管理的金鑰在 Microsoft Fabric 中為工作空間設定時,必須持續存取該金鑰,SQL 資料庫才能保持在線。 如果 SQL 資料庫失去對 Azure Key Vault 金鑰的存取權,最多 10 分鐘內,SQL 資料庫就會開始拒絕所有連線,並將狀態改為不可存取。 使用者會收到相應的錯誤訊息,例如「 <database ID>.database.fabric.microsoft.com 資料庫因 Azure Key Vault 重大錯誤無法存取」。

  • 如果金鑰存取在 30 分鐘內恢復,SQL 資料庫將在接下來一小時內自動修復。
  • 如果超過 30 分鐘後金鑰存取才恢復,SQL 資料庫的自動修復將無法實現。 重新啟用 SQL 資料庫需要額外步驟,且根據 SQL 資料庫的大小,可能需要相當長的時間。

請依照以下步驟重新驗證客戶管理的金鑰:

  1. 在工作區中,右鍵點擊 SQL 資料庫或 ... 的內容選單。 選擇 [設定]
  2. 選擇加密(預覽)。
  3. 若要嘗試重新驗證客戶管理的金鑰,請選擇 「重新驗證客戶管理的金鑰 」按鈕。 如果重新驗證成功,恢復對 SQL 資料庫的存取可能需要一些時間。

備註

當你重新驗證一個 SQL 資料庫的金鑰時,該金鑰會自動對你工作空間內所有 SQL 資料庫進行重新驗證。

局限性

在 Microsoft Fabric 中使用客戶管理的 SQL 資料庫金鑰時的現行限制:

  • Microsoft Fabric 的 SQL 資料庫不支援 4,096 位元金鑰。 支援的金鑰長度為 2,048 位元與 3,072 位元。
  • 客戶管理的金鑰必須是 RSA 或 RSA-HSM 非對稱金鑰。
  • 目前,客戶管理的金鑰加密服務可在以下地區提供:
    • 美國:美國東部2號公路、美國中北部、美國南部中部
    • 亞洲:澳洲東部、東南亞、阿聯酋北部
    • 歐洲:北歐、西歐