透明資料加密TDE(Transparent Data Encryption)可對資料檔案執行即時I/O加密和解密,資料在寫入磁碟之前進行加密,從磁碟讀入記憶體時進行解密。TDE不會增加資料檔案的大小,開發人員無需更改任何應用程式,即可使用TDE功能。
前提條件
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 | 需為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及以上。 |
背景資訊
PolarDB MySQL版的TDE加密採用國際流行的AES演算法,密鑰長度為256位元。TDE加密使用的密鑰由Key Management Service(KMS)產生和管理,PolarDB MySQL版不提供加密所需的密鑰和認證。部分可用性區域不僅可以使用阿里雲自動產生的密鑰,也可以使用內建的密鑰材料產生資料密鑰,然後授權PolarDB MySQL版使用。
注意事項
如果是IO bound情境,開通TDE後,可能會對資料庫效能產生一定影響。
已加入全球資料庫網路(GDN)的叢集支援開啟TDE功能。GDN中的主叢集開啟TDE功能後,GDN中的從叢集會預設同步開啟該功能,且從叢集使用的密鑰及密鑰所在地區與主叢集相同,密鑰所在地區不支援修改。
暫不支援單獨為GDN中的從叢集開啟TDE功能。
操作步驟
啟用TDE加密會導致PolarDB叢集重啟,請謹慎操作。
TDE開通後將無法關閉。
登入PolarDB控制台。
在左上方,選擇叢集所在地區。
找到目的地組群,單擊叢集ID。
在左側導覽列單擊 。
在TDE配置頁簽,開啟TDE狀態開關。
在設定TDE對話方塊中,選擇使用服務密鑰(阿里雲自動產生)或使用已有自訂密鑰。
說明目前TDE支援的密鑰類型為
Aliyun_AES_256
、Aliyun_SM4
。如果您選擇使用服務密鑰(阿里雲自動產生),單擊確定,開通TDE。
如果您選擇使用已有自訂密鑰,下拉選擇由Key Management Service(KMS)產生的密鑰,單擊確定,開通TDE。
說明使用已有自訂密鑰時,需要滿足以下條件:
已開通KMS。具體操作請參見開通Key Management Service。
已授權PolarDB訪問KMS。具體操作,請參見授權PolarDB訪問KMS。
需要使用阿里雲帳號或者具有AliyunSTSAssumeRoleAccess許可權的帳號。
如果沒有自訂密鑰,需要單擊前往建立,在Key Management Service控制台建立密鑰並匯入內建的密鑰材料。詳情請參見建立密鑰。
使用已有自訂密鑰時,需要注意:
禁用密鑰、設定密鑰刪除計劃或者刪除密鑰材料都會造成密鑰不可用。
撤銷授權關係後,重啟PolarDB叢集會導致PolarDB叢集不可用。
開通TDE大約需要10分鐘時間,請您耐心等待。
進階選項
如果您需要開啟進階選項功能,叢集需滿足下述條件的其中之一即可:
叢集版本為PolarDB MySQL版8.0版本且核心小版本為8.0.1.1.15及以上。
叢集版本為PolarDB MySQL版5.7版本且核心小版本為5.7.1.0.35及以上。
開通TDE時,您可以在設定TDE對話方塊中,開啟進階選項功能。該功能開啟後,所有建立的表將自動加密。
加密和解密操作
如果開啟了進階選項功能,所有建立的表將自動加密,無須手動進行加密操作。對於現存的表,使用者還需要進行以下操作才能進行資料加密。
開啟TDE之後,您還需要登入資料庫對MySQL的表進行DDL操作才能進行資料加密或者解密,不同核心版本的加密和解密操作存在差異,具體如下:
操作類型 | PolarDB MySQL 5.6 | PolarDB MySQL 5.7&PolarDB MySQL 8.0 |
加密 |
|
|
解密 |
|
|
通過以上alter table命令對錶進行加密或解密時,該表會處於鎖定狀態。