為滿足資料安全與合規性要求,您可以使用透明資料加密(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.1、MySQL 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.1、MySQL 8.0.2
需為8.0.1.1.1及以上。
如果您計劃使用自訂密鑰,還需滿足以下條件:
開通阿里雲Key Management Service(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加密將導致叢集重啟,並且一旦開啟後無法關閉。因此,請在充分評估後謹慎進行操作。
前往PolarDB控制台,在目的地組群詳情頁內,單擊左側導覽列中,在TDE配置頁簽,開啟TDE状态開關。

在彈出的對話方塊中,選擇密鑰類型:
使用服務密鑰(阿里雲自動產生):無需額外配置,單擊確定即可。
使用已有自訂密鑰:需要從下拉式清單中選擇一個您在KMS中已建立的密鑰,然後單擊確定。如果列表為空白,請先前往KMS控制台建立密鑰。
說明目前TDE支援的加密類型為
Aliyun_AES_256與Aliyun_SM4,建立KMS的密鑰,請注意加密類型。

開通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 |
|
|
MySQL 5.7、MySQL 8.0 |
|
|
步驟四:驗證表是否已加密
您可以通過查詢SHOW CREATE TABLE <table_name>;命令來確認表的加密狀態。
對於MySQL 5.7、MySQL 8.0版本,如果返回資訊包含
ENCRYPTION='Y',則表示該表已加密。對於MySQL 5.6版本,如果返回資訊包含
BLOCK_FORMAT=ENCRYPTED,則表示該表已加密。
常見問題
相關內容
相關API
API | 描述 |
查詢PolarDB叢集的TDE設定詳情。 | |
查詢PolarDB叢集的自訂密鑰列表。 | |
檢查KMS密鑰是否已存在。 | |
開啟PolarDB叢集的TDE功能。 |