分享热点新闻
打造优质自媒体!

蚂蚁开源库贝特:让机密计算支持大规模k8s集群

9月25日,在上海外滩会议的可信原生技术论坛上,Ant公布了开源的KubeTEE,这是一个云原生的大规模集群机密计算框架,用于解决从开发、部署到运维全过程的相关问题,是云原生环TEE可信执行环境技术独有的

KubeTEE开源地址:

https://github.com/SOFAEnclave/KubeTEE

 背景

2018年,蚂蚁集团开始全面改造云本土结构,在登陆云,本土建筑的过程中,蚂蚁集团的工程团队发现,新技术不仅带来了很多红利,也带来了很多新的挑战。其中,安全性是云原有结构中被忽视的缺点。经过不断的实践和探索,蚂蚁在2020年提出了“信任-原生”的概念,将信任和任性渗透到云原生架构的各个层面,并在云构建了全栈、可靠的计算基础设施来保障业务。

保密计算的概念和可信执行环境(Tee)作为保护应用程序运行安全的技术,也被蚂蚁引入并积极实践,形成了SOFAEnclave保密计算技术堆栈。SOFAEnclave由三个组件组成:

Occlum LibOS:解决业务开发过程中的问题,比如传统的TEE应用开发需要切分重构,依赖SDK特定的编程语言;

超包容:解决TEE部署环境问题,如硬件TEE不普及,软硬件TEE使用一致性等;

KubeTEE:解决TEE集群问题,包括云原生环独有的从开发、部署到运维全过程的相关问题

在2019年的云人居大会上,蚂蚁们首次在法国引入了一些关于技术堆栈机密计算的工作。在过去的一年里,Occlum LibOS一直是开源的,并捐赠给CCC(保密计算联盟)保密计算联盟。CCC机密计算联盟隶属于Linux基金会,由业界众多技术巨头发起,致力于保护计算数据的安全。Occlum捐赠给CCC,这将成为中国在CCC社区发起的第一个开源项目。

KubeTEE的开源是业界首款开源TEE大规模集群整体解决方案。蚂蚁将继续拥抱和回馈开源社区,共同推动行业技术的发展。

 KubeTEE是什么

KubeTEE是一个完整的解决方案,用于在云,本土场景中使用TEE技术,包括多个框架、工具和微服务的集合。顾名思义,KubeTEE结合了Kubernetes和TEE,解决了从单点到容器化集群的可信应用实现中的相关问题。

KubeTEE的目标之一就是提供无服务器的机密计算服务,比如可信FaaS,这样业务方只需要实现业务核心逻辑就可以简单的提交到TEE环境中运行,而不需要重复业务服务开发、部署和运维的整个过程。

KubeTEE架构图:

蚂蚁开源库贝特:让机密计算支持大规模k8s集群 科学快报 第1张

目前,KubeTEE的开源组件包括:

Sgx-device-plugin: Sgx容器插件,允许容器支持SGX特性,由ants和阿里云团队联合开发;

可信功能框架:TFF可信应用开发框架,简化可信功能实现流程,屏蔽SGX相关细节;

飞地配置服务:aecs,基于远程认证的飞地配置服务;

Protobuf-sgx:修改后支持飞地使用的Protobuf协议。

下面描述如何使用KubeTEE的这些组件来开发集群可信应用程序。

  让可信应用开发变得更简单

目前服务器端TEE技术最成熟的代表是英特尔SGX技术,KubeTEE的相关工作也是基于SGX。为了使基于SGX开发的可信应用程序能够运行并继续服务,除了类似于普通业务的普通流程之外,还需要一些与SGX技术相关的额外工作。

在KubeTEE之前,整个可信应用程序的开发过程可能是这样的:

 开发阶段需要做的事情

选择一个合适的开发模式来开发可信的应用程序,比如基于SDK的,一些改进的架构,或者Occlum,LibOS模式。此外,为了保证软件和平台的可信度,开发者还需要实现一些安全相关的流程,比如远程认证和验证。

需要维护可信代码的签名密钥和访问远程认证服务器的认证密钥。

编译并签署受信任的应用程序。如果计划部署到容器环境,则需要制作容器映像。

 部署、运行和维护阶段需要做的事情

