全部產品
Search
文件中心

PolarDB:設定透明資料加密TDE

更新時間:Sep 14, 2024

透明資料加密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.1MySQL 8.0.2

    需為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及以上。

背景資訊

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開通後將無法關閉。

  1. 登入PolarDB控制台

  2. 在左上方,選擇叢集所在地區。

  3. 找到目的地組群,單擊叢集ID。

  4. 在左側導覽列單擊配置與管理 > 安全管理

  5. TDE配置頁簽,開啟TDE狀態開關。

    MySQL開通TDE

  6. 設定TDE對話方塊中,選擇使用服務密鑰(阿里雲自動產生)使用已有自訂密鑰

    使用阿里雲自動產生的密鑰

    說明

    目前TDE支援的密鑰類型為Aliyun_AES_256Aliyun_SM4

    • 如果您選擇使用服務密鑰(阿里雲自動產生),單擊確定,開通TDE。

    • 如果您選擇使用已有自訂密鑰,下拉選擇由Key Management Service(KMS)產生的密鑰,單擊確定,開通TDE。自訂密鑰

      說明
      • 使用已有自訂密鑰時,需要滿足以下條件:

      • 如果沒有自訂密鑰,需要單擊前往建立,在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 <tablename> block_format=encrypted;
alter table <tablename> encryption= 'Y';

解密

alter table <tablename> block_format=default;
alter table <tablename> encryption= 'N';
說明

通過以上alter table命令對錶進行加密或解密時,該表會處於鎖定狀態。