《云原生机密计算最佳实践白皮书》——07解决方案——Intel Confidential Computing Zoo: Intel机密计算开源解决方案——部署TensorFlow Serving在线推理服务(1) https://developer.aliyun.com/article/1230820?groupCode=aliyun_linux
步骤一:部署客户端
本实践运行的环境信息参考:
• 规格:加密内存≥8G
• 镜像: Ubuntu20.04
• 公网IP
• 安装SGX软件栈
1、环境配置
安装所需的mesa-libGL软件包。
sudo pip3 install --upgrade pip sudo pip install multidict sudo yum install mesa-libGL
2、下载软件包
下载本实践所用的TensorFlow Serving脚本代码并安装所需的argparse、aiohttp、tensorflflow等软件包。
git clone https://github.com/intel/confifidential-computing-zoo.git cd confifidential-computing-zoo/cczoo/tensorflflow-serving-cluster/ tensorflflow-serving/docker /client/ pip3 install -r ./requirements.txt
3、下载模型
./download_model.sh
下载训练好的模型文件将会存放在创建的 models/resnet50-v15-fp32 目录下。
4、模型格式转换
为了兼容TensorFlow Serving,需要对训练好的模型文件进行格式转换。
python3 ./model_graph_to_saved_model.py --import_path `pwd -P`/models/res net50-v15-fp32/resnet50-v15-fp32.pb --export_dir `pwd -P`/models/resnet50-v15-fp32 --model_version 1 --inputs input --outputs predict
转换好的模型文件将会存放在models/resnet50-v15-fp32/1/saved_model.pb。
5、创建gRPC TLS证书
本实践选择 gRPC TLS 建立客户端和TensorFlow Serving之间的通信连接,并设置 TensorFlow Serving域名来创建单向 TLS Keys 和证书,用来建立安全通信通道。该脚本将会创建 ssl_confifigure 文件夹,里面包含server和client相应的证书。
service_domain_name=grpc.tf-serving.service.com client_domain_name=client.tf-serving.service.com ./generate_twoway_ssl_confifig.sh ${service_domain_name} ${client_domain_name}
6、创建加密模型
mkdir plaintext/ mv models/resnet50-v15-fp32/1/saved_model.pb plaintext/ LD_LIBRARY_PATH=./libs ./gramine-sgx-pf-crypt encrypt -w fifiles/wrap-key -i plaintext/saved_ model.pb -o models/resnet50-v15-fp32/1/saved_model.pb
7、启动密钥验证服务。
本实践使用Gramine提供的secret_prov_server_dcap作为远端SGX Enclave Quote认证服务,底层依赖调用SGX DCAP提供的Quote相关的认证库,该认证服务会向阿里云PCCS获取Quote认证相关的数据,比如TCB相
关信息以及CRL信息等。
SGX Enclave Quote验证成功后,会将当前目录下存放的密钥fifiles/wrap-key发送到远端应用。这里远端应用为vSGX环境中的Gramine,Gramine拿到wrap-key中的密钥后,便会对加密的模型和TLS配置文件进行解密。
• a. 切换到secrec_prov_server目录
./download_model.sh
• b. 使用密钥验证服务镜像
I) 下载密钥验证服务镜像
sudo docker pull intelcczoo/tensorflflow_serving:anolis_secret_prov_server_latest
II) 根据脚本编译镜像
sudo ./build_secret_prov_image.sh
• c. 获取secret_prov_server镜像ID
sudo docker images
• d. 启动密钥验证服务
sudo ./run_secret_prov.sh -i secret_prov_image_id -a pccs.service.com:ip_addr
服务启动后便会在后台运行等待远程认证访问。当接收到远端认证后,认证通过会将密钥发送回远端。
• e. 查看secret_prov_server容器IP地址
sudo docker ps -a #查看secret_prov_server镜像ID sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <secret_prov_ server_container_id> #<secret_prov_server_container_id>需修改为实际的secret_prov_container_id
《云原生机密计算最佳实践白皮书》——07解决方案——Intel Confidential Computing Zoo: Intel机密计算开源解决方案——部署TensorFlow Serving在线推理服务(3) https://developer.aliyun.com/article/1230817?groupCode=aliyun_linux