13.HDFS透明加密

13.1 實驗?zāi)康呐c環(huán)境

  • 要實現(xiàn)HDFS的透明加密,首先需要一個KMS欣舵,KMS可以用CDH自帶的Java KeyStore KMS也可以使用企業(yè)版工具Navigator。
    • Java KeyStore KMS保存秘鑰文件到本地,提供簡單的密碼保護宿崭。
    • Cloudera不建議生產(chǎn)系統(tǒng)使用Java KeyStore KMS孩饼。
    • 實驗主要介紹如何通過Cloudera Manager安裝Java KeyStore KMS服務(wù)髓削,并且實現(xiàn)HDFS的透明加密。
  • 內(nèi)容概述
    • 安裝KMS服務(wù)
    • HDFS加密測試
  • 測試環(huán)境
    • CentOS6.5
    • CDH5.13

13.2 安裝KMS

  • 安裝libcrypto.so镀娶,所有機器都需要立膛,安裝完成所有機器檢查。
[root@ip-172-31-6-148shell]# sh ssh_do_all.sh node.list "yum -y install openssl-devel"
Loaded plugins: fastestmirror, presto
Loading mirror speeds from cached hostfile
 * base: mirror.qoxy.com
 * extras: mirror.qoxy.com
 * updates: mirror.qoxy.com
Setting up Install Process
Package openssl-devel-1.0.1e-57.el6.x86_64 already installed and latest version
Nothing to do
Connection to ip-172-31-6-148.fayson.com closed.
[root@ip-172-31-6-148 shell]# sh ssh_do_all.sh node.list "hadoop checknative"
17/12/09 09:59:54 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native
17/12/09 09:59:54 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
Native library checking:
hadoop:  true/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hadoop/lib/native/libhadoop.so.1.0.0
zlib:    true /lib64/libz.so.1
snappy:  true/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hadoop/lib/native/libsnappy.so.1
lz4:     true revision:10301
bzip2:   true /lib64/libbz2.so.1
openssl: true /usr/lib64/libcrypto.so
Connection to ip-172-31-6-148.fayson.com closed.
  • 注:
    • 確認openssl出現(xiàn)true梯码,例如openssl: true/usr/lib64/libcrypto.so宝泵。如果是false讲婚,表示 libcrypto.so沒有正確安裝或配置洛心,需要檢查和改正。
    • Fayson的機器因為已經(jīng)安裝過了梗醇,所以提示“already installedand latest version”
  • 通過Cloudera Manager主界面安裝KMS


  • 選擇Java KeyStore KMS鳄抒,點擊“繼續(xù)”
  • 輸入秘鑰管理員用戶和用戶組闯捎,注意hdfs超級用戶已經(jīng)被禁止設(shè)置為秘鑰管理員椰弊,HDFS管理員和秘鑰管理員是分開的。
  • 點擊“生成ACL”瓤鼻,并點擊“繼續(xù)”
  • 提示設(shè)置“TLS”秉版,暫時不用做任何操作,點擊“繼續(xù)”
  • 等待服務(wù)啟動完畢娱仔,點擊“繼續(xù)”
  • 安裝完畢沐飘,回到主頁,按照提示重啟整個集群牲迫,等待重啟完畢耐朴,至此安裝KMS完畢。


  • 確認HDFS已經(jīng)啟用了KMS服務(wù)


13.3 測試HDFS加密

  • 新建用戶user1盹憎,創(chuàng)建一個秘鑰key1
[root@ip-172-31-6-148 shell]# hadoop key create key1

