對於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 執行緒。