適用於:✅Microsoft Fabric 中的 SQL 資料庫
Microsoft Fabric 使用 Microsoft 管理的金鑰加密所有靜態資料。 SQL 資料庫將所有資料存放在遠端 Azure Storage 帳戶中。 為了符合使用 Microsoft 管理金鑰的靜態加密要求,SQL 資料庫使用的每個 Azure Storage 帳號都啟用 了服務端加密 。
透過 客戶管理的 Fabric 工作區金鑰,你可以利用 Azure Key Vault 金鑰,為 Microsoft Fabric 工作區的資料增加另一層保護,包括 Microsoft Fabric 中 SQL 資料庫中的所有資料。 客戶管理的金鑰提供更大彈性,讓您能管理其輪替、控制存取及審計使用情況。 客戶管理的金鑰也協助組織滿足資料治理需求,並符合資料保護與加密標準。
- 當您在 Microsoft Fabric 中為工作空間設定客戶管理金鑰時,該工作區內所有 SQL 資料庫(及 )會自動啟用
tempdb,並使用指定的客戶管理金鑰。 此流程無縫,無需人工介入。- 雖然所有現有 SQL 資料庫的加密過程會自動啟動,但並非即時完成。 持續時間取決於每個 SQL 資料庫的大小,較大的 SQL 資料庫需要更長時間來完成加密。
- 在設定客戶管理金鑰後,工作空間中建立的任何 SQL 資料庫也會使用客戶管理金鑰加密。
- 如果你移除客戶管理的金鑰,工作區中所有 SQL 資料庫的解密工作就會開始。 與加密一樣,解密也取決於 SQL 資料庫的大小,且可能需要時間完成。 解密後,SQL 資料庫會回復使用 Microsoft 管理的金鑰進行加密。
Microsoft Fabric 中 SQL 資料庫中透明資料加密的運作方式
透明資料加密能即時加密與解密資料庫、相關備份及交易日誌檔案的靜態狀態。
- 此過程發生在頁面層級,意即每頁在讀取記憶體時會解密,並在寫回磁碟前重新加密。
- 透明資料加密利用一種稱為資料庫加密金鑰(DEK)的對稱金鑰來保護整個資料庫的安全。
- 當資料庫啟動時,SQL Server 資料庫引擎會解密 DEK,並用它來管理加密與解密操作。
- 透明資料加密保護器具體來說是在工作區層級設定的客戶管理金鑰來保護 DEK。
備份與還原
一旦 SQL 資料庫以客戶管理的金鑰加密,任何新產生的備份也會用同一金鑰加密。
當你更改金鑰時,舊的 SQL 資料庫備份不會更新以使用最新的金鑰。 若要恢復以客戶管理金鑰加密的備份,請確保該金鑰資料已在 Azure Key Vault 中取得。 將所有舊版本的客戶管理金鑰保存在 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顯示ENCRYPTED為ASYMMETRIC_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 資料庫或選擇
...右鍵選單。 選擇 [設定]。 - 選取 [加密]。
- 要重新驗證客戶管理金鑰,請選擇 重新驗證客戶管理金鑰。 如果重新驗證成功,恢復對 SQL 資料庫的存取可能需要一些時間。
備註
當你重新驗證一個 SQL 資料庫的金鑰時,該金鑰會自動對你工作空間內所有 SQL 資料庫進行重新驗證。
局限性
在 Microsoft Fabric 中使用客戶管理的 SQL 資料庫金鑰時的現行限制:
- Microsoft Fabric 的 SQL 資料庫不支援 4,096 位元金鑰。 支援的金鑰長度為 2,048 位元與 3,072 位元。
- 客戶管理的金鑰必須是 RSA 或 RSA-HSM 非對稱金鑰。