key1 has not been created. org.apache.hadoop.security.authorize.AuthorizationException: User:root not allowed to do 'CREATE_KEY' on 'key1'
[root@ip-172-31-6-148 shell]# 
[root@ip-172-31-6-148 shell]# sudo -u hdfs hadoop key create key1
key1 has not been created. org.apache.hadoop.security.authorize.AuthorizationException: User:hdfs not allowed to do 'CREATE_KEY' on 'key1'
[root@ip-172-31-6-148 shell]# sudo -u fayson hadoop key create key1
key1 has been successfully created with options Options{cipher='AES/CTR/NoPadding', bitLength=128, description='null', attributes=null}.
KMSClientProvider[http://ip-172-31-10-118.fayson.com:16000/kms/v1/] has been updated.
  • 注意:
    • 在創(chuàng)建秘鑰時筛峭,發(fā)現(xiàn)無論是root用戶還是hdfs用戶都無法創(chuàng)建成功,必須使用我們在安裝配置KMS的時候設(shè)置的秘鑰管理員fayson陪每。
  • 創(chuàng)建一個HDFS目錄并設(shè)置為加密區(qū)域影晓。
[root@ip-172-31-6-148 shell]# hadoop fs -mkdir /user/user1
[root@ip-172-31-6-148 shell]# sudo -u hdfs hadoop fs -chown user1:user1 /user/user1
[root@ip-172-31-6-148 shell]# sudo -u hdfs hdfs crypto -createZone -keyName key1 -path /user/user1
Added encryption zone /user/user1
[root@ip-172-31-6-148 shell]# sudo -u hdfs hdfs crypto -listZones
/user/user1  key1
  • 注意:需要使用hdfs超級用戶
  • 再創(chuàng)建一個目錄,用于后面比較加密目錄
[root@ip-172-31-6-148 shell]# hadoop fs -mkdir /user1/
[root@ip-172-31-6-148 shell]# sudo -u hdfs hadoop fs -chown user1:user1 /user1
  • 切換到user1用戶分別上傳文件到加密區(qū)域以及非加密區(qū)域準備一個文件
  • 上傳文件到加密區(qū)域和非加密區(qū)域
[user1@ip-172-31-6-148 ~]$ hadoop fs -put a.txt /user1
[user1@ip-172-31-6-148 ~]$ hadoop fs -put a.txt /user/user1
[user1@ip-172-31-6-148 ~]$ hadoop fs -cat /user1/a.txt
fsdfsfsdfsdddddddddd
123456789
Fayson is fat!
[user1@ip-172-31-6-148 ~]$ hadoop fs -cat /user/user1/a.txt
fsdfsfsdfsdddddddddd
123456789
Fayson is fat!
  • 注意
    • 需要給上面創(chuàng)建的秘鑰key1賦予用戶和用戶組user1的訪問權(quán)限檩禾,否則用戶user1無法put文件到/user/user1目錄挂签。
  • 通過HDFS的50070頁面查看上傳的文件的block分布在那臺DataNode上,并記錄下Block ID盼产。



  • 登錄到ip-172-31-10-118.fayson.com機器饵婆,查看block文件從上步驟,可以知道在加密區(qū)域/user/user1的文件“a.txt”的block ID為1073776797戏售,在非加密區(qū)域/user1的文件“a.txt“的block ID為1073776707
[root@ip-172-31-10-118 ~]# find / -name "*1073776797*"
/dfs/dn/current/BP-900745788-172.31.6.148-1508157818810/current/finalized/subdir0/subdir136/blk_1073776797
/dfs/dn/current/BP-900745788-172.31.6.148-1508157818810/current/finalized/subdir0/subdir136/blk_1073776797_36850.meta
[root@ip-172-31-10-118 ~]# cat /dfs/dn/current/BP-900745788-172.31.6.148-1508157818810/current/finalized/subdir0/subdir136/blk_1073776797
????f?JPQ???f ?Lx?+?f?6фt6=ko?1l?+"N?[
root@ip-172-31-10-118 ~]# 
[root@ip-172-31-10-118 ~]# find / -name "*1073776707*"
/dfs/dn/current/BP-900745788-172.31.6.148-1508157818810/current/finalized/subdir0/subdir136/blk_1073776707
/dfs/dn/current/BP-900745788-172.31.6.148-1508157818810/current/finalized/subdir0/subdir136/blk_1073776707_36760.meta
[root@ip-172-31-10-118 ~]# cat /dfs/dn/current/BP-900745788-172.31.6.148-1508157818810/current/finalized/subdir0/subdir136/blk_1073776707
fsdfsfsdfsdddddddddd
123456789
Fayson is fat!
  • 通過HDFS的透明加密可以實現(xiàn)HDFS底層文件的加密
    • 對于非加密區(qū)域/user1下的文件a.tx可以直接通過block ID查找到該block文件侨核,并直接查看到明文。
    • 但是在加密區(qū)域/user/user1下的文件a.txt雖然也可以直接查找到該block文件灌灾,但是查看確是密文搓译。
  • 在安裝Java KMS的時候,Cloudera Manager會提示不能將HDFS超級用戶hdfs設(shè)置為秘鑰管理員锋喜,這是為了防止HDFS的超級用戶既可以訪問任何文件些己,又可以訪問所有秘鑰,從而可以直接解密所有HDFS文件而造成安全問題嘿般。
  • 在通過user1用戶上傳文件到自己所屬的加密區(qū)域時段标,必須設(shè)置該加密區(qū)域的秘鑰文件key1可以被user1訪問,該設(shè)置通過Cloudera Manager管理的Java KeyStore KMS的配置中設(shè)置博个,將user1用戶和組加入到ACL列表怀樟,否則會報以下錯誤。
