HDFS透明加密原理解析
目錄:
1.?HDFS透明加密
2.實(shí)現(xiàn)原理
3.KMS ACL用戶(hù)權(quán)限配置
?
一. HDFS透明加密
HDFS?Encryption?Zone?加密空間,即HDFS透明加密,是一種端到端的加密模式,其中加解密過(guò)程對(duì)于客戶(hù)端來(lái)說(shuō)是完全透明的。
數(shù)據(jù)在客戶(hù)端寫(xiě)操作時(shí)被加密,數(shù)據(jù)在客戶(hù)端讀操作時(shí)被解密,hdfs服務(wù)端本省并不是主要參與者。主要作用是保證加密空間內(nèi)的數(shù)據(jù)不被非法查詢(xún)。
?
二.實(shí)現(xiàn)原理
Encryption Zone是HDFS中的一個(gè)抽象概念,它表示此空間的內(nèi)容在寫(xiě)的時(shí)候會(huì)被透明地加密,同時(shí)在讀的時(shí)候,被透明地解密;用戶(hù)往HDFS上存儲(chǔ)數(shù)據(jù)的時(shí)候,無(wú)需用戶(hù)做任何程序代碼的更改(意思就是調(diào)用KeyProvider API ,用于在數(shù)據(jù)存入到HDFS上面的時(shí)候進(jìn)行數(shù)據(jù)加密,解密的過(guò)程一樣)。這意味著數(shù)據(jù)加密和解密由客戶(hù)端完成的。HDFS不會(huì)存儲(chǔ)或訪問(wèn)未加密的數(shù)據(jù)或數(shù)據(jù)加密密鑰(由KMS管理)。
?
加密流程:
前提:創(chuàng)建HDFS加密區(qū)時(shí)會(huì)創(chuàng)建一個(gè)HDFS加密區(qū)(目錄),同時(shí)會(huì)在KMS服務(wù)里創(chuàng)建一個(gè)key及其EZ?Key,及兩者之間的關(guān)聯(lián)。
1.Client向NN請(qǐng)求在hdfs某個(gè)加密區(qū)新建文件;
2.NN向KMS請(qǐng)求此文件的EDEK,KMS用對(duì)應(yīng)的EZ?key生成一個(gè)新的EDEK發(fā)送給NN;
3.這個(gè)EDEK會(huì)被NN寫(xiě)入到文件的metadata中;
4.NN發(fā)送EDEK給Client;
5.Client發(fā)送EDEK給Kms請(qǐng)求解密,KMS用對(duì)應(yīng)的EZ?key將EDEK解密為DEK發(fā)送給Client;
6.Client用DEK加密文件內(nèi)容發(fā)送給datanode進(jìn)行存儲(chǔ)。
?
分析總結(jié):DEK是加解密一個(gè)文件的密匙,而KMS里存儲(chǔ)的EZ?key是用來(lái)加解密所有文件的密匙(DEK)的密匙。所以,EZ?Key是更為重要的數(shù)據(jù),只在KMS內(nèi)部是用(DEK的加解密只在KMS內(nèi)存進(jìn)行),不會(huì)被傳遞到外面使用,而HDFS服務(wù)端只能接觸到EDEK,所以HDFS服務(wù)端也不能解密加密區(qū)文件。
?
讀流程類(lèi)似,區(qū)別就是NN直接讀取加密文件元數(shù)據(jù)里的EDEK返回給客戶(hù)端,客戶(hù)端一樣把EDEK發(fā)送給KMS獲取DEK。再對(duì)加密內(nèi)容解密讀取。
?
其他細(xì)節(jié)說(shuō)明:
1.每個(gè)Encryption Zone 會(huì)與每個(gè)Encryption Zone Key相關(guān)聯(lián)(EZ Key),這個(gè)Key會(huì)在創(chuàng)建Encryption Zone的時(shí)候同時(shí)被指定。
2.每個(gè)Encryption Zone中的文件會(huì)有其唯一的Data?Encryption?Key(數(shù)據(jù)加密key)簡(jiǎn)稱(chēng)DEK.
3.DEK不會(huì)被HDFS直接處理,取而代之,hdfs只處理經(jīng)過(guò)加密的DEK,就是Encrypted Data Encryption Key,簡(jiǎn)稱(chēng)EDEK。
4.客戶(hù)端詢(xún)問(wèn)KMS服務(wù)去解密EDEK,然后利用解密后得到的DEK讀寫(xiě)數(shù)據(jù)。KMS利用存儲(chǔ)的EZ?key來(lái)解密EDEK得到DEK。
5.在客戶(hù)端向KMS服務(wù)請(qǐng)求時(shí)候,會(huì)有相關(guān)權(quán)限驗(yàn)證,不符合要的客戶(hù)端將不會(huì)得到解密好的DEK。而且KMS的權(quán)限驗(yàn)證是獨(dú)立于HDFS的,是自身的一套權(quán)限驗(yàn)證。
?
三.KMS ACL用戶(hù)權(quán)限配置
上面的步驟中有個(gè)關(guān)鍵點(diǎn),如何保證某個(gè)合法用戶(hù)能在KMS獲取到自己的加密區(qū)文件的DEK,而屏蔽其他沒(méi)有相關(guān)權(quán)限的用戶(hù)。這個(gè)就和KMS服務(wù)的ACL權(quán)限配置有關(guān)。
在HDFS透明加密驗(yàn)證文檔中有類(lèi)似如下的配置:
KMS服務(wù)的配置文件kms-acls.xml:
<property>
<name>key.acl.key1.DECRYPT_EEK</name>
<value>admin1</value>
<deion>
ACL for decryptEncryptedKey operations.
</deion>
</property>
這就是在KMS中指定admin1用戶(hù)有權(quán)限獲取key1對(duì)應(yīng)的HDFS加密區(qū)文件的DEK。也就是說(shuō),還是通過(guò)KMS來(lái)控制用戶(hù)在加密區(qū)的權(quán)限,跟HDFS服務(wù)端還是沒(méi)關(guān)系。
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的HDFS透明加密原理解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: POJ3580:SuperMemo
- 下一篇: 柳传志:我从来软弱 但不摇摆不做改革牺牲