大數(shù)據(jù)“復(fù)活”記
965
2025-04-02
1?特性介紹
透明加密功能是GaussDB for DWS的高級特性,是對存在硬盤上的用戶數(shù)據(jù)加密存儲。目前支持行存和列存文件的加密存儲,支持到集群級別的透明加密配置。透明加密對客戶是無感知的,僅需要創(chuàng)建DWS集群時配置透明加密。
定義
透明加密:數(shù)據(jù)在文件落盤時加密,對用戶及上層使用SQL的應(yīng)用不感知。
價值
保障用戶數(shù)據(jù)安全。
范圍
透明加密核心是算法和密鑰,算法支持AES。密鑰管理使用華為公有云KMS服務(wù)管理。
2?應(yīng)用場景
數(shù)據(jù)庫使用客戶,對存儲在GaussDB for DWS中的業(yè)務(wù)數(shù)據(jù)有很高機密性要求。需要消減因更換磁盤磁盤流出或運維待非法通過直接讀取磁盤文件而繞過數(shù)據(jù)庫認(rèn)證及審計及數(shù)據(jù)丟換的風(fēng)險時,建議使用透明加密特性。需注意加解密有較小的性能開銷,實際的影響依賴硬件CPU處理相應(yīng)加密算法的效率。
3系統(tǒng)影響
系統(tǒng)容量影響
無。加密模式選用CTR,CTR流加密可以保證明文和密文長度相等。不會導(dǎo)致加密后數(shù)據(jù)量大于不加密。
性能影響
使用透明加密對數(shù)據(jù)導(dǎo)入,以及讀算子開銷較大的SQL查詢業(yè)務(wù)有較大。使用TPCDS測試模型評估的性能影響有如下參考值(不同硬件,不同測試模型):
AES: 性能下降小于4%
業(yè)務(wù)影響
無。透明加密對應(yīng)用層業(yè)務(wù)不感知。
可靠性影響
因GAUSSDB FOR DWS進(jìn)程重啟時,需要訪問KMS,故KMS服務(wù)及網(wǎng)絡(luò)可靠性會影響GAUSSDB FOR DWS可靠性。
需強力保證根密鑰的管理,一旦密鑰丟失,GaussDB for DWS中的數(shù)據(jù)將不可解密。
4相關(guān)特性
依賴特性
華為公有云KMS服務(wù)
互斥特性
無
影響特性
無
5?原理
5.1 概述
站在管理面視角:
? 租戶管理員登錄華為公有云后,在DWS Console上申請創(chuàng)建加密集群;
? DWS Service接收到創(chuàng)建加密集群請求后,向KMS Service申請主密鑰和集群密鑰,并生成數(shù)據(jù)庫密鑰下發(fā)給GaussDB內(nèi)核;
? GaussDB在集群初始化時加載密鑰,并加密保存;
站在數(shù)據(jù)面視角:
? SQL Client下發(fā)SQL請求到GaussDB的CN,CN解析SQL請求后下發(fā)給DN;
? DN處理SQL請求觸發(fā)寫IO操作時,若向磁盤中寫入數(shù)據(jù),則內(nèi)存數(shù)據(jù)加密寫入磁盤;若從磁盤中讀入數(shù)據(jù),則磁盤數(shù)據(jù)解密后加載到內(nèi)存;
5.2 密鑰管理
5.2.1 KMS密鑰管理
當(dāng)選擇KMS(密鑰管理服務(wù))對DWS進(jìn)行密鑰管理時,加密密鑰層次結(jié)構(gòu)有三層。按層次結(jié)構(gòu)順序排列,這些密鑰為主密鑰(CMK)、集群加密密鑰 (CEK)、數(shù)據(jù)庫加密密鑰 (DEK)。
主密鑰用于給CEK加密,保存在KMS中。
CEK用于加密DEK,CEK明文保存在DWS集群內(nèi)存中,密文保存在DWS服務(wù)中。
DEK用于加密數(shù)據(jù)庫中的數(shù)據(jù),DEK明文保存在DWS集群內(nèi)存中,密文保存在DWS服務(wù)中。
密鑰使用流程如下:
1. 用戶選擇主密鑰。
2. DWS隨機生成CEK和DEK明文。
3. KMS使用用戶所選的主密鑰加密CEK明文并將加密后的CEK密文導(dǎo)入到DWS服務(wù)中。
4. DWS使用CEK明文加密DEK明文并將加密后的DEK密文保存到DWS服務(wù)中。
5. DWS將DEK明文傳遞到集群中并加載到集群內(nèi)存中。
當(dāng)該集群重啟時,集群會自動通過API向DWS請求DEK明文,DWS將CEK、DEK密文加載到集群內(nèi)存中,再調(diào)用KMS使用主密鑰CMK來解密CEK,并加載到集群內(nèi)存中,最后用CEK明文解密DEK,并加載到集群內(nèi)存中,返回給集群。
加密密鑰輪轉(zhuǎn)
加密密鑰輪轉(zhuǎn)是指更新保存在DWS服務(wù)的密文。在DWS中,您可以輪轉(zhuǎn)已加密集群的加密密鑰CEK。
5.2.2 密鑰輪轉(zhuǎn)流程如下:
DWS集群啟動密鑰輪轉(zhuǎn)。
DWS根據(jù)集群的主密鑰來解密保存在DWS服務(wù)中的CEK密文,獲取CEK明文。
用獲取到的CEK明文解密保存在DWS服務(wù)中的DEK密文,獲取DEK明文。
DWS重新生成新的CEK明文。
DWS用新的CEK明文加密DEK并將DEK密文保存在DWS服務(wù)中。
用主密鑰加密新的CEK明文并將CEK密文保存在DWS服務(wù)中。
您可以根據(jù)業(yè)務(wù)需求和數(shù)據(jù)類型計劃多久輪轉(zhuǎn)一次加密密鑰。為了提高數(shù)據(jù)的安全性,建議用戶定期執(zhí)行輪轉(zhuǎn)密鑰以避免密鑰被破解的風(fēng)險。一旦您發(fā)現(xiàn)密鑰可能已泄露,請及時輪轉(zhuǎn)密鑰。
5.2.3 GaussDB內(nèi)核密鑰管理
創(chuàng)建密鑰:初次安裝啟動時,DWS Service接收到創(chuàng)建加密集群請求后,向KMS Service申請主密鑰和集群密鑰,并生成數(shù)據(jù)庫密鑰(DEK)下發(fā)給GaussDB內(nèi)核。并分發(fā)到GaussDB各節(jié)點。該DEK一次生成,終身使用,不可變更,不可輪轉(zhuǎn)。在快照(即備份)恢復(fù)時,同樣需要使用此前的DEK。
獲取密鑰:數(shù)據(jù)庫CN、DN在啟動時,會通過向一個url,傳入AK/SK,及當(dāng)前集群所在的區(qū)域(Region)信息,從管控面那里獲取到DEK。在這里每一個集群的URL都不同(包含了當(dāng)前集群的ClusterID);同一租戶的AK/SK相同;Region根據(jù)集群部署的區(qū)域(例如華北、華東)不同而可能不同。
5.2.4 相關(guān)可靠性設(shè)計
擴容,集群備份與恢復(fù)已實現(xiàn)密鑰密文記錄文件及相關(guān)配置文件的同步操作。DWS保存的DEK密文分布在所有管控節(jié)點及GAUSSDB內(nèi)核各節(jié)點上有較高的可靠性。
6 實施
6.1 配置
前提條件
已有華為云租戶帳號
安裝步驟
1.?????? 進(jìn)入華為公有云購買數(shù)據(jù)倉庫集群頁面。
2.?????? 如下圖高級配置選擇自定義,打開加密數(shù)據(jù)庫。
3.?????? 創(chuàng)建委托選擇是。
4.?????? 點擊立即購買,再點擊提交即可。
6.2?驗證
查看視圖:
pg_tde_info視圖,用于查看tde功能是否開啟,以及使用的哪種加密算法。
列名
字段
含義
is_encrypt
f/t
是否加密集群
g_tde_algo
AES-CTR-128
加密算法
remain
Remain
保留字段
用例編號
測試名稱
透明加密功能驗證
測試目的
使用透明加密后的數(shù)據(jù)文件是否可以分析,加密是否成功
預(yù)置條件
1,? Gauss ? 200透明加密集群和非透明加密集群已安裝,狀態(tài)正常。
2,? pg_filedump(需要glibc-2.14或以上版本才能運行)
測試步驟
1、? ? 查詢pg_tde_info視圖
非透明加密集群:
透明加密集群:
2、? ? 分別在透明加密集群和非透明加密集群創(chuàng)建如下表,并插入數(shù)據(jù)。
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gsql ? -d postgres -p 25308 –ar
create ? table test(c1 int, c2 int, date timestamp) distribute by hash(c1);
insert ? into test select generate_series(1,10000), generate_series(1,10000), sysdate;
3、 在透明加密和非透明加密集群CN上執(zhí)行checkpoint或者重啟集群保證數(shù)據(jù)下盤。
gsql -d postgres -p 25308 –ar
checkpoint;
4、 到非透明加密集群和透明加密集群一個DN上查詢test表對應(yīng)的數(shù)據(jù)文件并傳到pg_filedump服務(wù)器。
postgres=# select ? pg_relation_filepath('test');
pg_relation_filepath
----------------------
base/14548/16464
\q
scp /srv/BigData/mppdb/data1/master1/base/14548/16464 ? 10.185.180.55:/opt/filedump/pg_filedump-master
postgres=# select ? pg_relation_filepath('test');
pg_relation_filepath
----------------------
base/14548/18019
\q
scp ? /srv/BigData/mppdb/data1/master1/base/14548/18019 ? 10.185.180.55:/opt/filedump/pg_filedump-master
5、使用pg_filedump分析數(shù)據(jù)文件
非透明加密集群數(shù)據(jù)文件分析,-D后面要加上表的字段數(shù)據(jù)類型
./pg_filedump -D int,int,timestamp ? 18019 | more
每一個COPY對應(yīng)的行為真實數(shù)據(jù)。
透明加密集群數(shù)據(jù)文件分析
./pg_filedump -D int,int,timestamp ? 16464 | more
數(shù)據(jù)文件解析報錯:Error: Item contents ? extend beyond block.
測試腳本
預(yù)期結(jié)果
1,步驟1查詢pg_tde_info非透明加密集群is_encrypt為f,透明加密集群is_encrypt為t,g_tde_algo字段為加密算法。
2,步驟5非透明加密集群使用pg_filedump可以解析出數(shù)據(jù),透明加密集群使用pg_filedump不能解析數(shù)據(jù)。
實測結(jié)果
備注
使用透明加密對數(shù)據(jù)導(dǎo)入,以及讀算子開銷較大的SQL查詢業(yè)務(wù)有較大。使用TPCDS測試模型評估的性能影響有如下參考值(不同硬件,不同測試模型):
AES: 性能下降小于10% (無AES硬件加速)
SM4:單并發(fā)性能劣化48%,5并發(fā)劣化25%(有ARM硬件SM4加速)
測試方簽字
測試審核員簽字
數(shù)據(jù)倉庫服務(wù) GaussDB(DWS) 存儲 SQL
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。