华为云服务器快速入门_云淘科技

以下教程将引导您了解并使用QingTian Enclave特性,包括如何启动QingTian Enclave父虚拟机,如何构建QingTian Enclave镜像文件,如何查询正在运行的QingTian Enclave,以及停止QingTian Enclave。

准备一台支持QingTian Enclave特性的虚拟机实例

在购买虚拟机时,您需要在高级选项中勾选Enclave,并选择Linux作为系统镜像。建议使用HCE2.0镜像。
连接到父虚拟机,请参考华为云ECS用户指南。
在父虚拟机中安装qt CLI工具,并在配置文件中按需设置资源隔离参数,然后启动资源隔离服务。详情请见QingTian CLI(qt CLI)。

您可以安装qt CLI工具和其他必要rpm包:

yum install qt-enclave-bootstrap
yum install virtio-qtbox
yum install qingtian-tool

在配置文件中按需配置隔离参数,本教程内使用默认1G内存,2个vCPU。然后启动隔离服务:

systemctl start qt-enclave-env

在父虚拟机中安装Docker程序,我们推荐使用二进制的方式进行Docker安装,可以在Docker官方网站下载需要版本。这里以18.09.9为例:

wget https://download.docker.com/linux/static/stable/x86_64/docker-18.09.9.tgz

对下载的压缩包进行解压操作:

tar zxf docker-18.09.9.tgz

解压完成后将docker目录下所有文件复制到/usr/bin目录下:

cp docker/* /usr/bin

启动docker服务,并将日志等级设置为error等级:

dockerd -l error &

验证Docker版本:

docker version

运行hello-world容器,查看Docker是否安装正确:

docker run hello-world

构建QingTian Enclave镜像

本教程中,使用以下脚本作为QingTian Enclave应用程序:

#!/bin/bash
while true
do
    echo "hello enclave!"
    sleep 2
done

Dockerfile内容如下:

FROM ubuntu:latest
COPY hello_enclave.sh /root/hello_enclave.sh
CMD ["/root/hello_enclave.sh"]

构建一个名为hello-enclave的Docker镜像:

docker build -f Dockerfile -t hello-enclave . 

使用qt enclave make-img命令将Docker镜像转换为名为hello-enclave.eif的QingTian Enclave镜像:

qt enclave make-img --docker-uri hello-enclave --eif hello-enclave.eif

输出为:

# qt enclave make-img --docker-uri hello-enclave --eif hello-enclave.eif
{
    "digest":   "SHA384",
    "PCR0": "63bf78ece7d2388ff773d0cad2ebc9a3070359db46d567ba271ff8adfb8b0b091be4ff4d5dda3f1c83109096e3656f3b",
    "PCR8": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
}

现在已经构建了名为hello-enclave.eif的QingTian Enclave镜像,命令包含了一系列PCR值,包括PCR0和PCR8(该例子中制作镜像时并没有指定证书和密钥,所以PCR8为0)。这些哈希值是在Enclave镜像构建时产生的测量值,它们通常作为预期的测量值(相对于证明文档中所包含的启动时测量值而言)。

运行QingTian Enclave实例

现在可以使用以下命令来运行QingTian Enclave镜像:

qt enclave start --mem 1024 --cpus 2 --eif hello-enclave.eif --cid 4 --debug-mode

该实例运行在debug-mode,关于debug-mode详情可见qt enclave子命令介绍。

您会看到以下输出:

# qt enclave start --cpus 2 --mem 1024 --eif hello-enclave.eif --cid 4 --debug-mode
Started enclave with EnclaveID : 0, EnclaveCID : 4, NumberOfCPUs : 2, MemoryMiB : 1024
{
    "EnclaveID":    0,
    "EnclaveCID":   4,
    "NumberOfCPUs": 2,
    "MemoryMiB":    1024,
    "LaunchMode":   "debug"
}

在该教程中,我们为该QingTian Enclave实例分配了2个vCPU和1024M内存,并指定其cid为4,该cid可作为QingTian Enclave实例与父虚拟机实例之间的本地套接字的IP地址。

查询正在运行的QingTian Enclave

按以上步骤创建完QingTian Enclave实例后,可以以下命令查询他是否在运行:

qt enclave query --enclave-id 0
# qt enclave query --enclave-id 0
[{
        "EnclaveID":    0,
        "ProcessID":    29990,
        "EnclaveCID":   4,
        "NumberOfCPUs": 2,
        "MemoryMiB":    1024,
        "LaunchMode":   "debug"
    }]

该命令可以用于查询QingTian Enclave相关信息,包括EnclaveID、ProcessID、EnclaveCID、vCPU数量、内存数量以及其运行模式。因为该实例是以debug模式启动的,所以可以用qt enclave console 命令查看QingTian Enclave的只读控制台输出。

hello enclave!
hello enclave!
hello enclave!
hello enclave!

您将观察到终端每隔2秒打印一次hello enclave!。

停止正在运行的QingTian Enclave实例

如果您想停止运行以上的QingTian Enclave实例,可以使用以下命令:

# qt enclave stop --enclave-id 0
stop enclave 0 successfully
{
    "EnclaveID":    0
}

父主题: QingTian Enclave管理

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家