一種基于可信計算的Hadoop平臺度量方法
【專利摘要】本發明公開一種基于可信計算的Hadoop平臺度量方法,包括:步驟S1、MapReduce程序運行前的度量,其包括:獲取Hadoop平臺中MapReduce程序文件,其包含:job.jar、job.split、job.xml;計算MapReduce程序文件的摘要值并擴展PCR,同時寫入MapReduce程序度量日志;步驟S2、Hadoop文件動態度量,其包括:獲取Hadoop核心組件信息,其包含:Hadoop配置文件、Hadoop本地庫、Hadoop核心jar包、Hadoop核心腳本;計算Hadoop核心組件各文件的摘要值并擴展PCR,同時寫入NodeManager節點中度量日志;將Hadoop核心組件各文件的摘要值與標準庫中標準值進行比較,得到NodeManager節點健康檢測結果。采用本發明的技術方案,以可信鏈為基礎擴展可信關系,實現應用層對MapReduce程序的度量,同時結合Hadoop節點健康檢測機制,提供動態的Hadoop平臺完整性度量。
【專利說明】
一種基于可信計算的Hadoop平臺度量方法
技術領域
[00〇1 ]本發明涉及云計算和可信計算技術領域,尤其涉及一種基于可信計算的Hadoop平臺度量方法。【背景技術】
[0002]隨著信息技術的快速發展,企業數據規模呈現出爆炸式的增長趨勢。云計算由于具有高可靠性、可伸縮性、按需服務等諸多優點,被很多企業用于存儲和處理企業的數據。 Hadoop是云計算的解決方案之一,作為Apache基金會的開源項目,由于繼承了Google GFS 和Google MapReduce的功能同時免費提供使用,在學術界和業界得到了大量的研究和應用,國內外企業紛紛搭建自己的Hadoop平臺。
[0003]然而在Hadoop設計之初,并沒有對安全問題進行考慮,導致現階段使用過程中出現了大量的安全問題。雖然在之后的版本加入了基于kerberos的身份認證和基于ACL的訪問控制解決方案,但是其提供的安全功能依然很難滿足大型公司對安全的需求。很多公司根據自身需求對Hadoop源碼進行了大量修改,使其滿足自身的安全需求。但基于軟件實現的安全控制方法很容易被攻破,當Hadoop所處環境或自身相關文件遭到篡改,很容易導致這些安全措施失效,影響到平臺使用甚至是平臺中數據的安全性。采用硬件提供安全保護, 從硬件層面出發,保證Hadoop平臺的安全,可以有效保證Hadoop平臺可信。[〇〇〇4] 可信計算組(Trusted Computing Group,TCG)致力于構建可信的軟硬件計算環境,從硬件出發,從源頭開始保證計算環境建立過程中各個相關組件的可信,從而建立一個可信的計算環境。可信計算組提出了可信平臺模塊(Trusted Platform Module,TPM)的概念,作為可信平臺建立過程中可信硬件基礎,提供可信的度量和可信存儲的方法,從硬件層面提供可信計算所需的相關計算需求。可信計算組同時提出了基于可信鏈構建可信計算環境的方法,從可信平臺模塊出發,對系統啟動過程中涉及的相關組件逐級進行度量,一級驗證一級,將信任關系逐級傳遞下去,最終保證整個平臺環境的可信。
[0005]基于可信計算組提出的可信平臺構建思想,眾多公司對其關鍵過程進行了研究和開發。Sourceforge公司的開源項目Trusted Grub通過擴展原始Grub引導程序,在Linux系統引導過程中,度量了B1S、Grub和操作系統內核并報告PCR值。頂B公司提出的完整性度量架構(Integrity Measurement Architecture,IMA)對Linux內核進行可信擴展,在操作系統內核被度量以后,對系統關鍵組件,包括用戶應用程序、配置文件以及所有內核模塊進行了可信度量。
[0006]然而現有技術從硬件出發對系統環境進行度量,只度量到了應用程序層。 MapReduce作為Hadoop的分布式計算模型,提供大數據的分布式處理方法,在實際度量過程中并未對其完整性進行驗證,這就導致Hadoop平臺中運行的MapRedcue程序存在被篡改的可能,出現不可信的計算行為。同時MA只在Hadoop啟動過程時對相關的文件進行了度量, 在Hadoop運行的整個過程中,平臺的動態可信性很難得到有效的保護。
【發明內容】
[0007]本發明要解決的技術問題是,提供一種基于可信計算的Hadoop平臺度量方法,以可信鏈為基礎擴展可信關系,實現應用層對MapReduce程序的度量,同時結合Hadoop節點健康檢測機制,提供動態的Hadoop平臺完整性度量。
[0008]為解決上述問題,本發明采用如下的技術方案:
[0009]一種基于可信計算的Hadoop平臺度量方法,包括以下步驟:
[0010]步驟Sl、MapReduce程序運行前的度量[〇〇11 ]步驟1 ? 1:獲取Hadoop平臺中MapReduce程序文件,其包含:job ? jar、job ? split、 job.xml;[〇〇12] 步驟1 ? 2:計算MapReduce程序文件的摘要值并擴展PCR(program control register,程序控制暫存器),同時寫入MapReduce程序度量日志;[〇〇13] 步驟S2、Hadoop文件動態度量[〇〇14] 步驟2.1:獲取Hadoop核心組件信息,其包含:Hadoop配置文件、Hadoop本地庫、 Hadoop核心jar包、Hadoop核心腳本;[0〇15] 步驟2.2:計算他(1〇(^核心組件各文件的摘要值并擴展?0?,同時寫入1'1〇(161&11^區61 節點中度量日志;[〇〇16]步驟2.3:將Hadoop核心組件各文件的摘要值與標準庫中標準值進行比較,得到 NodeManager節點健康檢測結果。[0〇17] 作為優選,通過TPM(Trusted Platform Module,可信平臺模塊)的摘要算法計算 MapReduce程序文件或Hadoop核心組件信息摘要值;同時調用PcrExtend方法將計算結果擴展到PCR。
[0018]作為優選,PcrExtend方法的度量邏輯為:PCRnew= SHA1 (PCR | | newHashValue),表示將PCR當前值與文件摘要值鏈接后重新計算摘要值,將結果重新寫入PCR。
[0019]作為優選,所述摘要算法為SHA1摘要算法。[〇〇2〇] 作為優選,MapReduce程序度量日志內容包括:第一 PCR擴展值、MapReduce程序文件的摘要值、用戶名、所度量的MapReduce程序文件名。[0〇21 ] 作為優選,NodeManager節點中度量日志記錄內容包括:第二PCR擴展值、Hadoop核心組件各文件的摘要值、所度量的Hadoop核心組件文件名、度量時間。[〇〇22]作為優選,步驟2.3具體為:比較每個Hadoop的核心文件的摘要值與標準庫中的標準值是否相同,完全一致時節點健康檢測通過,節點健康檢測返回0K,當出現不一致情況時,節點健康檢測出現異常,返回ERROR。
[0023]作為優選,所述NodeManager節點健康檢測會周期性執行度量邏輯,當 NodeManager健康狀態出現問題時,會通知ResourceManager不再為其分配任務。
[0024]作為優選,所述Hadoop配置文件包括:slaves、core-site ? xml、hdfs_site ? xml、 mapred-site ? xml、yarn-site.xml;所述Hadoop本地庫包括:libhadoop ? so,libhdfs ? so;所述Hadoop核心 jar包包括:common、hdfs、mapreduce、yarn;所述Hadoop核心腳本為hdfs、 mapreduce 或 hadoop-daemon.sh—種或多種。[〇〇25]本發明與現有技術相比,具有以下明顯的優勢和有益效果:
[0026] 1.本發明通過擴展Hadoop實現對MapReduce程序運行前的度量工作,實現了應用程度層對MapReduce應用層的度量,將信任關系由應用層傳遞到了MapReduce應用層,在 MapRedcue程序實際運行前,先對其完整性進行度量,實現了對信任鏈的擴展。[0〇27] 2.本發明通過擴展NodeManager節點健康檢測功能,實現了對Hadoop核心文件的周期性檢測,有效的保護了 Hadoop運行過程中核心文件的完整性。當核心文件完整性遭到破壞時可以及時發現并將此計算節點移除Hadoop集群,有效阻止異常計算節點在計算過程中可能帶來的安全威脅。【附圖說明】[〇〇28]圖1為本發明的基于可信計算的Hadoop平臺度量方法的流程圖;[〇〇29] 圖2為MapRedcue程序完整性度量流程圖;[〇〇3〇] 圖3為NodeManager節點健康檢測流程圖。【具體實施方式】[〇〇31]為使本領域技術人員更好的理解本發明的技術方案,下面結合附圖和具體實施例對本發明作詳細說明。[〇〇32]如圖1所示,本發明實施例提供一種基于可信計算的Hadoop平臺度量方法,包括以下步驟:[〇〇33] 步驟S1、MapReduce程序運行前的度量
[0034] 基于可信鏈擴展對MapReduce程序運行前的度量,通過向Re sourceManager代碼中加入度量邏輯,實現Hadoop對MapReduce程序運行前的度量,擴展信任關系,具體方法如下:
[0035] 步驟1 ? 1:獲取Hadoop平臺中MapReduce程序文件。[〇〇36]用戶提交MapReduce程序到Hadoop平臺運行時,程序相關文件被暫存到HDFS臨時文件中,用于計算節點獲取計算程序。在實際計算程序執行前,需要由已被度量的Hadoop程序對其進行度量。需要度量的文件包括:job.jar、job.split、job.xml,默認情況位于:
[0037] hdfs: //tmp/hadoop-yarn/staging/USER/ ? staging/jobID 目錄下,其中USER代表提交作業的用戶名,jobID代表Hadoop為作業分配的作業編號。通過Hadoop提供的API實現對HDFS中MapReduce程序信息的獲取。
[0038] 步驟1 ? 2:計算MapReduce程序文件的摘要值;同時擴展PCR(program control register,程序控制暫存器),得到第一PCR擴展值(S卩,第一擴展PCR編號)。
[0039]由于TPM(Trusted Platform Module,可信平臺模塊)提供了基于硬件的摘要值計算方法,所以可通過TPM的摘要算法分別計算上述MapReduce程序文件的摘要值。同時調用 PcrExtend方法將計算結果擴展到PCR,得到第一 PCR擴展值,保證度量結果可信性和完整性。PcrExtend度量邏輯為:PCRnew=SHAl(PCR | | newHashValue),表示將PCR當前值與文件摘要值鏈接后重新計算摘要值,將結果重新寫入PCR,TPM采用的摘要算法為SHA1摘要算法。由于PCR只提供了擴展和清零兩種操作,所以惡意用戶無法對PCR值進行任意修改,保證了度量結果的可信性和完整性。
[0040] 步驟1.3:寫入MapReduce程序度量日志[〇〇411 將MapReduce程序文件的摘要值寫入Master節點中的度量日志,以提供用戶事后驗證的途徑。MapReduce程序度量日志內容包括:第一 PCR擴展值、MapReduce程序文件的摘要值、用戶名、所度量的MapReduce程序文件名。[0〇42] 基于可信鏈擴展的MapReduce程序可信度量方法,通過擴展ResourceManager代碼實現Hadoop對MapReduce程序的度量。對于Hadoop2 ? 6 ? 0版本,可以向Hadoop源代碼hadoop-2.6.〇-src/hadoop-yarn-project/hadoop-yarn/
[0043] hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/j ava/ org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.ja va中添加 MapReduce程序度量代碼。本方法原型實施方式通過向public void transit1n (RMAppImpl app,RMAppEvent event)方法中加入上述MapReduce程序度量邏輯代碼,實現 MapReduce程序運行前的度量。加入度量代碼后,需要重新編譯Hadoop。通過擴展 ResourceManager源代碼,實現可信鏈到MapReduce程序的擴展,同時記錄度量日志,度量日志內容分別為擴展PCR編號、文件SHA1值、用戶、度量文件,流程如圖2所示。[〇〇44] 步驟S2、Hadoop文件動態度量[0〇45] 基于節點健康檢測的Hadoop文件動態度量,通過向NodeManager節點健康檢測代碼中加入度量邏輯,實現對Hadoop核心組件的周期性度量,保證運行過程中計算環境的可信。具體實現如下:[〇〇46] 步驟2 ? 1:獲取Hadoop核心組件信息。[〇〇47] Hadoop核心組件信息包括:
[0048]1 )$HAD00P_H0ME/etc/Hadoop/*: Hadoop 配置文件,包括slave s、core-si te ? xml、 hdfs—site?xml、mapred_site?xml、yarn—site?xml,〇
[0049]2)$HAD00P_H0ME/lib/native/*:Hadoop 本地庫,包括 libhadoop ? so,libhdfs ? so〇
[0050]3) $HAD00P_H0ME/share/Hadoop/*: Hadoop核心 jar包,包括common、hdfs、 mapreduce、yarn〇[0051 ]4)$說000卩_11(1^/1^11/*$擬000?_11(1^/81^11/*:版(1〇(^核心腳本,用于操作11(^8文件系統、管理MapReduce作業任務、改變Hadoop當前狀態。常用的有hdf s、mapreduce、 hadoop-daemon?sh 〇[〇〇52]步驟2.2:計算Hadoop核心組件各文件的摘要值;同時擴展PCR,得到第二PCR擴展值(即。第二擴展PCR編號);方法同步驟1.2。[〇〇53] 步驟2 ? 3:寫入NodeManager節點中度量日志,方法同步驟1 ? 3,NodeManager節點中度量日志記錄內容包括:第二P C R擴展值、H a d 〇 〇 p核心組件各文件的摘要值、所度量的 Hadoop核心組件文件名、度量時間。[〇〇54]步驟2.4:將Hadoop核心組件各文件的摘要值與標準庫中標準值進行比較,得到 NodeManager節點健康檢測結果。[〇〇55]比較每個Hadoop的核心文件的摘要值(S卩,度量值)與標準庫中的標準值是否相同,完全一致時節點健康檢測通過,節點健康檢測返回0K,當出現不一致情況時,節點健康檢測出現異常,返回ERROLNodeManager節點健康檢測會周期性執行上述度量邏輯,當 NodeManager健康狀態出現問題時,會通知ResourceManager不在為其分配任務,阻止異常計算節點在計算過程中可能帶來的威脅。[0〇56] 基于節點健康檢測的Hadoop文件動態度量方法,通過向NodeManager節點健康檢測代碼中加入度量邏輯,實現對Hadoop核心組件的周期性度量,保證運行過程中計算環境的可信。以Hadoop2.6.0為例,默認NodeManager節點健康檢測功能未啟用,需要修改相關配置文件,向 $HADOOP_HOME/etc/hadoop/yarn-si te ? xml 中加入 yarn ? nodemanager ? heal th_ checker.script.path以啟動健康檢測腳本功能。實施方式原型中,將節點健康檢測腳本配詈在$HADOOP_HOME/healthCheck/healthCheck.sh中。負責周期性檢測Hadoop核心文件,并與標準庫中的標準值進行比較,當發現不匹配狀態出現后,healthCheck.sh將返回ERROR, 此后該節點將不再接收任務作業任務,保證當計算節點出現異常時用戶數據的安全。同時健康檢測腳本將度量結果寫/V$HADOOP_HOME/healthCheck/ascii_run-time_ measurements中,并擴展PCR,為平臺可信性驗證提供依據,流程如圖3所示。[〇〇57]最后應說明的是:以上示例僅用以說明本發明而并非限制本發明所描述的技術方案;因此,盡管本說明書參照上述的示例對本發明已進行了詳細的說明,但是本領域的普通技術人員應當理解,仍然可以對本發明進行修改或等同替換;而一切不脫離發明的精神和范圍的技術方案及其改進,其均應涵蓋在本發明的權利要求范圍當中。
【主權項】
1.一種基于可信計算的Hadoop平臺度量方法,其特征在于,包括以下步驟:步驟S1、MapReduCe程序運行前的度量步驟1 ? 1:獲取Hadoop平臺中MapReduce程序文件,其包含:job.jar、job.split、 job.xml;步驟1 ? 2:計算MapReduce程序文件的摘要值并擴展PCR(program control register, 程序控制暫存器),同時寫入MapReduce程序度量日志;步驟S2、Hadoop文件動態度量步驟2 ? 1:獲取Hadoop核心組件信息,其包含:Hadoop配置文件、Hadoop本地庫、Hadoop 核心jar包、Hadoop核心腳本;步驟2.2:計算Hadoop核心組件各文件的摘要值并擴展PCR,同時寫入NodeManager節點 中度量日志;步驟2.3:將Hadoop核心組件各文件的摘要值與標準庫中標準值進行比較,得到 NodeManager節點健康檢測結果。2.如權利要求1所述基于可信計算的Hadoop平臺度量方法,其特征在于,通過TPM (Trusted Platform Module,可信平臺模塊)的摘要算法計算MapReduce程序文件或Hadoop 核心組件信息摘要值;同時調用PcrExtend方法將計算結果擴展到PCR。3.如權利要求2所述基于可信計算的Hadoop平臺度量方法,其特征在于,PcrExtend方 法的度量邏輯為:PCRnew=SHAl (PCR | | newHashValue),表示將PCR當前值與文件摘要值鏈接 后重新計算摘要值,將結果重新寫入PCR。4.如權利要求2或3所述基于可信計算的Hadoop平臺度量方法,其特征在于,所述摘要 算法為SHA1摘要算法。5.如權利要求1所述基于可信計算的Hadoop平臺度量方法,其特征在于,MapReduce程 序度量日志內容包括:第一PCR擴展值、MapReduce程序文件的摘要值、用戶名、所度量的 MapReduce程序文件名。6.如權利要求1所述基于可信計算的Hadoop平臺度量方法,其特征在于,NodeManager 節點中度量日志記錄內容包括:第二PCR擴展值、Hadoop核心組件各文件的摘要值、所度量 的Hadoop核心組件文件名、度量時間。7.如權利要求1所述基于可信計算的Hadoop平臺度量方法,其特征在于,步驟2.3具體 為:比較每個Hadoop的核心文件的摘要值與標準庫中的標準值是否相同,完全一致時節點 健康檢測通過,節點健康檢測返回0K,當出現不一致情況時,節點健康檢測出現異常,返回 ERROR〇8.如權利要求7所述基于可信計算的Hadoop平臺度量方法,其特征在于,所述 NodeManager節點健康檢測會周期性執行度量邏輯,當NodeManager健康狀態出現問題時, 會通知ResourceManager不再為其分配任務。9.如權利要求1所述基于可信計算的Hadoop平臺度量方法,其特征在于,所述Hadoop配 置文件包括:slaves >core-site.xml>hdfs-site.xml>mapred-site.xmKyarn-site.xml; 所述Hadoop本地庫包括:libhadoop.so, libhdfs.so;所述Hadoop核心 jar包包括:common、 hdf s、mapreduce、yarn;所述 Hadoop 核心腳本為 hdf s、mapreduce 或 hadoop-daemon ? sh—種 或多種。
【文檔編號】G06F21/57GK105975865SQ201610366119
【公開日】2016年9月28日
【申請日】2016年5月27日
【發明人】詹靜, 蔡磊
【申請人】北京工業大學