获取支持TEE功能的机器,并安装配置TEE运行时所依赖的相关组件。

确保网络环境在运行时正常,例如访问远程认证服务器。

合理高效地分配物理服务器资源,支持CI、测试和生产需求。

发布和运营可信的应用服务,包括容量扩展和缩减。

从完整的软件工程来看,让每个业务开发团队重复这些繁琐的工程工作,无疑是非常低效的。KubeTEE的目标是通过云本土手段简化上述流程,帮助业务方更简单流畅地实现基于TEE的可信应用和服务,包括可信应用开发支持、基础设施支持和微服务辅助支持。

 可信应用开发支持

一般来说,KubeTEE支持以下可信应用的开发流程:基于开发框架的应用开发——应用自动签名服务——基于基本图像和模板工具的容器打包上传。

蚂蚁开源库贝特:让机密计算支持大规模k8s集群 科学快报 第2张

为了满足不同应用场景的开发需求,KubeTEE开发了一个基于Occlum LibOS的TFF可信应用开发框架。

其中,Occlum LibOS主要适用于一些不想被修改而迁移到TEE保护的老应用,或者一些基于不适合切分,的大型框架的应用或者c以外的其他编程语言开发的应用,TFF框架主要适用于需要严格控制飞地内部代码的性能和安全性的轻量级应用场景, 所以它放弃了与复杂应用程序的兼容性(Occlum LibOS可以更好的支持),思路是让TEE原生SDK支持的分区编程模型更稳定,更易于使用。

TFF使用protobuf消息简化了可信和不可信部分的接口函数定义的复杂性,封装了TEE技术的底层细节和流程,让用户只需要关心可信函数的实现和调用逻辑,就可以快速实现可信应用。

蚂蚁开源库贝特:让机密计算支持大规模k8s集群 科学快报 第3张

由于protobuf消息也用于封装数据,所以使用TFF框架开发基于gRPC的微服务更容易。此外,TFF还为容器提供基本的容器映像和dockerfile文件模板,以帮助用户快速创建可信的应用程序容器映像。

 基础设施支持

应用开发就绪后,需要部署在硬件集群环境中。在基础设施方面,KubeTEE基于Kubernetes,使用云本地方式管理和使用SGX物理机,统一SGX主机环境,抽象成容器逻辑资源库,提供统一可信的应用部署服务,使TEE硬件基础设施成为可以按需使用的集群资源。

蚂蚁开源库贝特:让机密计算支持大规模k8s集群 科学快报 第4张

KubeTEE的开源sgx-device-plugin使服务容器在启动时自动获得TEE特性支持,方便集群管理和TEE资源的分配。从工程实践的角度来看,集群可以隔离CI、测试、预发布和生产环境,以满足TEE基础设施在不同业务阶段的需求。

 微服务辅助支持

在TEE集群中部署业务后,会有远程认证、业务密钥部署和共享、网络代理等一些通用需求。以及操作和维护系统要求,如日志记录、监控、自我修复和容量扩展。KubeTEE提供了一些辅助性的微观服务,以帮助方节省商业重复发展的人力和时间成本

蚂蚁开源库贝特:让机密计算支持大规模k8s集群 科学快报 第5张

其中,KubeTEE的开源AECS(基于证明的飞地配置服务)方案是为了解决可信应用的多个实例之间的密钥安全共享问题,实现无状态服务。AECS主要提供密钥生成、导入、存储、管理和分发、远程认证报告代理获取等基本功能。将来,可能会扩展更通用的配置管理功能,如证书生成和分发。同时,AECS支持多种秘密格式和自定义的秘密访问策略,并支持多种服务之间的密钥隔离管理。

蚂蚁开源库贝特:让机密计算支持大规模k8s集群 科学快报 第6张

 未来展望

目前KubeTEE可以在很大程度上帮助业务方降低TEE的开发复杂度,但是任中还有很长的路要走。在下一阶段,KubeTEE将更加注重云原生场景和机密计算的结合,不断贡献更多的组件和通用服务,使TEE的使用更高效、更简单、更云原生。

最后,我们真诚地希望库比特能够与业界携手,在云建立一个更加完整的安全计算生态系统

评论 抢沙发

3 + 8 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址