全部產品
Search
文件中心

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

更新時間:Aug 17, 2024

在安全合規或待用資料加密等情境下,推薦使用透明資料加密TDE(Transparent Data Encryption)功能,對資料檔案執行即時I/O加密和解密,通過在資料庫層執行待用資料加密,阻止可能的攻擊者繞過資料庫直接從儲存中讀取敏感資訊,有效提高資料庫中敏感性資料的安全性。更多資料庫加密技術介紹和對比,請參見不同資料庫加密技術對比

背景資訊

TDE通過在資料庫層執行靜止資料加密,阻止可能的攻擊者繞過資料庫直接從儲存中讀取敏感資訊。經過資料庫身分識別驗證的應用和使用者可以繼續透明地訪問應用資料(不需要更改應用代碼或配置),而嘗試讀取資料表空間檔案中的敏感性資料的OS使用者以及嘗試讀取磁碟或備份資訊的未知使用者將不允許訪問明文資料。

開啟透明資料加密TDE功能後,會對資料在寫入磁碟之前進行加密,從磁碟讀入記憶體時進行解密。TDE不會增加資料檔案的大小,開發人員無需更改任何應用程式,即可使用TDE功能。

TDE加密使用的密鑰由Key Management Service(KMS)產生和管理,RDS不提供加密所需的密鑰和認證。您不僅可以使用阿里雲自動產生的密鑰,也可以使用自訂密鑰,授權RDS使用。

開通後,根據執行個體版本不同,密碼編譯演算法如下:

  • RDS MySQL 8.0、5.7:目前支援的密碼編譯演算法包括AES_256_CBC, SM4_CTR兩種,使用參數innodb_encrypt_algorithm進行配置。

  • RDS MySQL 5.6:僅支援AES_128_ECB,不支援配置。

重要

參數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)。詳情請參見授權RDS訪問KMS

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

注意事項

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

  • TDE開通過程中會重啟執行個體造成執行個體切換,請做好業務安排,謹慎操作。執行個體切換的影響請參見執行個體切換的影響

  • TDE開通後無法關閉。

  • TDE開通後無法修改密鑰。

  • TDE開通後,使用者如果要恢複資料到本地,需要先通過RDS解密資料

  • TDE開通後,會顯著增加CPU使用率。

  • 使用已有自訂密鑰時,需要注意:

    • 禁用密鑰、設定密鑰刪除計劃或者刪除密鑰材料都會造成密鑰不可用。

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

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

    說明

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

使用由阿里雲自動產生的密鑰開通TDE

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

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

  3. TDE頁簽單擊未開通左邊的滑塊。

  4. 選擇使用由阿里雲自動產生的密鑰,單擊確定,開通TDE。

    說明

    該方式使用的加密金鑰(KEK)為KMS的服務密鑰。

使用已有自訂密鑰開通TDE

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

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

  3. TDE頁簽單擊未開通左邊的滑塊。

  4. 選擇 使用已有自訂密鑰,選擇密鑰,單擊確定,開通TDE。

    說明

    如果沒有自訂密鑰,需要單擊前往建立,在Key Management Service控制台建立密鑰並匯入內建的密鑰材料。詳情請參見建立密鑰

加密操作

登入資料庫,執行如下命令,對要加密的表進行加密。

  • MySQL 5.6

    alter table <tablename> engine=innodb,block_format=encrypted;
  • MySQL 5.7或8.0

    alter table <tablename> encryption='Y';

解密操作

如果您要對TDE加密的表解密,請執行如下命令:

  • 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

描述

開啟TDE

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