實作透明資料加密

已完成

透明資料加密 (TDE) 將待用資料加密,有助於保護 Azure SQL Database、Azure SQL 受控執行個體和 Azure Synapse Analytics 中的 Synapse SQL,以抵禦惡意離線活動的威脅。 它會對資料庫、相關聯的備份和待用的交易記錄檔執行即時加密和解密,而不需變更應用程式。 所有新部署的 Azure SQL 資料庫預設啟用 TDE,但對於 Azure SQL Database、Azure SQL 受控執行個體或 Azure Synapse Analytics 的舊版資料庫,則需要手動啟用。

TDE 會在分頁層次上執行資料的即時 I/O 加密和解密。 系統會在將每個頁面讀取至記憶體時對它進行解密,然後在將頁面寫入至磁碟之前對它進行加密。 TDE 會使用一種名為資料庫加密金鑰 (DEK) 的對稱金鑰,將整個資料庫的儲存體加密。 資料庫啟動時,加密的 DEK 會解密,然後在 SQL Server 資料庫引擎處理序中用於解密和重新加密資料庫檔案。 DEK 受到 TDE 保護裝置的保護。 TDE 保護裝置可以是服務管理的憑證 (服務管理的透明資料加密),或儲存在 Azure Key Vault 中的非對稱金鑰 (客戶管理的透明資料加密)。

若為 Azure SQL Database 和 Azure Synapse Analytics,TDE 保護器在邏輯 SQL 伺服器層級設定,並由該伺服器相關聯的所有資料庫繼承。 若為 Azure SQL 受控執行個體 (BYOK 功能預覽版),TDE 保護器在執行個體層級設定,並由該執行個體上所有加密的資料庫繼承。 除非另有說明,「伺服器」字詞在本文件中指的是伺服器和執行個體兩者。

依預設,所有新建立的 SQL Database 均會使用服務受控的透明資料加密進行加密。 加密資料庫來源時,預設會加密透過還原、異地複寫和資料庫複本建立的目標資料庫。 不過,未加密資料庫來源時,預設不會加密透過還原、異地複寫和資料庫複本建立的目標資料庫。 依預設,不會加密 2017 年 5 月之前建立的現有 SQL Database 和 2019 年 2 月之前建立的現有 SQL 受控執行個體資料庫。 透過還原建立的 SQL 受控執行個體資料庫會從來源繼承加密狀態。 若要還原現有的 TDE 加密資料庫,必須先將必要的 TDE 憑證匯入 SQL 受控執行個體。 若要了解資料庫的加密狀態,請從sys.dm_database_encryption_keys DMV 執行選取查詢,並檢查 encryption_state_desc 資料行的狀態。

TDE 無法用來加密 SQL Database 和 SQL 受控執行個體中的系統資料庫,例如 master 資料庫。 master 資料庫包含對使用者資料庫執行 TDE 作業所需的物件。 建議不要將任何敏感性資料儲存在系統資料庫中。 例外狀況是 tempdb,一律會使用 TDE 加密來保護儲存在該處的資料。

服務管理的透明資料加密

在 Azure 中,TDE 的預設設定為 DEK 會受到內建伺服器憑證保護。 每個伺服器的內建伺服器憑證都是唯一的,使用的加密演算法為 AES 256。 如果資料庫具有異地複寫關聯性,則主要和異地次要資料庫都會受到主要資料庫的父伺服器金鑰保護。 如果兩個資料庫連線到相同的伺服器,則也會共用同一個內建憑證。 Microsoft 會遵循內部安全性原則來自動旋轉這些憑證,而根金鑰是由 Microsoft 內部祕密存放區保護。 客戶可以在 Microsoft 信任中心提供的獨立第三方稽核報告中,確認 SQL Database 對內部安全性原則的合規性。

Microsoft 也會視異地複寫和還原的需要順暢地移動和管理金鑰。

由客戶管理的透明資料加密:攜帶您自己的金鑰

客戶管理的 TDE 也稱為 TDE 的攜帶您自己的金鑰 (BYOK) 支援。 在此案例中,加密 DEK 的 TDE 保護裝置是客戶管理的非對稱金鑰,該金鑰會儲存在客戶擁有及管理的 Azure Key Vault (Azure 的雲端式外部金鑰管理系統) 中,而且一律不會離開金鑰保存庫。 TDE 保護器可以由金鑰保存庫產生,或從內部部署硬體安全模組 (HSM) 裝置傳輸至金鑰保存庫。 SQL Database 必須由客戶擁有的金鑰保存庫授與權限,才能解密和加密 DEK。 如果撤銷邏輯 SQL 伺服器對金鑰保存庫的權限,則無法存取資料庫,所有資料都加密

透過與 Azure Key Vault 整合的 TDE,使用者可以使用 Azure Key Vault 功能來控制金鑰管理工作,包括金鑰輪替、金鑰保存庫權限、金鑰備份,以及啟用所有 TDE 保護裝置的稽核/報告功能。 Key Vault 可提供集中金鑰管理、使用嚴密監控的 HSM,並能區分管理金鑰和資料的責任,以協助符合安全性原則的合規性。

透明數據加密組態表單的螢幕快照。

移動以透明資料加密保護的資料庫

在 Azure 中執行作業時,您無須解密資料庫。 目標會自動繼承來源資料庫或主要資料庫的 TDE 設定。 其中包含的作業涉及:

  • 異地復原
  • 自助式時間點還原
  • 還原已刪除的資料庫
  • 使用中的地理複寫
  • 建立資料庫複本
  • 將備份檔案還原至 Azure SQL 受控執行個體

不支援在 Azure SQL 受控執行個體中手動為服務管理的 TDE 所加密的資料庫建立「只複製」備份,因為無法存取用於加密的憑證。 使用時間點還原功能將此類型的資料庫移至另一個 SQL 受控執行個體,或切換至客戶自控金鑰。

當您匯出受 TDE 保護的資料庫時,不會對匯出的資料庫內容進行加密。 這些匯出的內容會儲存在未加密的 BACPAC 檔案中。 請務必為 BACPAC 檔案施以適當的保護措施,並在匯入新資料庫作業完成之後啟用 TDE。

例如,如果從 SQL Server 執行個體匯出 BACPAC 檔案,新資料庫的匯入內容並不會自動加密。 同樣地,如果將 BACPAC 檔案匯入 SQL Server 執行個體,新的資料庫也不會自動加密。

但當您將資料庫匯出至 SQL 資料庫或從中匯出時,則屬例外。 TDE 已在新的資料庫上啟用,但 BACPAC 檔案本身仍不會加密。

管理透明資料加密

在 Azure 入口網站中管理 TDE。

若要透過 Azure 入口網站設定 TDE,您必須以 Azure 擁有者、參與者或 SQL 安全性管理員的身分連線。

在資料庫層級啟用和停用 TDE。 針對 Azure SQL 受控執行個體,使用 Transact-SQL (T-SQL) 在資料庫上開啟和關閉 TDE。 針對 Azure SQL Database 和 Azure Synapse,您可以在使用 Azure 系統管理員或參與者帳戶登入之後,在 Azure 入口網站中管理資料庫的 TDE。 在您的使用者資料庫下方,找到 TDE 設定。 依預設,會使用伺服器層級加密金鑰。 系統會自動為包含資料庫的伺服器產生 TDE 憑證。

顯示如何在資料庫層級啟用和停用透明數據加密的螢幕快照。

您可以在伺服器或執行個體層級設定 TDE 主要金鑰,稱為 TDE 保護裝置。 若要使用具有 BYOK 支援的 TDE,並使用 Azure Key Vault 中的金鑰來保護您的資料庫,請開啟您伺服器或受控執行個體下方的 TDE 設定。

顯示如何使用透明數據加密搭配自備金鑰支援的螢幕快照。

您也可以在 Azure SQL 資料庫的資料庫層級上使用適用於 TDE 的客戶自控金鑰。