---
title: TEE cgroup支持
description: "默认情况，只有root用户可以直接配置TEE侧的cgroup资源，为使其他具有创建容器权限的用户也拥有该权限，可通过如下步骤将其他用户加入到白名单中。若无此需求可跳过本节。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2400/confidt/kunpengtrustzone_20_0064.html
sourcePath: /source/zh/kunpengboostkithistory/2400/confidt/kunpengtrustzone_20_0064.html
indexId: 5b3058408b4af48e6be499c90e1bf9fad9cfc2c4b930ff3995f829702657e9db76
---
# TEE cgroup支持

#### （可选）cgroup配置白名单支持

默认情况，只有root用户可以直接配置TEE侧的cgroup资源，为使其他具有创建容器权限的用户也拥有该权限，可通过如下步骤将其他用户加入到白名单中。若无此需求可跳过本节。

1. 获取需要加入白名单的用户id。
  1 id test

  可知test用户的用户id为1000。

2. 创建白名单文件uid.txt，文件必须为此名。
  1 vim uid.txt

  将需要TEE cgroup配置权限的用户id填写到该文件中，每个用户一行。

  1 1000

3. 将uid.txt打包为sec文件，证书需使用包含manager_type的特殊TA证书。
  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

4. 通过tee_teleport工具导入配置。
  1 tee_teleport -s whitelist.sec -t cfg

5. 执行tlogcat可查看到配置成功信息。
  1 tlogcat


#### 机密容器cgroup配置支持

为了更好地对TEE侧的资源进行管理和管理，TEE支持通过cgroup配置机密容器在TEE侧的内存和cpu等资源。

1. 从itrustee_sdk(https://gitee.com/openeuler/itrustee_sdk/tree/master/)下载REE侧docker hook工具包，用以在容器启动时，通过hook配置容器在TEE侧的资源。
  1 2 git clone https://gitee.com/openeuler/itrustee_sdk.git cd itrustee_sdk/build/tools/docker_config_tools

2. 将hook脚本拷贝到“/var/lib/docker/hooks”目录下，这些脚本分别用于容器在启动和销毁时，自动完成TEE侧资源的配置和释放。
  1 cp start.sh stop.sh prestart_container.sh poststop_container.sh /var/lib/docker/hooks

3. 使用脚本生成容器TEE侧cgroup资源配置文件，
  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配置项： --memory：TEE侧对应的group中所有TA可以使用的内存上限。 --cpus：TEE侧对应的group中所有TA可以使用的CPU使用率上限， --cpuset-cpus：TEE侧对应group中所有TA可以使用的CPU编号。 可通过如下方法查询TEE侧在线的CPU编号： 1 tee_teleport --config-resource --nsid=$(lsns -t pid | grep systemd | awk '{print $1}') --disk-size：TEE侧对应group中，所有TA可以使用的文件系统大小上限，因为TEE里的文件系统使用的是tmpfs，往TEE部署和产生的文件会被统计到内存和文件系统配额中。

4. 启动容器。此时启动的容器在TEE侧就自动完成了cgroup资源的配置。
  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>

5. 容器销毁，docker rm或stop时可自动完成TEE侧对应资源的释放。

cgroup特性默认会在CCOS升级成功后自动使能。如果用户不配置机密容器在TEE侧的内存和CPU等资源，则意味着对相应的group在TEE侧使用的资源不做限制。资源配置的参数都是可选的。
