创建Java/Python工程
安全计算应用支持创建Java、Python工程,并提供代码样例进行下载。
Java高级语言的简单性,跨平台与可移植等特性和对大数据、微服务等技术的支持,使得大量应用基于Java进行开发,为了满足对于数据安全的需求,方便快速将Java应用迁移到安全的TEE环境中,机密OS提供运行Java应用的环境。
前提条件
- 已成功登录鲲鹏DevKit。
- 已安装应用开发工具,建议提前安装编译调试工具并添加目标服务器,工程创建完成后可通过编译调试工具进行编译调试。
操作步骤
- 单击左侧树快捷功能区
按钮,或者单击应用开发区域右侧的
按钮,打开“鲲鹏应用工程”页面,如图1所示。 - 单击“安全计算应用”,打开“安全计算应用”页面,如图2所示。
- 单击“Java/Python应用”,打开“Java/Python应用”页面,在左侧任务类型中选择“创建工程”,工程类别选择“Java工程”或“Python工程”,选择需要的工程样例,并进行其他参数配置。如图3、图4所示。
表1 配置参数说明1 参数
说明
任务类型
任务类型可选:
- 创建工程
- Java/Python应用改造
工程类别
工程类别可选:
- Java工程
- Python工程
工程样例
提供的工程样例。
- Hello World:选择Java工程,提供Hello World工程样例,使用鲲鹏机密计算高级语言开发的Java Hello World参考实现。
- Titanic:选择Python工程,提供Titanic工程样例,使用Python机器学习库对泰坦尼克号生存数据进行预测的参考实现。
工程名称
创建工程的名称。默认生成一个工程名称,格式为“xxx_ProjectN”,可修改。
说明:- N为递增的数字,从1开始。
- 工程名称只能由字母、数字、“.”、“-”、“+”、“()”和“_”组成,长度为1~64个字符且不能以“.”开头。
工程位置
创建工程的存储路径。默认生成一个工程位置,格式为“C:\Users\username\KunpengProject”,可修改。
(可选)签名私钥
导入签名私钥。
(可选)签名证书
导入签名证书。
- 单击“下一步”配置目标节点,配置时可以使用已有服务器或使用新增服务器,新增服务器需要输入IP地址、SSH端口、用户名、密码和存放目录;选择暂不部署将默认不部署SDK。如图5所示。
表2 配置参数说明2 参数
说明
部署服务器
- 使用已有服务器
- 使用新增服务器
- 暂不部署
说明:选择“使用新增服务器”添加的服务器会自动添加到目标服务器管理中。
IP地址
允许进行操作的目标节点IP地址。
SSH端口
目标节点的SSH端口号。
用户名
允许进行操作的目标节点用户。
密码
目标节点用户名密码。
记住密码
勾选后可记住当前服务器用户名密码。
存放目录
目标节点存放目录。
说明:工具会读写存放目录下的内容,避免造成用户内容丢失,建议使用空目录。
创建工程时同时部署SDK
选择“是”部署SDK。
选择“否”不部署SDK。
部署SDK
选择SDK部署方式。
- 在线部署
- kunpeng-sc
- kunpeng-sc-devel
- 离线部署
- kunpeng-sc
- kunpeng-sc-devel
说明:- 选择在线部署方式,服务器必须能连接外网,若在隔离网络环境下就需要通过代理方式访问外网,具体请参见配置代理。
- 选择离线部署方式,将从本地导入SDK,可前往下载地址去下载SDK到本地并上传。
用户在配置新增目标节点时,必须注意,需运行在物理机上,ARM架构下的openEuler 20.03 LTS SP1或Kylin V10操作系统,并且拥有管理员权限的目标节点。
- 选择是否部署SDK,部署时可选择不同的部署方式,例如在线部署、离线部署或不部署,如图6所示。参数配置完成后,单击“创建工程”,创建Java工程或Python工程。
- 单击“创建工程”后,弹出提示框,确认是否打开TrustZone功能开关,若已打开开关,请勾选“已打开”,单击“确认”按钮,如图7所示。
- SDK部署完成后,需要部署Java/Python运行环境。
- 部署Java运行环境。
- 解压文件。
1tar -zxvf /usr/local/kunpeng-sc/java/bisheng-jdk-8u372-tee-aarch64.tar.gz
- 复制目录。
1cp -r /usr/local/kunpeng-sc/java/bisheng-jdk-8u372-tee-aarch64/jdk /usr/local/kunpeng-sc-devel/utils/pack-App
- 将已申请的证书、证书对应的私钥放入“/usr/local/kunpeng-sc-devel/utils/pack-App/pack_tools”目录中,并分别命名为ta_cert.der、private_key.pem。
- 进入pack-App目录,执行以下命令生成jdk.sec文件。
1 2
cd /usr/local/kunpeng-sc-devel/utils/pack-App python3 pack.py jdk
- 将Java环境安装到TEE内。
1tee_teleport -s jdk.sec -t java
- 解压文件。
- 部署Python运行环境。
- 解压文件。
1tar -zxvf /usr/local/kunpeng-sc/python/Python-3.6.15-tee-aarch64.tar.gz
- 复制目录。
1cp -r /usr/local/kunpeng-sc/python/Python-3.6.15-tee-aarch64/python /usr/local/kunpeng-sc-devel/utils/pack-App
- 将已申请的证书、证书对应的私钥放入“/usr/local/kunpeng-sc-devel/utils/pack-App/pack_tools”目录中,并分别命名为ta_cert.der、private_key.pem。
- 进入pack-App目录,执行以下命令生成python.sec文件。
1 2
cd /usr/local/kunpeng-sc-devel/utils/pack-App python3 pack.py python
- 将Python环境安装到TEE内。
1tee_teleport -s python.sec -t python
若需要安装Java、Python的第三方库,可以使用“tee_teleport”命令进行安装,“tee_teleport”的参数使用说明可参考表3。
表3 参数说明 参数
参数说明
返回值
install(-s)
安装TEE侧Java或Python运行时环境。
安装成功返回0,安装失败返回-1。
uninstall(-u)
卸载TEE侧Java或Python运行时环境,需要指定type。
卸载成功返回0,卸载失败返回-1。
type(-t)
指定类型,为Java、Python或Py3rd,需配合-s、-u或-m参数使用。
说明:指定-t参数时,指定的类型为小写,例如安装Java的命令为“tee_teleport -s jre.sec -t java”。
-
import(-m)
安装TEE侧Java或Python的三方库。
安装成功返回0,安装失败返回-1。
create(-c)
创建TEE侧应用运行目录和sessionID。
创建成功返回0,创建失败返回-1。
id(-i)
指定sessionID,使用run/input/output/destroy时需指定。
-
run(-r)
运行应用,需要绑定sessionID。
运行成功返回0,运行失败返回-1。
input(-n)
向TEE侧输入数据,可配合-d参数使用(需使用相对路径)。
运行成功返回0,运行失败返回-1。
output(-o)
从TEE侧将数据输出到REE侧,可配合-v参数使用。
运行成功返回0,运行失败返回-1。
destroy(-e)
销毁Java或Python应用的数据、目录和sessionID,需指定sessionID。
运行成功返回0,运行失败返回-1。
delete(-d)
删除TEE侧应用的子文件或子目录。
运行成功返回0,运行失败返回-1。
query(-q)
查询TEE侧应用的子文件或子目录是否存在。
所查询的文件或目录存在返回0,不存在返回1,运行失败返回-1。
parameter(-p)
传入应用运行所需的参数。
-
rename(-a)
指定输入文件的路径。
-
save(-v)
指定输出文件的路径。
-
help(-h)
打印使用方式。
-
以下为使用示例:
1 2 3 4 5 6 7 8 9 10 11 12 13
tee_teleport -s jre.sec -t java #安装Java tee_teleport -s python.sec -t python #安装Python tee_teleport -u -t java #卸载Java tee_teleport -u -t python #卸载Python tee_teleport -m third.sec -t python #安装三方库 tee_teleport -c test.sec #安装应用,会在当前目录生成sessionID.txt tee_teleport -r TeeJava.class -i sessionID.txt #运行应用 tee_teleport -n data_dir -i sessionID.txt #文件输入 tee_teleport -o data_dir -i sessionID.txt #文件输出 tee_teleport -e -i sessionID.txt #卸载应用 tee_teleport -d output/tee.log -i sessionID.txt #删除文件 tee_teleport -q output/tee.log -i sessionID.txt #查询文件 tee_teleport -c test.sec -r TeeJava.class -n data_dir -o output/tee.log -e #一次性安装、执行、输入、卸载
- 解压文件。
- 部署Java运行环境。
- 运行环境已部署完成,Java/Python工程创建成功后,单击“打开工程”,可直接在本窗口打开工程。图10 查看Java/Python工程
若对工程文件夹或文件进行变更(增加、删除、修改、重命名),可参见同步代码到远端服务器将变更的内容同步到远端服务器。








