Hadoop基礎-HDFS安全管家之Kerberos實戰篇


              Hadoop基礎-HDFS安全管家之Kerberos實戰篇

                                     作者:尹正傑

版權聲明:原創作品,謝絕轉載!否則將追究法律責任。

 

 

  我們都知道hadoop有很多不同的發行版,比如:Apache Hadoop,CDH,HDP,MapR,EMR等等,我們使用這些組件部署的hdfs分布式文件系統時,都會面臨很直接的一個安全問題,比如Java大數據開發工程師可以在java源代碼中使用“System.setProperty("HADOOP_USER_NAME","yinzhengjie");”來提權操作,只要client能夠連接上hadoop集群就能或得hadoop集群上“yinzhengjie”這個用戶對應的權限。這樣做是很不安全的!而實行Kerberos后,任意機器的任意用戶都必須現在 Kerberos 的 KDC 中有記錄,才允許和集群中其它的模塊進行通信。

 

 

一.Kerberos工作原理

 

如上圖所示,詳細步驟如下:
1>.用戶發送自己的用戶信息給KDC;
2>.KDC訪問AS服務,獲得TGT;
3>.KDC用client key加密TGT以及一個Session Key給用戶;用戶得到加密數據后,使用client key解密得到TGT和Session Key;
4>.Client將之前獲得TGT和要請求的服務信息(服務名等)發送給KDC;
5>.認證用戶合法后,KDC中的TGS將Session Key和用戶名,用戶地址(IP),服務名,有效期, 時間戳一起包裝成一個Ticket;
6>.KDC將Ticket用Server key加密並發送Client;
7>.此時Client沒有密鑰B所以他無法查看Ticket中的內容,於是Client將Ticket直接轉發Service;同時Client將自己的用戶名,用戶地址(IP)打包成Authenticator,用之前獲得的Session Key加密也發送給Service。 
8>.客戶端驗證過程:Service 收到Ticket后利用它與KDC之間的Server key將Ticket中的信息解密出來,從而獲得Session Key和用戶名,用戶地址(IP),服務名,有效期。然后再用SK將Authenticator解密從而獲得用戶名,用戶地址(IP)將其與之前Ticket中解密出來的用戶名,用戶地址(IP)做比較,從而驗證Client的身份。
9>.如果Service有返回結果,將其返回給Client。在Hadoop應用中,服務器可以是namenode或jobtracker。
        
        
        
簡單的說,使用Kerberos時,一個客戶端大致需要經過三個步驟來獲取服務:
    1>.認證:
        客戶端向認證服務器發送一條報文,並獲取一個含時間戳的Ticket-Granting Ticket(TGT)和一個Session Key。
    2>.授權:
        客戶端使用TGT向Ticket-Granting Server(TGS)請求一個服務Ticket。
    3>.服務請求:
        客戶端向服務器出示服務Ticket,以證實自己的合法性。該服務器提供客戶端所需服務,在Hadoop應用中,服務器可以是namenode或jobtracker。

溫馨提示:
    Kerberos需要The Key Distribution Centers(KDC)來進行認證。KDC只有一個Master,可以帶多個slaves機器。slaves機器僅進行普通驗證。Mater上做的修改需要自動同步到slaves。另外,KDC需要一個admin,來進行日常的管理操作。這個admin可以通過遠程或者本地方式登錄。

 

二.Kerberos部署實戰

 

 

 

三.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM