【技术实现步骤摘要】
一种Spark程序加密的方法、插件
[0001]本专利技术涉及大数据处理
,尤其是一种
Spark
程序加密的方法
、
插件
。
技术介绍
[0002]Spark
程序是一种基于
jvm
运行环境,部署在集群运行的分布式计算引擎,
[0003]Yarn
是一种对集群提供统一资源管理和任务调度的管理系统
。
用户在客户端向
Yarn
提交
Spark
程序请求命令,
Yarn
负责提供可计算的节点列表,分发
、
管理
Spark
程序包在上述多个节点的启动及运行
。
[0004]目前对基于
jvm
运行的程序大多是本地加密,在某个节点上直接部署
、
解密
。
而
Spark
程序是利用
Yarn
调度功能间接的多节点部署,因此既无法直接部署,也必须满足部署后可以在多个节点解密运行
。
目前大多数的加密方法并不满足这一要求
。
技术实现思路
[0005]为了克服上述现有技术中的缺陷,本专利技术提供一种
Spark
程序加密的方法,跟目前主流的只支持直接部署
、
单节点运行的
jar
包加密软件对比,本专利技术支持
yarn
部署
、 />多节点运行
。
[0006]为实现上述目的,本专利技术采用以下技术方案,包括:
[0007]一种
Spark
程序加密的方法,包括以下步骤:
[0008]S11
,指定
Spark
程序中要加密的类名,设定加密算法,以及加密算法所需的密钥即加密密钥;
[0009]S12
,解析要加密的
jar
包;解析
jar
包内的字节码文件即
class
文件,并根据各个字节码文件的类结构分别建立对应的递归目录;同时建立临时目录;
[0010]S13
,将
jar
包内的字节码文件释放出来,利用加密算法和加密密钥对指定要加密的字节码文件进行加密,具体如下所示:
[0011]若字节码文件的类名不是步骤
S11
中所指定的要加密的类名,则按照字节码文件的类结构,将字节码文件放入对应的递归目录中;
[0012]若字节码文件的类名是步骤
S11
中所指定的要加密的类名,则一方面,利用所设定的加密算法和加密密钥,对字节码文件进行加密转换,得到转换后的文件即加密的字节码文件,然后根据字节码文件的类结构在临时目录中建立子目录,并将加密的字节码文件放在临时目录的子目录中;另一方面,将字节码文件的方法体内容清空,仅保留字节码文件的方法体基本信息,得到内容清空后的字节码文件,然后将内容清空后的字节码文件放入对应的递归目录中;
[0013]S14
,编写解密算法和
ClassFileTransformer
实现类;建立解密目录,将解密算法的字节码文件
、ClassFileTransformer
实现类的字节码文件放入解密目录中;
[0014]所述
ClassFileTransformer
实现类用于根据解密算法和解密密钥对加密的字节码文件进行解密,得到解密后的字节码文件;
[0015]S15
,将整体目录进行重新压缩,得到加密的
jar
包;
[0016]所述整体目录包括递归目录
、
临时目录
、
解密目录;
[0017]S16
,编写可执行文件;
[0018]所述可执行文件用于改造
Spark
程序提交命令,利用可执行文件对输入的原
Spark
程序提交命令进行重新拼装,加入解密密钥,得到改造后的
Spark
程序提交命令;
[0019]S17
,加密的
jar
包和改造后的
Spark
程序提交命令提交给节点即服务器后,节点从改造后的
Spark
程序提交命令中获取解密密钥,并对加密的
jar
包进行解析,利用
jar
包中的
ClassFileTransformer
实现类和解密算法,以及利用所获取的解密密钥对加密的字节码文件进行解密,得到解密后的字节码文件,使得
Spark
程序解密运行
。
[0020]步骤
S16
中,所述可执行文件使用
go
语言进行编写,最终形成汇编语言脚本
。
[0021]编写
go
语言脚本,自动获取步骤
S11
输入的解密密钥和加密算法,对执行时输入的
spark
程序提交命令自动解析,对程序提交的主节点和从节点环境分别引入
javaagent
配置,包括密钥内容,以及指定用于解密的
ClassFileTransformer
实现类,形成最终的改造后的
spark
提交命令;该
go
语言脚本在打包过程中,生成可执行文件,
spark
程序提交命令被编译成汇编语言
。
[0022]所述可执行文件限定
Spark
程序运行的服务器
IP
地址列表,若
Spark
程序当前运行的
IP
地址未在限定的服务器
IP
地址列表中,则表示
Spark
程序有被私自挪用的风险,不允许通过
。
[0023]所述可执行文件对
Spark
程序中
jar
包的哈希码进行检查,检查
jar
包的哈希码是否改变,若改变,则表示
Spark
程序有被篡改的风险,不允许通过
。
[0024]Spark
程序为多节点部署,包括主节点和从节点;对主节点和从节点分别增加代理配置,其中,代理
jar
包指定为
Spark
程序包本身,解密密钥指定为隐匿在改造后的
Spark
程序提交命令中的解密密钥
。
[0025]可执行文件对原
spark
程序提交命令进行代理检查,以防止
spark
程序被注入外来的代理监听机制;所述代理检查的具体方式为:查看
conf
中是否有
javaagent
的字样,若有,本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.
一种
Spark
程序加密的方法,其特征在于,包括以下步骤:
S11
,指定
Spark
程序中要加密的类名,设定加密算法,以及加密算法所需的密钥即加密密钥;
S12
,解析要加密的
jar
包;解析
jar
包内的字节码文件即
class
文件,并根据各个字节码文件的类结构分别建立对应的递归目录;同时建立临时目录;
S13
,将
jar
包内的字节码文件释放出来,利用加密算法和加密密钥对指定要加密的字节码文件进行加密,具体如下所示:若字节码文件的类名不是步骤
S11
中所指定的要加密的类名,则按照字节码文件的类结构,将字节码文件放入对应的递归目录中;若字节码文件的类名是步骤
S11
中所指定的要加密的类名,则一方面,利用所设定的加密算法和加密密钥,对字节码文件进行加密转换,得到转换后的文件即加密的字节码文件,然后根据字节码文件的类结构在临时目录中建立子目录,并将加密的字节码文件放在临时目录的子目录中;另一方面,将字节码文件的方法体内容清空,仅保留字节码文件的方法体基本信息,得到内容清空后的字节码文件,然后将内容清空后的字节码文件放入对应的递归目录中;
S14
,编写解密算法和
ClassFileTransformer
实现类;建立解密目录,将解密算法的字节码文件
、ClassFileTransformer
实现类的字节码文件放入解密目录中;所述
ClassFileTransformer
实现类用于根据解密算法和解密密钥对加密的字节码文件进行解密,得到解密后的字节码文件;
S15
,将整体目录进行重新压缩,得到加密的
jar
包;所述整体目录包括递归目录
、
临时目录
、
解密目录;
S16
,编写可执行文件;所述可执行文件用于改造
Spark
程序提交命令,利用可执行文件对输入的原
Spark
程序提交命令进行重新拼装,加入解密密钥,得到改造后的
Spark
程序提交命令;
S17
,加密的
jar
包和改造后的
Spark
程序提交命令提交给节点即服务器后,节点从改造后的
Spark
程序提交命令中获取解密密钥,并对加密的
jar
包进行解析,利用
jar
包中的
ClassFileTransformer
实现类和解密算法,以及利用所获取的解密密钥对加密的字节码文件进行解密,得到解密后的字节码文件,使得
Spark
程序解密运行
。2.
根据权利要求1所述的一种
Spark
程序加密的方法,其特征在于,步骤
S16
中,所述可执行文件使用
go
语言进行编写,最终形成汇编语言脚本
。3.
根据权利要求2所述的一种
Spark
程序加密的方法,其特征在于,编写
go
语言脚本,自动获取步骤
S11
输入的解密密钥和加密算法,对执行时输入的
spark
程序提交命令自动解析,对程序提交的主节点和从节点环境分别引入
【专利技术属性】
技术研发人员:杨东,王云,姜明军,沈永柏,孙艳,江梓贤,刘欢,
申请(专利权)人:力高山东新能源技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。