一種基于公鑰算法和SSL協議的多集群Hadoop系統(tǒng)安全優(yōu)化方法
【技術領域】
[0001]本發(fā)明涉及一種優(yōu)化方法,具體涉及一種基于公鑰算法和SSL協議的多集群Hadoop系統(tǒng)安全優(yōu)化方法。
【背景技術】
[0002]Hadoop系統(tǒng)是大數據處理的一個有效工具。早期的Hadoop系統(tǒng)主要運行于單個集群環(huán)境,后來的版本開始支持運行于多個集群環(huán)境。多集群Hadoop系統(tǒng)是一種跨越多個集群環(huán)境運行的擴展版本,如圖1所示。JobTracker是MapReduce框架的主服務器,負責管理MapReduce框架執(zhí)行作業(yè)的控制流、監(jiān)控所有執(zhí)行中任務的健康狀態(tài)、檢測并重新調度失效的任務直到一個作業(yè)的所有任務完成。JobTracker從它的用戶側接收新的作業(yè),然后把作業(yè)劃分為更小的任務并發(fā)送給TaskTracker。TaskTracker是JobTracker的動力引擎。每個TaskTracker都有一個特定的計數槽,來表示其被分配的任務數。TaskTracker通過一個心跳消息定期向JobTracker報告健康狀態(tài),這個心跳消息包含所有執(zhí)行中任務的當前進度和TaskTracker的可用數目。作為回應,JobTracker發(fā)送新的指令到TaskTracker,這些指令包括新分配的任務和需執(zhí)行的任務。TaskTracker的職責是監(jiān)控執(zhí)行中任務的健康狀態(tài)、管理自己的日志文件、檢測失效的任務并向JobTracker報告相應信息。
[0003]總體而言,多集群Hadoop系統(tǒng)維持了早期Hadoop系統(tǒng)的主節(jié)點/從節(jié)點架構,很好地實現了 MapReduce框架。其中,主節(jié)點是多集群Hadoop系統(tǒng)架構的中心實體,主要負責管理所有可用文件的元數據和接收用戶提交的作業(yè),將作業(yè)劃分為更小的多個任務,并最終分配任務到從節(jié)點,而從節(jié)點主要負責執(zhí)行主節(jié)點所分配的任務。
[0004]在安全防護機制方面,單集群Hadoop系統(tǒng)原有的用戶身份認證和作業(yè)提交機制主要是為運行于單個集群環(huán)境設計的,沒有考慮到運行于多個集群環(huán)境的情況。這些機制要求每個用戶與每個集群之間建立一個單獨連接,因此并不適合諸如網格這樣包含多個集群的大規(guī)模分布式環(huán)境。此外,當將單集群Hadoop系統(tǒng)運行于多個集群環(huán)境時,其安全防護機制還暴露出了其它許多不足之處,包括眾多從節(jié)點的用戶重復登錄和身份認證、系統(tǒng)資源的濫用和誤用、計算節(jié)點難以動態(tài)調整、網絡攻擊防護不力等問題。例如,在單集群Hadoop系統(tǒng)的安全機制中,要求一個用戶必須登錄所有集群一次以完成身份認證,才能訪問所有集群的資源。這對用戶來說,是一種繁瑣乏味和降低效率的事情。因此,需要有一種更為通用的整體解決方案來彌補單集群Hadoop系統(tǒng)安全機制的不足并減少用戶的操作負擔。
【發(fā)明內容】
[0005]為了克服上述現有技術的不足,本發(fā)明提供一種基于公鑰算法和SSL協議的多集群Hadoop系統(tǒng)安全優(yōu)化方法,能夠有效地實現跨越多個集群環(huán)境運行的Hadoop系統(tǒng)的用戶身份認證和網絡攻擊防護,彌補了單集群Hadoop系統(tǒng)原有安全機制運行于多個集群環(huán)境時的不足之處,與單集群Hadoop系統(tǒng)原有安全防護機制共同構成了多集群Hadoop系統(tǒng)的完整安全防護。
[0006]為了實現上述發(fā)明目的,本發(fā)明采取如下技術方案:
[0007]本發(fā)明提供一種基于公鑰算法和SSL協議的多集群Hadoop系統(tǒng)安全優(yōu)化方法,所述方法包括以下步驟:
[0008]步驟1:用戶登錄主節(jié)點時對用戶進行身份信息認證;
[0009]步驟2:主節(jié)點向CA服務器申請并獲得代理證書;
[0010]步驟3:主節(jié)點創(chuàng)建從節(jié)點列表,并確定主節(jié)點身份信息;
[0011]步驟4:主節(jié)點與從節(jié)點之間進行雙向身份認證;
[0012]步驟5:多集群Hadoop系統(tǒng)執(zhí)行用戶提交的作業(yè);
[0013]步驟6:終止用戶提交的作業(yè)。
[0014]所述步驟I具體包括以下步驟:
[0015]步驟1-1:用戶向多集群Hadoop系統(tǒng)提交作業(yè)時,輸入用戶身份信息{Username,Password}單點登錄到主節(jié)點;
[0016]步驟1-2:多集群Hadoop系統(tǒng)收到用戶身份信息{Username,Password}后,主節(jié)點搜索自身的用戶身份信息庫,檢查該用戶是否存在;如果用戶名Username和口令Password正確,并且用戶有權訪問多集群Hadoop系統(tǒng)的資源,貝U表明用戶通過主節(jié)點的身份信息認證,進入到步驟1-3 ;否則,表明用戶未通過主節(jié)點的身份信息認證,主節(jié)點將向用戶發(fā)送錯誤信息作為反饋;
[0017]步驟1-3:用戶通過主節(jié)點的身份認證后,提交作業(yè)到多集群Hadoop系統(tǒng),主節(jié)點接收用戶提交作業(yè),進行初始化并為用戶創(chuàng)建用戶實例;然后通知CA服務器為該用戶實例頒發(fā)代理證書。
[0018]所述步驟2具體包括以下步驟:
[0019]步驟2-1:利用SSL協議完成主節(jié)點和CA服務器雙向身份認證,建立經過加密的安全連接;
[0020]步驟2-2:主節(jié)點隨機生成主節(jié)點密鑰對{MN_Pub,MN_Prv},主節(jié)點保留主節(jié)點私鑰MN_Prv,并將主節(jié)點公鑰MN_Pub發(fā)送給CA服務器,向CA服務器發(fā)送為用戶實例申請代理證書的請求;
[0021]步驟2-3:CA服務器收到主節(jié)點發(fā)送的主節(jié)點公鑰MN_Pub后,生成隨機信息CA_Rand,并為主節(jié)點公鑰MN_Pub設定存活周期'Ck服務器使用數字簽名為主節(jié)點的當前請求頒發(fā)代理證書,并發(fā)送給主節(jié)點;
[0022]步驟2-4:主節(jié)點收到包含有隨機信息CA_Rand的代理證書后,斷開與CA服務器的SSL連接。
[0023]所述代理證書包括代理證書的存活周期、CA服務器的身份ID、隨機信息CA_Rand、主節(jié)點公鑰MN_Pub及MN_Pub的存活周期。
[0024]所述步驟3包括以下步驟:
[0025]步驟3-1:主節(jié)點與從節(jié)點之間采用SSL協議建立安全連接;
[0026]步驟3-2:主節(jié)點創(chuàng)建用戶實例的用戶會話U_Sess1n,有:
[0027]U_Sess1n = MD5(Username+CA_Rand)
[0028]用戶實例的用戶會話U_SeSS1n與主節(jié)點公鑰MN_Pub具有相同的存活周期,均由CA服務器指定,并由代理證書簽字;
[0029]步驟3-3:根據用戶對從節(jié)點的訪問權限,主節(jié)點為用戶實例創(chuàng)建從節(jié)點列表;
[0030]步驟3-4:利用主節(jié)點私鑰MN_Prv對隨機信息CA_Rand和用戶實例的用戶會話U_Sess1n分別進行加密,得到主節(jié)點私鑰加密的隨機信息MN_Rand和主節(jié)點私鑰加密的用戶會話 MN_U_Sess1n,有:
[0031]MN_Rand = PBA.encrypt (CA_Rand, MN_Prv)
[0032]MN_U_Sess1n = PBA.encrypt (U_Sess1n, MN_Prv)
[0033]于是,得到包括代理證書、主節(jié)點私鑰加密的隨機信息MN_Rand和主節(jié)點私鑰加密的用戶會話MN_U_SeSS1n的主節(jié)點身份信息。
[0034]所述步驟4中,主節(jié)點與從節(jié)點之間進行雙向身份認證,包括以下步驟:
[0035]步驟4-1:第一次握手,從節(jié)點對主節(jié)點進行身份認證;
[0036]步驟4-2:第二次握手,主節(jié)點對從節(jié)點進行身份認證;
[0037]步驟4-3:第三次握手,主節(jié)點發(fā)送確認信息給從節(jié)點。
[0038]所述步驟4-1包括以下步驟:
[0039]步驟4-1-1:主節(jié)點發(fā)送主節(jié)點身份信息到從節(jié)點,從節(jié)點獲得封裝在代理證書中的CA服務器的身份ID,并檢查CA服務器的身份ID是否正確;如正確,進入步驟4-1-2,否則,表明主節(jié)點未通過從節(jié)點的身份認證;
[0040]步驟4-1-2:從節(jié)點從代理證書中獲得主節(jié)點公鑰MN_Pub,并利用主節(jié)點公鑰MN_Rand對主節(jié)點私鑰加密的隨機信息MN_Rand進行解密,得到經過主節(jié)點私鑰加密并通過主節(jié)點公鑰解密的隨機信息CA_RancT,有:
[0041]CA_Rand' = PBA.decrypt (MN_Rand, MN_Pub)
[0042]經過主節(jié)點私鑰加密并通過主節(jié)點公鑰解密的隨機信息CA_Rand'和封裝在代理證書中的隨機信息CA_Rand進行比較,并檢查代理證書的存活周期和MN_Pub的存活周期;如果代理證書的存活周期和MN_Pub的存活周期檢查均通過,表明主節(jié)點通過從節(jié)點的身份認證,進入步驟4-1-3,如果代理證書的存活周期和MN_Pub的存活周期檢查任一未通過,表明主節(jié)點未通過從節(jié)點的身份認證,從節(jié)點反饋拒絕消息給主節(jié)點;
[0043]步驟4-1-3:從節(jié)點將發(fā)送表明主節(jié)點通過身份認證的確認消息給主節(jié)點,然后利用主節(jié)點公鑰MN_Pub對主節(jié)點私鑰加密的用戶會話MN_U_SeSS1n進行解密,獲取經過主節(jié)點私鑰加密并通過主節(jié)點公鑰解密的用戶會SLSess1n',有:
[0044]U_Sess1n/ = PBA.decrypt (MN_U_Sess1n, MN_Pub)
[0045]經過主節(jié)點私鑰加密并通過主節(jié)點公鑰解密的用戶會話[Sess1n'、主節(jié)點公鑰MN_Pub、代理證書、U_Sess1r^的存活周期、MN_Pub的存活周期和代理證書的存活周期均被存儲在從節(jié)點上,直到收到主節(jié)點發(fā)來的作業(yè)完成消息或左右終止消息,從節(jié)點才刪除上述信息。
[0046]所述步驟4-2包括以下步驟:
[0047]步驟4-2-1:從節(jié)點隨機生成從節(jié)點密鑰對{SN_Pub,SN_Prv},利用從節(jié)點私鑰SN_Prv對隨機信息CA_Rand和用戶實例的用戶會話[Sess1n分別進行加密,得到從節(jié)點私鑰加密的隨機信息SN_Rand和從節(jié)點私鑰加密的用戶會話SN_U_SeSS1n,有:
[0048]SN_Rand = PBA.encrypt (CA_Rand,SN_Prv)
[0049]SN_U_Sess1n = PBA.encrypt (U_Sess1n, SN_Prv)
[0050]于是得到包括CA服務器的身份ID、從節(jié)點公鑰SN_Pub和SN_Pub的存活周期的從節(jié)點證書,所述從節(jié)點證書由CA服務器頒發(fā);
[0051]步驟4-2-2:從節(jié)點采用對稱加密算法{SCA,SC_Ke