全部產品
Search
文件中心

ApsaraDB RDS:設定透明資料加密TDE

更新時間:Oct 24, 2025

在安全合規或待用資料加密等情境下,推薦使用透明資料加密TDE(Transparent Data Encryption)功能,對資料檔案執行即時I/O加密和解密,通過在資料庫層執行待用資料加密,阻止可能的攻擊者繞過資料庫直接從儲存中讀取敏感資訊,有效提高資料庫中敏感性資料的安全性。

背景資訊

簡介:TDE通過在資料庫層執行待用資料加密,阻止可能的攻擊者繞過資料庫直接從儲存中讀取敏感資訊。開啟透明資料加密TDE功能後,會對資料在寫入磁碟之前進行加密,從磁碟讀入記憶體時進行解密。經過資料庫身分識別驗證的應用和使用者可以繼續透明地訪問應用資料(不需要更改應用代碼或配置),而嘗試讀取資料表空間檔案中的敏感性資料的OS使用者以及嘗試讀取磁碟或備份資訊的未知使用者將不允許訪問明文資料。

密鑰:TDE加密使用的密鑰由Key Management Service(KMS)產生和管理,RDS不提供加密所需的密鑰和認證。您可以使用阿里雲自動產生的密鑰,也可以使用自訂密鑰並授權RDS使用。

密碼編譯演算法:開通TDE後,不同資料庫版本的密碼編譯演算法如下所示。

資料庫版本

支援的密碼編譯演算法

修改密碼編譯演算法

MySQL 5.6

AES_128_ECB

不支援修改。

MySQL 5.7、8.0

  • AES_256_CBC(預設值)

  • SM4_CTR

使用參數innodb_encrypt_algorithm進行修改。

重要

參數innodb_encrypt_algorithm修改風險較大,會影響執行個體內所有加密資料的加解密演算法選擇,包括加密表和加密日誌等,若參數和資料實際的密碼編譯演算法不同,會導致解析失敗。innodb_encrypt_algorithm參數控制台不可見,如需修改請提交工單。

適用範圍

  • 如需使用TDE功能,執行個體需滿足以下條件:

    • 資料庫版本:MySQL 8.0、5.7或5.6,且核心小版本在20191015及以上。

    • 產品系列:高可用系列或叢集系列。

注意事項

  • TDE開通後無法關閉,無法修改密鑰,會顯著增加CPU使用率

  • 執行個體切換:TDE開通過程中會重啟執行個體造成執行個體切換,一般會有30秒左右的執行個體不可用,建議在業務低峰期操作,並確保應用具有自動重連機制。

  • 無需代碼修改:開通TDE不會增加資料檔案的大小,應用側無需修改代碼與配置即可使用TDE功能。

  • 資料恢複限制:TDE開通後,不支援跨地區恢複。如需恢複資料到本地,需要先解密資料

  • 變更配置限制:TDE開通後,不支援將高可用系列變更為叢集系列。

  • 自訂密鑰限制:使用已有自訂密鑰時,需要注意以下事項:

    • 自訂密鑰僅支援對稱金鑰,不支援非對稱金鑰。

    • KMS執行個體不可用(到期或刪除)、禁用密鑰、設定密鑰刪除計劃或者刪除密鑰材料都會造成密鑰不可用,進而導致RDS執行個體資料不可恢複。

    • 撤銷授權關係後,重啟RDS執行個體會導致RDS執行個體不可用。

  • 核心版本升級:為保證執行個體的穩定性,建議您將主執行個體和唯讀執行個體(如有)的核心小版本均升級至最新版本

開通透明資料加密TDE

您可以使用阿里雲自動產生的密鑰開通TDE功能,也可以使用自訂密鑰並授權RDS使用。開通TDE功能時需要使用阿里雲主帳號或者具有AliyunSTSAssumeRoleAccess許可權的帳號。

  1. 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。

  2. 在左側導覽列單擊資料安全性並選擇TDE頁簽。

  3. TDE設定 > TDE狀態處單擊按鈕開通TDE功能。

  4. 選擇需要使用的密鑰類型:

    • 使用自動產生的密鑰:該方式使用的加密金鑰為KMS的服務密鑰。

    • 使用已有自訂密鑰:選擇已有的自訂密鑰(僅支援對稱金鑰)。

      說明

      如無可用密鑰,需單擊前往建立在Key Management Service控制台建立密鑰並匯入內建的密鑰材料,建立密鑰時密鑰類型選擇對稱金鑰

  5. 單擊確定,開通TDE功能。

使用TDE加密與解密資料

加密資料

您可以登入資料庫,使用以下命令對待加密的表進行加密。

說明

開通TDE功能後,已有資料表不會自動加密,需要手動執行以下命令完成加密操作。

  • MySQL 5.6

    ALTER TABLE <tablename> engine=innodb,block_format=encrypted;
  • MySQL 5.7或8.0

    ALTER TABLE <tablename> encryption='Y';

解密資料

您可以登入資料庫,使用以下命令對資料進行解密。

  • MySQL 5.6

    ALTER TABLE <tablename> engine=innodb,block_format=default;
  • MySQL 5.7或8.0

    ALTER TABLE <tablename> encryption='N';

常見問題

  • Q1:開啟TDE後,常用資料庫工具(Navicat等)還能正常使用嗎?

    A:可以正常使用。

  • Q2:開啟TDE後,還能正常遷移資料到其他RDS執行個體嗎?

    A:可以正常遷移。

  • Q3:加密後查看資料為什麼還是明文的?

    A:查詢資料時會解密並讀取到記憶體,所以是明文顯示。開啟TDE可以防止備份泄露導致資料泄露,備份檔案是加密的,無法用於恢複到本地,如果要恢複資料到本地,需要先解密資料。

相關文檔

相關API

API

描述

ModifyDBInstanceTDE - 修改RDS執行個體透明資料加密TDE狀態

開啟RDS執行個體透明資料加密時,需將TDEStatus參數設定為Enabled,其他參數請按需設定。