SQL Database、SQL 受控執行個體和 Azure Synapse Analytics 的透明資料加密

適用於:Azure SQL DatabaseAzure SQL 受控執行個體Azure Synapse Analytics

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

注意

本文適用於 Azure SQL Database、Azure SQL 受控執行個體和 Azure Synapse Analytics (原為 SQL DW 的專用 SQL 集區)。 如需 Synapse 工作區中專用 SQL 集區的透明資料加密文件,請參閱 Azure Synapse Analytics 加密

視為客戶內容的某些項目 (例如資料表名稱、物件名稱與索引名稱) 可能會在記錄檔中傳輸,以便由 Microsoft 支援及進行疑難排解。

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

針對 Azure SQL Database 和 Azure Synapse,TDE 保護裝置會在伺服器層級設定,並由所有與該伺服器相關聯的資料庫繼承。 針對 Azure SQL 受控執行個體,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 和 SQL 受控執行個體是否符合內部安全性原則規範。

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

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

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

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

若要開始使用與 Azure Key Vault 整合的 TDE,請參閱使用您自己的 Key Vault 金鑰來開啟透明資料加密操作指南。

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

在 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 憑證。

Service-managed transparent data encryption

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

Transparent data encryption with Bring Your Own Key support

您也可以在 Azure SQL 資料庫的資料庫層級上使用適用於 TDE 的客戶自控金鑰。 如需詳細資訊,請參閱透明資料加密 (TDE) 資料庫層級的客戶自控金鑰

後續步驟

在下列文章中深入了解相關概念: