文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  NDB檔案系統加密實作

25.6.14.2 NDB檔案系統加密實作

對於NDB透明資料加密 (TDE),資料節點會將靜態的使用者資料加密,並由密碼(檔案系統密碼)提供安全性,該密碼用於加密和解密每個資料節點上的祕密檔案。祕密檔案包含節點主金鑰 (NMK),該金鑰稍後用於加密用於持久性的不同檔案類型。NDB TDE加密使用者資料檔案,包括LCP檔案、重做日誌檔案、資料表空間檔案和取消日誌檔案。

您可以使用 ndbxfrm 公用程式來查看檔案是否已加密,如下所示

> ndbxfrm -i ndb_5_fs/LCP/0/T2F0.Data
File=ndb_5_fs/LCP/0/T2F0.Data, compression=no, encryption=yes
> ndbxfrm -i ndb_6_fs/LCP/0/T2F0.Data
File=ndb_6_fs/LCP/0/T2F0.Data, compression=no, encryption=no

可以使用 ndb_secretsfile_reader 程式從祕密檔案取得金鑰,如下所示

> ndb_secretsfile_reader --filesystem-password=54kl14 ndb_5_fs/D1/NDBCNTR/S0.sysfile
ndb_secretsfile_reader: [Warning] Using a password on the command line interface can be insecure.
cac256e18b2ddf6b5ef82d99a72f18e864b78453cc7fa40bfaf0c40b91122d18

每個節點的金鑰階層可以表示如下

  • 使用者提供的密碼 (P) 由金鑰推導函數使用隨機鹽值處理,以產生唯一密碼金鑰 (PK)。

  • PK(每個節點獨有)會加密每個節點在各自祕密檔案中的資料。

  • 祕密檔案中的資料包括唯一、隨機產生的節點主金鑰 (NMK)。

  • NMK 會加密(使用包裝)每個加密檔案的標頭中的一個或多個隨機產生資料加密金鑰 (DEK) 值(包括 LCP 和 TS 檔案,以及重做和取消日誌)。

  • 資料加密金鑰值 (DEK0, ..., DEKn) 用於加密每個檔案中[子集]的資料。

密碼會間接加密包含隨機 NMK 的祕密檔案,而 NMK 會加密節點上每個加密檔案標頭的一部分。加密的檔案標頭包含用於該檔案中資料的隨機資料金鑰。

加密由資料節點內的 NDBFS 層透明地實作。NDBFS 內部用戶端區塊照常在其檔案上操作;NDBFS 將實體檔案包裝額外的標頭和頁尾資訊,以支援加密,並在從檔案讀取和寫入資料時加密和解密資料。包裝的檔案格式稱為 ndbxfrm1

節點密碼會使用 PBKDF2 和隨機鹽值進行處理,以加密祕密檔案,該檔案包含隨機產生的 NMK,該 NMK 用於加密每個加密檔案中的隨機產生資料加密金鑰。

加密和解密的工作會在 NDBFS I/O 執行緒中執行(而不是在訊號執行緒中執行,例如 main、tc、ldm 或 rep)。這與壓縮的 LCP 和壓縮的備份的情況類似,並且通常會導致 I/O 執行緒 CPU 使用率增加;您可能希望調整 ThreadConfig(如果正在使用)關於 I/O 執行緒。