qt enclave子命令介绍
qt为一级命令,其下目前包含enclave一个二级子命令:
[root@localhost ~]# qt
____ _ _______ _
/ __ \(_) |__ __(_)
| | | |_ _ __ __ _| | _ __ _ _ __
| | | | | '_ \ / _` | | | |/ _` | '_ \
| |__| | | | | | (_| | | | | (_| | | | |
\___\_\_|_| |_|\__, |_| |_|\__,_|_| |_|
__/ |
|___/
Welcome to the cool QingTian new CLI!
enclave : Enclave life-circle management.
qt enclave中提供enclave相关的镜像制作,拉起、销毁、查询QingTian Enclave等子命令:
[root@localhost ~]# qt enclave
usage: qt enclave [-h] {make-img,start,stop,query,console} ...
qt enclave: error: the following arguments are required: _subcommand
enclave command line interface
[root@localhost ~]# qt enclave -h
Group
qt enclave : Enclave life-circle management.
Commands:
console : Console an enclave via the enclave-id while debugging.
make-img : Make an eif image from a docker image.
query : Query an enclave via the enclave-id or query all enclaves.
start : Start an enclave via an eif image.
stop : Stop an enclave via the enclave-id.
qt enclave make-img
该命令用于将用户制作好的docker镜像转换为QingTian Enclave虚拟机可用的镜像,命令格式如下:
[root@localhost ~]# qt enclave make-img -h
Command
qt enclave make-img : Make an eif image from a docker image.
Arguments
--docker-uri [Required]
--eif [Required]
--private-key
--signing-certificate
Global Arguments
--debug : Increase logging verbosity to show all debug logs.
--help -h : Show this help message and exit.
--only-show-errors : Only show errors, suppressing warnings.
--output -o : Output format. Allowed values: json, jsonc, none, table, tsv, yaml,
yamlc. Default: json.
--query : JMESPath query string. See http://jmespath.org/ for more information
and examples.
--verbose : Increase logging verbosity. Use --debug for full debug logs.
Examples
Given docker-uri and eif to make an eif image
qt enclave make-img --docker-uri [DOCKER-URI] --eif [EIF]
Make an eif image with private-key and signing-certificate
qt enclave make-img --docker-uri [DOCKER-URI] --eif [EIF] --private-key [PRIVATE-KEY]
--signing-certificate [SIGNING-CERTIFICATE]
必选项:--docker-uri,指定Docker存储库中Docker映像的统一资源标识符(URI)。可以通过docker image ls命令查询当前本地镜像uri。
必选项:--eif,提供路径名称用于存放生成后的EIF镜像
可选项:--private-key,提供对QingTian Enclave镜像进行签名的私钥绝对路径,如果指定了PRIVATE-KEY, 要求必须同时指定签名密钥SIGNING-CERTIFICATE;
可选项:--signing-certificate,提供对QingTian Enclave镜像进行签名的证书绝对路径,如果指定了SIGNING-CERTIFICATE, 如要同时指定签名密钥PRIVATE-KEY;
命令行返回值:如果配置了以上两项证书可选项,必须保证证书有效。证书有效情况下命令输出将包括额外的PCR0,PCR8散列值用于度量Enclave镜像与签名证书。证书无效,镜像创建失败。
创建镜像命令示例:
[root@localhost docker]# qt enclave make-img --docker-uri ubuntu --eif /home/docker/ubuntu.eif --private-key /home/docker/private-key.pem --signing-certificate /home/docker/server.pem
{
"digest": "SHA384",
"PCR0": "b8c59692da8a5bcb739a83d15a0ceca670bd78da06cb2250ec70548f72254e674419e9888db9c0364a9b88dd58017a62"
"PCR8": "dbf4a7f9fab7f18619b5899c407081981ad6762fb9a809da78548821b5021965423181584acd7b201703376f1133a546"
}
qt enclave start
该命令用于创建QingTian Enclave虚拟机,命令格式如下:
[root@localhost ~]# qt enclave start -h
Command
qt enclave start : Start an enclave via an eif image.
Arguments
--cid : Default: 4.
--eif [Required]
--cpus : Default: 2.
--debug-mode
--mem : Default: 1024.
Global Arguments
--debug : Increase logging verbosity to show all debug logs.
--help -h : Show this help message and exit.
--only-show-errors : Only show errors, suppressing warnings.
--output -o : Output format. Allowed values: json, jsonc, none, table, tsv, yaml, yamlc.
Default: json.
--query : JMESPath query string. See http://jmespath.org/ for more information and
examples.
--verbose : Increase logging verbosity. Use --debug for full debug logs.
Examples
Given an eif image, an unused cid, the number of cpus and memory needed
qt enclave start [--cpus CPUS] [--mem MEM] --eif EIF [--cid CID]
可选项:--cpus,指定要分配给enclave虚拟机的vCPU数量,不能大于隔离的cpu数目, 未配置使用默认值2;
可选项:--mem,指定分配给QingTian Enclave虚拟机的内存大小(MB),不能大于隔离内存大小,需大于QingTian Enclave镜像大小,未配置使用默认值1024MB;
必选项:--eif,指定EIF镜像路径;
可选项:--cid,设置QingTian Enclave虚拟机cid,用于指定父虚拟机与QingTian Enclave虚拟机间vsock通信的socket IP。可用的cid范围为:4-4294967294,未配置使用默认值4;
可选项:--debug-mode,指定是否在调试模式下启动QingTian Enclave实例,该模式下使用全部为0的PCR散列值,可以收集打印QingTian Enclave虚拟机内部日志;
命令行返回值:创建成功后输出创建的QingTian Enclave虚拟机详细信息。
Enclave虚拟机启动命令示例:
qt enclave start --cpus 2 --mem 1024 --eif /home/docker/ubuntu.eif --cid 4
qt enclave query
该命令用于在父虚拟机内查询当前已创建的QingTian Enclave虚拟机信息,命令格式如下:
[root@localhost ~]# qt enclave query -h
Command
qt enclave query : Query an enclave via the enclave-id or query all enclaves.
Arguments
--enclave-id
Global Arguments
--debug : Increase logging verbosity to show all debug logs.
--help -h : Show this help message and exit.
--only-show-errors : Only show errors, suppressing warnings.
--output -o : Output format. Allowed values: json, jsonc, none, table, tsv, yaml, yamlc.
Default: json.
--query : JMESPath query string. See http://jmespath.org/ for more information and
examples.
--verbose : Increase logging verbosity. Use --debug for full debug logs.
Examples
Given an enclave-id to query an enclave
qt enclave query --enclave-id [ENCLAVE-ID]
Query all enclaves without enclave-id
qt enclave query
可选项:--enclave-id,query时带此参数则查询指定QingTian Enclave虚拟机信息,否则查询全部当前已存在QingTian Enclave虚拟机信息;
命令行返回值,查询到的QingTian Enclave虚拟机信息:
- EnclaveID:QingTian Enclave虚拟机的id号;
- ProcessID:父虚拟机中持有QingTian Enclave资源的进程号PID;
- EnclaveCID:QingTian Enclave虚拟机与父虚拟机通信使用的vsock socket id;
- NumberOfCPUs:从父虚拟机分配给QingTian Enclave虚拟机的vCPU个数;
- MemoryMiB:从父虚拟机分配给QingTian Enclave虚拟机的内存大小(MB);
QingTian Enclave虚拟机查询命令示例:
[root@localhost ~]#qt enclave query
[{
"EnclaveID": 0,
"ProcessID": 29990,
"EnclaveCID": 4,
"NumberOfCPUs": 2,
"MemoryMiB": 1024,
"LaunchMode": "debug"
}]
若当前无QingTian Enclave虚拟机存在,则该命令查询返回空;
带--enclave-id参数查询场景,若指定enclave-id的QingTian Enclave虚拟机不存在, 查询命令返回空。
qt enclave stop
该命令用于在父虚拟机内销毁已创建的QingTian Enclave虚拟机,命令格式如下:
[root@localhost ~]# qt enclave stop -h
Command
qt enclave stop : Stop an enclave via the enclave-id.
Arguments
--enclave-id [Required]
Global Arguments
--debug : Increase logging verbosity to show all debug logs.
--help -h : Show this help message and exit.
--only-show-errors : Only show errors, suppressing warnings.
--output -o : Output format. Allowed values: json, jsonc, none, table, tsv, yaml,
yamlc. Default: json.
--query : JMESPath query string. See http://jmespath.org/ for more information
and examples.
--verbose : Increase logging verbosity. Use --debug for full debug logs.
Examples
Given an enclave-id to stop an enclave
qt enclave stop --enclave-id [ENCLAVE-ID]
必选项:--enclave-id,指定需要销毁的QingTian Enclave虚拟机的enclave-id
命令行返回值:成功返回销毁成功,销毁失败无返回。
QingTian Enclave虚拟机销毁命令示例:
[root@localhost ~]# qt enclave stop --enclave-id 1 stop 1 success
qt enclave console
在启动QingTian Enclave时,指定为debug-mode时,用于在父虚拟机中查看QingTian Enclave中的只读控制台输出,命令格式如下:
[root@localhost ~]# qt enclave console -h
Command
qt enclave console : Console an enclave via the enclave-id while debugging.
Arguments
--enclave-id [Required]
Global Arguments
--debug : Increase logging verbosity to show all debug logs.
--help -h : Show this help message and exit.
--only-show-errors : Only show errors, suppressing warnings.
--output -o : Output format. Allowed values: json, jsonc, none, table, tsv, yaml,
yamlc. Default: json.
--query : JMESPath query string. See http://jmespath.org/ for more information
and examples.
--verbose : Increase logging verbosity. Use --debug for full debug logs.
Examples
Given an enclave-id to console an enclave
qt enclave console --enclave-id [ENCLAVE-ID]
必选项:--enclave-id,指定需要获取只读控制台输出的QingTian Enclave虚拟机的enclave-id。
命令行执行成功后,会打印QingTian Enclave虚拟机的只读控制台输出,如下所示:
hello enclave! hello enclave! hello enclave! hello enclave!
您可以使用ctrl+c的方式退出该命令。需要注意的是,在同一时间我们只允许一个qt enclave console命令作用于一个指定的QingTian Enclave实例。