本文介绍如何基于安全增强型实例(Intel® SGX)部署TensorFlow Serving在线推理服务的技术架构和使用流程。
背景信息
TensorFlow Serving是Google开源的机器学习平台TensorFlow生态的一部分,它的功能是将训练好的模型运行起来,提供接口给其他服务调用,以便使用模型进行推理预测。
阿里云ECS部分安全增强型实例基于Intel® SGX(Software Guard Extension)技术,提供了SGX加密计算能力,打造了基于硬件级别的更高安全等级的可信机密环境,保障关键代码和数据的机密性与完整性不受恶意软件的破坏。
将TensorFlow Serving在线推理场景部署在阿里云安全增强型实例可信机密环境中,可以保证数据传输的安全性、数据盘的安全性、数据使用的安全性、以及AI在线推理应用程序的完整性。
本实践为开发者使用阿里云ECS安全增强型(基于Intel® SGX加密技术)实例提供了参考实现,您可以了解以下内容:
对基于SGX加密技术实现的端到端的全数据生命周期安全方案有整体了解。
对于使用TensorFlow Serving的开发者,可直接参照本实践部署和开发脚本。
为使用安全增强型实例的SGX开发者提供可行性参考框架和脚本,您可根据本实践步骤快速了解安全增强型实例以及环境搭建部署流程,轻松上手使用。
技术架构
本实践技术架构如下所示。
本实践涉及三个角色:客户端、vSGX端、远程请求端。
客户端:客户端机器会将训练完的模型以及用来建立安全连接的TLS证书进行加密,并将这些加密文件上传到阿里云SGX环境中。同时,客户端机器还将部署密钥提供服务,主要用来对阿里云vSGX实例进行认证,确保运行在云上的TensorFlow Serving推理服务应用的完整性及云上SGX环境的可行性。验证通过后,会将密钥发送给在阿里云vSGX实例中运行的TensorFlow Serving推理服务。
vSGX端:部署在阿里云,提供SGX机密计算环境,TensorFlow Serving推理服务运行在SGX环境中。当推理服务启动时,会向客户端发送远程认证请求,证明当前SGX环境的可行性和AI推理服务的完整性。验证成功后,推理服务会拿到客户端发送的密钥,并对加密的模型和TLS证书进行解密,至此,运行在SGX环境中的推理服务成功运行,并等待远程访问请求。
远程请求端:第三方使用者通过网络安全传输,将数据发送到运行在SGX机密计算环境中的推理服务。推理完成后,得到返回结果。
说明本实践中,客户端与请求端为同一台ECS实例。
本实践使用到的其他组件如下:
LibOS:Gramine是一款轻量级LibOS,结合Intel® SGX加密保护技术,提供了内核能力定制,运行资源消耗少,具备非常好的ABI兼容性,极大降低了原生应用移植到SGX环境的成本,做到了应用程序不修改或者极少的修改便能运行在SGX环境中。本实践使用Gramine封装TensorFlow Serving推理服务,将推理服务简单便捷地运行在阿里云vSGX实例中。更多信息,请参见Gramine。
AI推理服务:TensorFlow Serving是Google开源的机器学习平台TensorFlow生态的一部分,它的功能是将训练好的模型运行起来,提供接口给其他服务调用,以便使用模型进行推理预测。更多信息,请参见TensorFlow。
Docker容器引擎:为了方便部署推理服务,本实践采用将推理服务运行在Container中的方式,利用Docker的命令方式运行推理服务。
本实践技术架构说明如下:
阿里云自建证书缓存服务PCCS(ProvisioningCertificate Caching Service),该服务完全兼容Intel SGX ECDSA远程证明服务和Intel SGX SDK。如技术架构中①所示,阿里云vSGX实例需要向阿里云PCCS获取PCK(Provisioning Certification Key)证书,Intel SGX会有一个密钥用于Enclave的签名,该密钥对于处理器或者平台是唯一的,密钥的公开部分就是PCK公钥。另外客户端也会向阿里云PCCS获取一些信息,比如TCB信息、Quote Enclave认证的信息、CRL信息等用于对SGX Enclave的认证。
搭建好阿里云vSGX实例后,可以将本地加密的模型文件以及TLS证书通过网络传输放到云盘中备用,如技术架构中②所示。
通过LibOS Gramine启动TensorFlow Serving推理服务时,会加载加密的模型文件,如技术架构中③所示。
Gramine本身集成了远程认证的功能,在识别到有加密文件加载时,会转向配置好的远程IP服务发送认证请求,如技术架构中④所示。本实践在实现时,以一台阿里云实例模拟客户端,同时也作为远程访问端,另一台实例作为SGX环境。
在客户端的密钥提供服务对vSGX实例中的Enclave Quote认证成功后,会将模型加密的密钥发送给Gramine,如技术架构中⑤所示。由于此时Gramine是运行在Enclave中,因此Gramine拿到密钥对模型解密的过程是安全的。
在模型解密后,TensorFlow Serving便可以正常运行,并等待远端的访问请求。为了建立通信安全连接通道,远程访问端有TLS的公钥,在建立连接后,会对TensorFlow Serving中的TLS证书进行校验。如技术架构中⑥所示。
当TensorFlow Serving对远程请求端的数据推理完成后,便会通过建立的安全通道将推理结果返回给请求端,如技术架构中⑦所示。
操作流程
您可以通过域名远端访问TensorFlow Serving推理服务,TensorFlow Serving推理服务部署在阿里云安全增强型实例中,推理服务使用的模型加密存放在云盘中。当实例中SGX可信机密环境初始化时,会向远程服务发起远程认证,认证通过后,远程认证服务会将解密模型的密钥发送给运行在SGX可信环境中TensorFlow Serving推理服务。模型解密后,TensorFlowServing推理服务会结合解密后的模型对用户的请求进行处理,并将推理结果返回给用户。
在安全增强型实例中部署TensorFlow Serving在线推理的流程如下:
客户端与vSGX端可部署于同一台ECS实例上,部署在不同机器上的具体配置略有不同。具体详情,请参见步骤一:部署客户端和步骤二:部署vSGX端。
客户端会将训练完的模型以及用来建立安全连接的TLS证书进行加密,并将这些加密文件上传到阿里云SGX环境中。同时,客户端机器还将部署密钥提供服务,主要用来对阿里云vSGX实例进行认证。
vSGX端提供机密计算环境,用来运行TensorFlow Serving推理服务。推理服务启动时,会向客户端发送远程认证请求,证明当前SGX环境的可行性和AI推理服务的完整性。验证成功后,推理服务会拿到客户端发送的密钥,并对加密的模型和TLS证书进行解密,并等待远程访问请求。
远端会将数据发送到运行在SGX机密计算环境中的推理服务。推理完成后,得到返回结果。