全部產品
Search
文件中心

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

更新時間:Nov 16, 2024

在安全合規或待用資料加密等情境下,推薦使用透明資料加密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的值前,將已加密的資料全部解密,切換密碼編譯演算法後再重新加密。

前提條件

  • 執行個體系列、儲存類型與資料庫版本需要滿足以下條件:

    • RDS MySQL 8.0高可用系列本地碟及雲端硬碟執行個體(核心小版本20191015及以上)

    • RDS MySQL 5.7高可用系列本地碟及雲端硬碟執行個體(核心小版本20191015及以上)

    • RDS MySQL 5.6

    說明
  • 已使用阿里雲主帳號授權RDS存取金鑰管理服務KMS(Key Management Service)。詳情請參見授權PolarDB訪問KMS

  • 已開通Key Management Service(KMS)。如果您未開通KMS,可在開通TDE過程中根據引導開通KMS。

注意事項

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

  • 執行個體切換:TDE開通過程中會重啟執行個體造成執行個體切換,建議在業務低峰期操作,並確保應用具有自動重連機制。執行個體切換的影響請參見執行個體切換的影響

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

  • 資料恢複:TDE開通後,執行個體無法支援跨地區恢複,如需恢複資料到本地,需要先解密資料

  • 核心版本:為保證執行個體的穩定性,建議您將核心小版本升級到最新。如果主執行個體包含唯讀執行個體,建議將所有隻讀執行個體和主執行個體的核心小版本都升級到最新。更多資訊,請參見升級核心小版本

  • 變更配置:開啟TDE的執行個體,暫不支援將高可用系列變更為叢集系列。

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

    • KMS執行個體不可用(到期或刪除)、禁用密鑰、設定密鑰刪除計劃或者刪除密鑰材料都會造成密鑰不可用。

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

    • 需要使用主帳號或者具有AliyunSTSAssumeRoleAccess許可權的帳號。

    • KMS執行個體或加密使用密鑰不可用會造成RDS執行個體資料不可恢複。

    說明

    關於密鑰的相關操作請參見Key Management Service

開通透明資料加密TDE

您可以使用阿里雲自動產生的密鑰開通TDE功能,也可以使用自訂密鑰並授權RDS使用。

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

  2. 在左側導覽列單擊資料安全性

  3. TDE頁簽單擊開通TDE功能。

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

    • 使用由阿里雲自動產生的密鑰:該方式使用的加密金鑰(KEK)為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';

常見問題

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

    可以正常使用。

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

    可以正常遷移。

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

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

相關文檔

相關API

API

描述

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

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