全部產品
Search
文件中心

PolarDB:設定透明資料加密TDE

更新時間:Aug 09, 2025

為滿足資料安全與合規性要求,您可以使用透明資料加密(TDE)功能。TDE在儲存層對資料檔案進行即時的I/O加密和解密,在資料寫入磁碟前加密,從磁碟讀入記憶體時解密。整個過程對應用程式完全透明,您無需修改任何業務代碼即可實現資料的加密保護。

功能簡介

PolarDB的TDE功能基於國際標準的AES(Advanced Encryption Standard)演算法,密鑰長度為256位,確保了加密的安全性。

TDE的密鑰管理依賴於阿里雲Key Management Service(KMS)。您可以選擇以下兩種方式管理密鑰:

  • 服務密鑰:由阿里雲自動為您建立和管理,操作便捷,無需額外配置。

  • 自訂密鑰:您可以在KMS中建立自己的密鑰,並授權PolarDB使用。這種方式讓您對密鑰有完全的控制權,包括密鑰的輪轉、禁用和刪除等生命週期管理,滿足更高的合規性要求。

前提條件

  • 您的PolarDB MySQL版叢集需滿足以下核心版本要求:

    產品系列

    資料庫引擎

    核心小版本

    叢集版

    MySQL 5.6

    需為5.6.1.0.21及以上。

    MySQL 5.7

    需為5.7.1.0.3及以上。

    MySQL 8.0.1MySQL 8.0.2

    說明

    Serverless叢集的MySQL 8.0.2版本不支援開啟TDE。

    需為8.0.1.1.1及以上。

    標準版

    MySQL 5.7

    需為5.7.1.0.3及以上。

    MySQL 8.0.1MySQL 8.0.2

    需為8.0.1.1.1及以上。

  • 如果您計劃使用自訂密鑰,還需滿足以下條件:

    • 開通阿里雲Key Management Service(KMS)。

    • 授權PolarDB訪問KMS

    • 使用阿里雲主帳號或具有AliyunSTSAssumeRoleAccess許可權的RAM使用者進行操作。

計費說明

  • 儲存費用:TDE不會增加資料檔案的大小,因此不產生額外的儲存費用。

  • 密鑰費用:

    • 使用服務密鑰:不收取任何費用。

    • 使用自訂密鑰PolarDB側不收費,但在Key Management Service(KMS)側將產生相關的密鑰費用

注意事項

  • 源叢集影響:

    • 功能開啟後無法關閉。請在充分評估業務需求和影響後再執行此操作。

    • 開啟TDE會導致叢集重啟,中斷Business Connectivity,請選擇適合的業務低峰期進行操作。

    • 在I/O密集型(IO-bound)的業務情境下,開啟TDE可能會對資料庫效能產生一定影響。

  • 自訂密鑰:使用自訂密鑰時,密鑰的可用性直接影響叢集的可用性。

    • 在KMS中對密鑰執行禁用、計劃刪除或刪除密鑰材料等操作,會造成密鑰不可用。

    • 撤銷了對PolarDB的授權後,重啟叢集會導致叢集不可用。

  • 全球資料庫網路(GDN):支援為加入全球資料庫網路(GDN)的叢集開啟TDE。

    • 主叢集開啟後,所有從叢集將自動同步開啟,且所使用的密鑰及密鑰所在地區均與主叢集相同,密鑰所在地區不支援修改。

    • 不支援為GDN中的從叢集單獨開啟TDE。

操作指南

步驟一:為叢集開啟TDE加密

重要

開啟TDE加密將導致叢集重啟,並且一旦開啟後無法關閉。因此,請在充分評估後謹慎進行操作。

  1. 前往PolarDB控制台,在目的地組群詳情頁內,單擊左側導覽列中配置与管理 > 安全管理,在TDE配置頁簽,開啟TDE状态開關。image

  2. 在彈出的對話方塊中,選擇密鑰類型:

    • 使用服務密鑰(阿里雲自動產生):無需額外配置,單擊確定即可。

    • 使用已有自訂密鑰:需要從下拉式清單中選擇一個您在KMS中已建立的密鑰,然後單擊確定。如果列表為空白,請先前往KMS控制台建立密鑰

      說明

      目前TDE支援的加密類型為Aliyun_AES_256Aliyun_SM4,建立KMS的密鑰,請注意加密類型。

    image

  3. 開通TDE大約需要10分鐘時間,請您耐心等待叢集重啟。

步驟二:(可選)為建立表自動開啟加密

如果您希望此後在叢集中建立的所有新表都自動應用加密,可以在開啟TDE時進行設定,勾選高级选项開關即可。

  • 適用情境:適用於對資料安全有嚴格要求,希望預設加密所有新產生資料的業務。

  • 版本要求

    • MySQL 8.0,且 核心小版本需為8.0.1.1.15及以上。

    • MySQL 5.7,且 核心小版本需為5.7.1.0.35及以上。

步驟三:為已有表加密和解密

為叢集開啟TDE後,並不會自動加密存量表。您需要通過ALTER TABLE命令手動為指定的存量表開啟或關閉加密。

說明
  • 如果您開啟了高级选项,則無需對建立的表執行加密操作,系統已自動加密。

  • 執行ALTER TABLE命令對錶進行加密或解密時,該表會被鎖定,期間無法進行讀寫操作。

資料庫版本

加密表的命令

解密表的命令

MySQL 5.6

ALTER TABLE <表名> BLOCK_FORMAT=ENCRYPTED;

ALTER TABLE <表名> BLOCK_FORMAT=DEFAULT;

MySQL 5.7MySQL 8.0

ALTER TABLE <表名> ENCRYPTION = 'Y';

ALTER TABLE <表名> ENCRYPTION = 'N';

步驟四:驗證表是否已加密

您可以通過查詢SHOW CREATE TABLE <table_name>;命令來確認表的加密狀態。

  • 對於MySQL 5.7MySQL 8.0版本,如果返回資訊包含ENCRYPTION='Y',則表示該表已加密。

  • 對於MySQL 5.6版本,如果返回資訊包含BLOCK_FORMAT=ENCRYPTED,則表示該表已加密。

常見問題

開啟TDE對業務有什麼影響?

主要有兩方面影響:

  1. 開啟過程會重啟叢集,導致業務短暫中斷。

  2. 對於I/O密集型業務,資料加解密會消耗少量CPU資源,可能帶來一定的效能影響。

建議您在業務低峰期操作,並進行充分測試。

為什麼需要TDE?它能解決什麼安全問題?

TDE主要用於保護待用資料,即儲存在磁碟上的資料。它能夠有效阻止可能的攻擊者繞過資料庫直接從儲存中讀取敏感資訊,從而顯著增強資料庫中敏感性資料的安全性。這是一種對應用程式透明的底層資料保護機制。

是否可以限制RAM使用者在建立叢集時必須開啟TDE加密功能?

可以。您可以通過設定RAM配置策略,來強制要求RAM使用者在控制台或API建立叢集時必須開啟TDE加密功能。

相關內容

相關API

API

描述

DescribeDBClusterTDE

查詢PolarDB叢集的TDE設定詳情。

DescribeUserEncryptionKeyList

查詢PolarDB叢集的自訂密鑰列表。

CheckKMSAuthorized

檢查KMS密鑰是否已存在。

ModifyDBClusterTDE

開啟PolarDB叢集的TDE功能。