鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

创建Java/Python工程

安全计算应用支持创建Java、Python工程,并提供代码样例进行下载。

Java高级语言的简单性,跨平台与可移植等特性和对大数据、微服务等技术的支持,使得大量应用基于Java进行开发,为了满足对于数据安全的需求,方便快速将Java应用迁移到安全的TEE环境中,机密OS提供运行Java应用的环境。

前提条件

  • 已成功登录鲲鹏DevKit。
  • 已安装应用开发工具,建议提前安装编译调试工具并添加目标服务器,工程创建完成后可通过编译调试工具进行编译调试。

操作步骤

  1. 单击左侧树快捷功能区按钮,或者单击应用开发区域右侧的按钮,打开“鲲鹏应用工程”页面,如图1所示。
    图1 鲲鹏应用工程
  2. 单击“安全计算应用”,打开“安全计算应用”页面,如图2所示。
    图2 安全计算应用
  3. 单击“Java/Python应用”,打开“Java/Python应用”页面,在左侧任务类型中选择“创建工程”,工程类别选择“Java工程”或“Python工程”,选择需要的工程样例,并进行其他参数配置。如图3图4所示。
    图3 创建Java工程
    图4 创建Python工程
    表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”,可修改。

    (可选)签名私钥

    导入签名私钥。

    (可选)签名证书

    导入签名证书。

  4. 单击“下一步”配置目标节点,配置时可以使用已有服务器或使用新增服务器,新增服务器需要输入IP地址、SSH端口、用户名、密码和存放目录;选择暂不部署将默认不部署SDK。如图5所示。
    图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操作系统,并且拥有管理员权限的目标节点。

  5. 选择是否部署SDK,部署时可选择不同的部署方式,例如在线部署、离线部署或不部署,如图6所示。参数配置完成后,单击“创建工程”,创建Java工程或Python工程。
    图6 部署SDK

    若安全计算应用SDK部署失败,请参见安全计算应用SDK部署失败的解决方法进行处理。

  6. 单击“创建工程”后,弹出提示框,确认是否打开TrustZone功能开关,若已打开开关,请勾选“已打开”,单击“确认”按钮,如图7所示。
    图7 TrustZone功能开关
    工程创建过程中,会校验相关配置,如图8图9所示。
    图8 Java/Python工程创建成功
    图9 Java/Python工程创建失败

    创建Python工程,需要安装依赖的第三方库。

  7. SDK部署完成后,需要部署Java/Python运行环境。
    • 部署Java运行环境。
      1. 解压文件。
        1
        tar -zxvf /usr/local/kunpeng-sc/java/bisheng-jdk-8u372-tee-aarch64.tar.gz
        
      2. 复制目录。
        1
        cp -r /usr/local/kunpeng-sc/java/bisheng-jdk-8u372-tee-aarch64/jdk /usr/local/kunpeng-sc-devel/utils/pack-App
        
      3. 将已申请的证书、证书对应的私钥放入“/usr/local/kunpeng-sc-devel/utils/pack-App/pack_tools”目录中,并分别命名为ta_cert.der、private_key.pem。
      4. 进入pack-App目录,执行以下命令生成jdk.sec文件。
        1
        2
        cd /usr/local/kunpeng-sc-devel/utils/pack-App
        python3 pack.py jdk
        
      5. 将Java环境安装到TEE内。
        1
        tee_teleport -s jdk.sec -t java
        
    • 部署Python运行环境。
      1. 解压文件。
        1
        tar -zxvf /usr/local/kunpeng-sc/python/Python-3.6.15-tee-aarch64.tar.gz
        
      2. 复制目录。
        1
        cp -r /usr/local/kunpeng-sc/python/Python-3.6.15-tee-aarch64/python /usr/local/kunpeng-sc-devel/utils/pack-App
        
      3. 将已申请的证书、证书对应的私钥放入“/usr/local/kunpeng-sc-devel/utils/pack-App/pack_tools”目录中,并分别命名为ta_cert.der、private_key.pem。
      4. 进入pack-App目录,执行以下命令生成python.sec文件。
        1
        2
        cd /usr/local/kunpeng-sc-devel/utils/pack-App
        python3 pack.py python
        
      5. 将Python环境安装到TEE内。
        1
        tee_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   #一次性安装、执行、输入、卸载
      
  8. 运行环境已部署完成,Java/Python工程创建成功后,单击“打开工程”,可直接在本窗口打开工程。
    图10 查看Java/Python工程

    若对工程文件夹或文件进行变更(增加、删除、修改、重命名),可参见同步代码到远端服务器将变更的内容同步到远端服务器。