openGauss-透明資料加密

MySQL成长之路發表於2024-08-29

openGauss- 透明資料加密

可獲得性

本特性自openGauss 2.1.0版本開始引入。

特性簡介

透明資料加密(Transparent Data Encryption),是資料庫在將資料寫入儲存介質時對資料進行加密,從儲存介質中讀取資料時自動解密,防止攻擊者繞過資料庫認證機制直接讀取資料檔案中的資料,以解決靜態資料洩露問題。該功能對於應用層幾乎透明無感知,使用者可根據需要決定是否啟用透明資料加密功能。

客戶價值

為了防止攻擊者繞過資料庫認證機制直接讀取資料檔案中的資料,可以透過透明資料加密功能對資料庫的資料檔案進行加密,保證使用者必須在資料庫啟動後透過正常途徑連線資料庫,才可以讀取解密後的資料,達到資料保護的目的。

特性描述

採用三層金鑰結構實現金鑰管理機制,即根金鑰(RK)、主金鑰(CMK)和資料加密金鑰(DEK)。主金鑰由根金鑰加密保護,資料加密金鑰由主金鑰加密保護。資料加密金鑰用於對使用者資料進行加密和解密,每個表對應一個資料加密金鑰。

支援表級加密,允許使用者在建立表時指定是否對錶進行加密和使用的加密演算法,加密演算法支援AES_128_CTR和SM4_CTR兩種演算法,演算法一旦指定不可更改。對於建立表時指定為加密的表,資料庫會自動為該表申請建立資料加密金鑰,並將加密演算法、金鑰密文和對應主金鑰ID等引數使用"keyword=value"格式儲存在pg_class系統表中的reloptions欄位中。

對於加密表,允許使用者切換表的加密狀態,即將加密表切換為非加密表,或將非加密表切換為加密表。如果在建立表時未使能加密功能,後續無法再切換為加密表。

對於加密表,支援資料加密金鑰輪轉。金鑰輪轉後,使用舊金鑰加密的資料仍使用舊金鑰解密,新寫入的資料使用新金鑰加密。金鑰輪轉時不更換加密演算法。

特性增強

無。

特性約束

當前版本主要實現對接華為雲KMS服務,支援表級金鑰儲存,實現對行存表加密,規格約束如下:

  • 支援heap儲存行存表加密。
  • 不支援列存加密,不支援物化檢視加密,不支援ustore儲存引擎加密。
  • 不支援索引和Sequence加密,不支援XLOG日誌加密,不支援MOT記憶體表加密,不支援系統表加密。
  • 使用者在建立表時可以指定加密演算法,加密演算法一旦指定不可更改。如果建立表時設定enable_tde為on,但是不指定加密演算法encrypt_algo,則預設使用AES_128_CTR加密演算法。
  • 如果在建立表時未開啟加密功能或指定加密演算法,後續無法再切換為加密表。
  • 對於已分配加密金鑰的表,切換表的加密和非加密狀態,不會更換金鑰和加密演算法。
  • 資料金鑰輪轉只有開啟表加密功能時才支援輪轉。
  • 不支援單叢集跨region的多副本主備同步,不支援單叢集跨region的擴容,不支援跨region的備份恢復、叢集容災和資料遷移場景。
  • 混合雲場景如果使用華為雲KMS和管控面功能,則可以支援透明資料加密,其他KMS服務如果介面不相容則無法支援。
  • 加密表的查詢效能比不加密時會有所劣化,對於效能有較高要求的情況下需謹慎開啟加密功能。

依賴關係

依賴外部KMS提供金鑰管理服務,目前支援對接華為雲KMS服務。

詳情檢視:https://opengauss.org

詳情檢視:https://docs-opengauss.osinfra.cn

相關文章