创建Java/Python工程
安全计算应用支持创建Java、Python工程,并提供代码样例进行下载。
Java高级语言的简单性,跨平台与可移植等特性和对大数据、微服务等技术的支持,使得大量应用基于Java进行开发,为了满足对于数据安全的需求,方便快速将Java应用迁移到安全的TEE环境中,机密OS提供运行Java应用的环境。
操作步骤
- 单击左侧树快捷功能区
按钮,或者单击应用开发区域右侧的
按钮,打开“鲲鹏应用工程”页面,如图1所示。
- 单击“安全计算应用”,打开“安全计算应用”页面,如图2所示。
- 单击“Java/Python应用”,打开“Java/Python应用”页面,在左侧任务类型中选择“创建工程”,工程类别选择“Java工程”或“Python工程”,选择需要的工程样例,并进行其他参数配置。如图3、图4所示。
- 单击“下一步”配置目标节点,配置时可以使用已有服务器或使用新增服务器,新增服务器需要输入IP地址、SSH端口、用户名、密码和存放目录;选择暂不部署将默认不部署SDK。如图5所示。
- 选择是否部署SDK,部署时可选择不同的部署方式,比如在线部署、离线部署或不部署如图6所示。
表1 Java/Python工程配置参数说明 参数
说明
任务类型
任务类型可选:
- 创建工程
- Java/Python应用改造
工程类别
工程类别可选:
- Java工程
- Python工程
工程样例
提供的工程样例。
- Hello World
- Titanic
说明:
- 选择Java工程,提供Hello World工程样例,使用鲲鹏机密计算高级语言开发的Java Hello World参考实现。
- 选择Python工程,提供Titanic工程样例,使用Python机器学习库对泰坦尼克号生存数据进行预测的参考实现。
工程名称
默认生成一个工程名称。格式为“xxx_ProjectN”,可修改。
创建的Java/Python工程名称。
说明:工程名称只能由字母、数字、“.”、“-”、“+”、“()”和“_”组成,长度为1~64个字符且不能以“.”开头。
工程位置
默认生成一个工程位置,格式为“C:\Users\username\KunpengProject”,可修改。
创建的Java/Python工程存储路径。
(可选)签名私钥
导入签名私钥。
(可选)签名证书
导入签名证书。
部署服务器
- 使用已有服务器
- 使用新增服务器
- 暂不部署
说明:选择“使用新增服务器”添加的服务器会自动添加到目标服务器管理中。
IP地址
允许进行操作的目标节点IP地址。
SSH端口
目标节点的SSH端口号。
用户名
允许进行操作的目标节点用户。
密码
输入目标节点账户的密码。
记住密码
勾选后可记住当前服务器用户名密码。
存放目录
目标节点存放目录。
说明:工具会读写存放目录下的内容,避免造成用户内容丢失,建议使用空目录。
部署SDK
选择SDK部署方式。
- 在线部署
- kunpeng-sc-devel
- kunpeng-sc
- 离线部署
- kunpeng-sc-devel
- kunpeng-sc
- 不部署
说明:
- 选择在线部署方式,服务器必须能连接外网,若隔离网络环境下就需要通过代理方式访问外网,具体请参见配置代理。
- 选择离线部署方式,将从本地导入SDK,可前往下载地址去下载SDK到本地并上传。
- 选择不部署,将不部署SDK。
- 单击“创建工程”后,弹出提示框,确认是否打开TrustZone功能开关,若已打开开关,请勾选“已打开”,单击“确认”按钮,如图7所示。
- SDK部署完成后,需要部署Java/Python运行环境。
- 部署Java运行环境。
- 解压文件。
1
tar -zxvf /user/local/kunpeng-sc/java/bisheng-jdk-8u372-tee-aarch64.tar.gz
- 复制目录。
1
cp -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内。
1
tee_teleport -s jdk.sec -t java
- 解压文件。
- 部署Python运行环境。
- 解压文件。
1
tar -zxvf /user/local/kunpeng-sc/python/Python-3.6.15-tee-aarch.tar.gz
- 复制目录。
1
cp -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内。
1
tee_teleport -s python.sec -t python
若需要安装Java、Python的第三方库,可以使用“tee_teleport”命令进行安装,“tee_teleport”的参数使用说明可参考表2。
表2 参数说明 参数
参数说明
返回值
install(-s)
安装TEE侧Java或Python运行时环境
安装成功返回0,安装失败返回-1
uninstall(-u)
卸载TEE侧Java或Python运行时环境,需要指定type
安装成功返回0,安装失败返回-1
type(-t)
指定安装类型,为Java、Python或Py3rd,需配合-s参数使用
-
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工程