[user1@ip-172-31-6-148 ~]$ hadoop fs -put a.txt /user/user1
put: User [user1] is not authorized to perform [DECRYPT_EEK] on key with ACL name [key1]!!
17/12/09 11:49:33 ERROR hdfs.DFSClient: Failed to close inode 352863
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException): No lease on /user/user1/a.txt._COPYING_ (inode 352863): File does not exist. Holder DFSClient_NONMAPREDUCE_1915499091_1 does not have any open files.
   at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkLease(FSNamesystem.java:3752)
   at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.completeFileInternal(FSNamesystem.java:3839)
   at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.completeFile(FSNamesystem.java:3809)
   at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.complete(NameNodeRpcServer.java:748)
   at org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.complete(AuthorizationProviderProxyClientProtocol.java:248)

大數(shù)據(jù)視頻推薦:
騰訊課堂
CSDN
大數(shù)據(jù)語音推薦:
企業(yè)級大數(shù)據(jù)技術(shù)應(yīng)用
大數(shù)據(jù)機器學(xué)習(xí)案例之推薦系統(tǒng)
自然語言處理
大數(shù)據(jù)基礎(chǔ)
人工智能:深度學(xué)習(xí)入門到精通

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盆佣,一起剝皮案震驚了整個濱河市往堡,隨后出現(xiàn)的幾起案子械荷,更是在濱河造成了極大的恐慌,老刑警劉巖虑灰,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吨瞎,死亡現(xiàn)場離奇詭異,居然都是意外死亡穆咐,警方通過查閱死者的電腦和手機颤诀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來对湃,“玉大人崖叫,你說我怎么就攤上這事∨钠猓” “怎么了心傀?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拆讯。 經(jīng)常有香客問我脂男,道長,這世上最難降的妖魔是什么种呐? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任宰翅,我火速辦了婚禮,結(jié)果婚禮上爽室,老公的妹妹穿的比我還像新娘汁讼。我一直安慰自己,他們只是感情好肮之,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布掉缺。 她就那樣靜靜地躺著卜录,像睡著了一般戈擒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上艰毒,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天筐高,我揣著相機與錄音,去河邊找鬼丑瞧。 笑死柑土,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的绊汹。 我是一名探鬼主播稽屏,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼西乖!你這毒婦竟也來了狐榔?” 一聲冷哼從身側(cè)響起坛增,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎薄腻,沒想到半個月后收捣,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡庵楷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年罢艾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尽纽。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡咐蚯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弄贿,到底是詐尸還是另有隱情仓蛆,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布挎春,位于F島的核電站看疙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏直奋。R本人自食惡果不足惜能庆,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脚线。 院中可真熱鬧搁胆,春花似錦、人聲如沸邮绿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽船逮。三九已至顾腊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挖胃,已是汗流浹背杂靶。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留酱鸭,地道東北人吗垮。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像凹髓,于是被迫代替她去往敵國和親烁登。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容