默认情况,只有root用户可以直接配置TEE侧的cgroup资源,为使其他具有创建容器权限的用户也拥有该权限,可通过如下步骤将其他用户加入到白名单中。若无此需求可跳过本节。
1
|
id test |
可知test用户的用户id为1000。
1
|
vim uid.txt
|
将需要TEE cgroup配置权限的用户id填写到该文件中,每个用户一行。
1
|
1000
|
1 2 3 4 5 6 |
pip3 install pycryptodome defusedxml git clone https://gitee.com/openeuler/itrustee_sdk.git cd itrustee_sdk/build/pack-App/ mkdir whitelist cp uid.txt whitelist |
将TA证书ta_cert.der和私钥private_key.pem拷贝到pack_tools目录下,TA证书的申请可参考调测环境TA应用开发者证书申请。然后执行如下命令完成对whitelist目录的打包,生成.sec文件。
1
|
python3 pack.py whitelist |
1
|
tee_teleport -s whitelist.sec -t cfg |
1
|
tlogcat |
为了更好地对TEE侧的资源就行管理和管理,TEE支持通过cgroup配置机密容器在TEE侧的内存和cpu等资源。
1 2 |
git clone https://gitee.com/openeuler/itrustee_sdk.git cd itrustee_sdk/build/tools/docker_config_tools |
1
|
cp start.sh stop.sh prestart_container.sh poststop_container.sh /var/lib/docker/hooks |
1
|
python3 gen_config.py <config_dir> --memory=200M --cpus=10000 --cpuset-cpus="0,1" --disk-size=300M |
config_dir需为绝对路径,将在config_dir目录下生成符合hook机制的config.json文件,用于指定REE容器生成和销毁时执行的额外操作,
TEE侧支持的cgroup配置项:
1
|
tee_teleport --config-resource --nsid=$(lsns -t pid | grep systemd | awk '{print $1}') |
1
|
docker run --hook-spec=<config_dir>/config.json -it --mount type=bind,source=/var/itrustee/teecd,target=/var/itrustee/teecd,readonly --device /dev/teelog:/dev/teelog:wr --device /dev/tc_ns_cvm:/dev/tc_ns_cvm:wr -d <docker_image> |
cgroup特性默认会在CCOS升级成功后自动使能。如果用户不配置机密容器在TEE侧的内存和CPU等资源,则意味着对相应group在TEE侧使用的资源不做限制。资源配置的参数都是可选的。