一种基于可信计算的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日
【发明人】詹静, 蔡磊
【申请人】北京工业大学