潜心打磨,主动求变——这群技术排头兵,如何做好底层开发这件事?

ad9d332e4c956bdd555b68e4bda8ae63.png

SOFAStack 产品布局

根据设想,蚂蚁的下代技术架构或将以 Mesh 化为核心,因此可信原生团队希望将原来所有的中间件能力都重新打磨。SOFAStack 也早已开始积极拥抱和布局 Mesh。比如,由于 Service Mesh 由控制面和数据面组成,因此蚂蚁分别进行了两个开源项目 SOFAMesh 与 SOFAMosn 的研发。

SOFAMesh 是 Service Mesh 的控制平面,由 Istio 分叉而来,并根据内部需要做了功能补充、优化和改进。不过,在回溯贡献给 Istio 后,宋顺表示该项目会回归社区,未来不再单独维护。

MOSN 则是一个用 Golang 写的数据平面。根据计划,MOSN 担负起承载所有网络中间件能力的责任,这是一个需多部门参与、时间跨度很长的大项目。但由于已有的 Istio 是 C++ 写的,蚂蚁内部需要花费更多的人力物力去做研发,最终决定基于 Golang 做了 MOSN。

“技术越底层,面对的事情就越复杂,我们做任何事情也会越难。”宋顺说,“比如,如果要进行整体的 Mesh 升级,蚂蚁面对的是数十万核机器的改造,这对团队来说并没有多少经验可以借鉴。当没有可参考的东西时,只能用新的方式解决。”但宋顺也表示,创新需要周期,落地过程也会相对缓慢,尤其是对于应用规模较大的企业。

在蚂蚁内部,技术概念并不决定着其是否会被采用。这体现在了蚂蚁对引入 Serverless 的谨慎态度上。

“Serverless 概念很大、也很好,但怎么能让它在这个体系下发挥作用、产生真正的价值,是需要探索的,而不只是说有了一个新技术、新概念就要直接用了。”

在宋顺看来,Service Mesh 解决的更多是基础设施和业务研发解耦问题,这比较容易普及。而 Serverless 不只是一种技术。“团队希望 Serverless 能带来整个研发流程、研发模式的改变,以此提高研发效率,但这个耗时是非常长的。”

目前,经过两年多时间的打磨,蚂蚁的 Serverless 产品已经完成了第一阶段的落地和推广。SOFAServerless 在内部接入了 700 多个 Java、nodejs 应用,基本涵盖了蚂蚁所有业务线,支撑了 1 万多次完整的生产研发迭代。

随着业务更加多样,不同业务可能分布在不同的云上。但不同业务的合规要求不同,相互之间还需要既独立、又互通。这种形势下,如何做好架构支持,是摆在蚂蚁面前的重要挑战。

为此,宋顺表示,目前团队在研发一套名为“云间件”的产品,旨在屏蔽业务和云之间的细节,用户只需要做好开发,而无需关注是否在不同的云上。

PART. 2

安全容器的进化

云原生体系里,容器为软件系统提供了基础的运行时环境,目前已经成为实际上的应用交付标准。

2014 年左右是容器技术的鼎盛时期,但由于隔离性差等原因,安全一直是悬在开发者头上的一把达摩克利斯之剑。StackRox 今年初的报告显示,55% 的受访者出于安全考虑,推迟了将 K8s 应用程序部署到生产环境中。

2015 年时,音速神童抓住了容器和云的风口,开源了基于虚拟化技术的容器引擎 runV。2017 年 12 月,在与英特尔的 Clear Containers 合并后,意在统一虚拟机(VM)安全优势与容器速度和可管理性的 Kata Containers 诞生。

2019 年,音速神童的创始人赵鹏、王旭加入蚂蚁,扩充了其在基础设施领域里的人才版图。至今,Kata 已经做了两次重大演进,现在到了 Kata 3.0 版本的紧张研发时刻。根据王旭的介绍,Kata 3.0 主要有以下三个方面的改进:

1.更多 Rust 的实现。Kata 之前用 GoLang,在改用 Rust 实现 agent 后,占用内存从 11 MB 下降到约 1 MB。Kata 希望未来所有组件都可以统一用 Rust 来编写,届时 Kata 的运行时环境会从原来的两个进程会统一成 Rust Kata Runtime,运维、内存开销等得到极大精简。

2.引入镜像加速功能。容器里的分层存储在删除文件时会造成文件冗余,另外容器重启时也会造成很多浪费。所以,Kata 3.0 引入了容器镜像加速项目 Nydus。

3.机密计算等的支持。实际工作中,许多用户也会不信任容器提供商,不希望自己容器里的内容被容器提供商窥探到。因此,Kata 3.0 引入了机密计算。

“3.0 版本里有些东西是确定可以加进去的,有些东西只是有可能,也可能会等到 3.1 版本来完全实现。”王旭说。据悉,Kata 3.0 将在今年底发布。

在王旭看来,一个相对中立的开源社区会对正确性方面有一些小洁癖,不能为了赶快上线而在质量上妥协。

“我印象里,当年 8 月初做的第一个版本,一直到 10 月末才最终合并进去。当时的架构委员会给开发人员做了很多工作,希望先保证核心功能的正确性,不足的地方可以放到后面版本修补,尽量不要将时间线拉长,影响其他开发。尽管如此,大家还是在核心质量方面没有松口。”

Kata 的技术演进路线主要由开源社区、上游社区反馈和其他参与方共同完成,所有开发也会在开源社区同步。

PART. 3

开源这件事儿

无论 SOFAStack 还是 Kata ,都选择了开源,实际上,蚂蚁的项目越来越多地在相对成熟后选择开源。

开源产品更容易获得开发者的信任,且借助开源社区的力量,激发创新,产品可以获得原来设计方向之外的新场景,丰富产品功能。另外,社区化的运作方式会给产品更好的协作和管理机制,不容易被单一场景、单一用户和单一贡献方所影响。

“很大程度上,开源软件比很多互联网公司内部的产品,有更好的规范性和更好的运作流程,因为社区化的开源软件对整个产品的正确性有更高的要求。”王旭表示。

而在宋顺看来,技术要变成产品,就需要跟整个开源体系做好融合。宋顺团队一直提倡技术产品化、产品商业化,闭门造车既无法融入生态,也无法享受到生态红利。“通过开源跟开发者沟通、与其他社区协作,可以使整个产品体系融入开源生态,保证路不会走偏。”宋顺说道。

商业化角度考虑的另一点是,企业使用产品时总是希望自己的研发能更快上手,而产品开源能够帮助行业新人、甚至在校生更好地学习技术,也是人才储备的另一种方式。软件开源,对安全也提出了更高的要求。目前最受关注的就是软件自身的安全问题和供应链安全问题。

在王旭看来,很多开源代码带来的漏洞,实际上是不完善的流程导致的。因此,运作良好的开源社区要有完善的安全响应机制或团队,来处理安全事件。

“质量再好的软件也难免有漏洞,但是出现漏洞之后怎么处理、有没有相关流程,这是不同项目间的一个本质区别。目前我们在做关于开源软件的探讨时,都会特别提到安全问题,这是不可忽视、且必须严肃处理的。”

实际上,开源软件的安全需要社区协作处理。发现问题后,开发者可以联系上游厂商或开源社区,触发相应的安全响应流程。

另一种更复杂的问题就是开源供应链安全。

无论开源还是闭源,大公司都会考虑供应链安全。不同的是,很多开源软件的版权持有方不是一个公司或者一个法律实体,而是个人作者,这对开源软件的重新再分发会造成很多限制。这也使得企业经常面临某个开源软件的部分版权不是自己的,不能随意关掉或改变许可、使用的某个开源软件一旦更改许可证,那之后的版本也将无法使用等问题。

因此,企业开发者都希望能得到源码,不过度依赖厂商。王旭认为,安全的开源供应链体现在开源项目对社区有较强的管理能力、可以做到自主可控,并对版权有较强的维护能力等。

PART. 4

隐私安全怎么做/strong>

尽管越来越多的企业选择了上云,但由于担心数据被看见或丢失,企业对于重要、敏感的应用还是选择本地运行。另外,多个数据方(通常为竞争关系)越来越多地将数据汇集到云上进行人工智能训练等,但都不想自己的数据被其中一方拿去。因此,隐私增强技术越来越被重视。

在众多的隐私增强技术中,蚂蚁在基础设施侧选择了兼顾通用和高效、能单独使用也能跟其他技术有机结合的可信执行环境(TEE)技术。

TEE 提供了一个由硬件支持的、可以被远程证明真实性和完整性的“黑盒子”。这种软硬结合的方式可以对上层应用进行安全加固、对数据流通业务性能进行加速,同时将上层应用软件、业务和硬件结合,形成软硬件产品。

但由于 TEE 中缺乏像 Linux 这样的“操作系统”,一些流行的 AI 训练框架、数据处理框架等很难在“黑盒子”里跑。所以,可信执行环境在生产中并不好用。如果使用 TEE,企业需要做大量的改造,甚至很多应用连改造也无法完成,这导致 TEE 无法大规模使用。

蚂蚁要想更好地构建自己的隐私保护能力,就需要攻克这一难题。2016 年,闫守孟就开始思考如何提高 TEE 软件的开发效率。2019 年,闫守孟加入蚂蚁后创立了机密计算团队,并发起了 Occlum TEE OS 项目,致力于大幅提高 TEE 的易用性和安全性。2020 年,机密计算团队发表了被机密计算业界和学术界广泛认可的论文《Occlum: Secure and Efficient Multitasking Inside a Single Enclave of Intel SGX》。

“最开始没有投入太多的资源,后面逐渐有了一些东西后,大家觉得还可以后才加大投入。”这篇论文就是重要的阶段性成果。

Occlum 使用了安全性较高的 Rust 编写,支持多种文件系统,并提供了类 Linux 的开发体验和类 Docker 使用体验。2020 年,蚂蚁将 Occlum 开源,Occlum 同年即成为 CCC 机密计算联盟中第一个由中国公司发起的开源项目。目前它已在蚂蚁大规模部署,并为微软 Azure Cloud、阿里云、众多开源项目、隐私计算公司采用。

PART. 5

进入产品化阶段

“对 Occlum 来说,论文发表之前可以称为探索阶段。论文的发布意味着探索有了初步的成果,之后我们便开始结合业务做产品化了,到今天跟云原生研发流程有了很好的结合”闫守孟说。

当时,复杂多样的 Enclave 硬件平台带来很大的学习和使用负担,蚂蚁希望有统一的 Enclave 抽象,并支持更加自主的远程证明控制。这就是蚂蚁结合虚拟化技术和 TPM 技术的自主 TEE 平台 HyperEnclave 的由来。

不过,HyperEnclave 项目的风险要比 Occlum 更大。“Occlum 所基于的 SGX 技术,我之前在英特尔是有多年的积累的。但这个项目是全新的,而且用到的虚拟化和 TPM 技术并不是我原来最擅长的部分。关键是我们国家在底层技术上的人才储备是不足的,市场上相关人才非常少,不好招 ”,闫守孟回忆道,“幸好,对底层有兴趣,比如有志做中国的操作系统的人还是有的,我们就招非科班出身、但有情怀的工程师,然后边做边学、边学边做。”

基础技术的投入比较大,但生效周期又很长,有人等不到就会离开。“三年来,遇到不少技术和非技术的挑战和波折,不少人没能坚持下来,选择了退出项目甚至离开公司。HyperEnclave 项目多数时间只有 3 个人,从开始到现在竟然有 4 个人中途退出。” 闫守孟感叹道。

19 年下半年,闫守孟判断自主可控将变得越来越重要。实际上到了 20 年左右,企业们都在加紧投入做自主可控,HyperEnclave 的价值突然变得很大,也是这个预判让 HyperEnclave 项目的主要人员坚持了下来。他们将 HyperEnclave 的信任根托管到像中国金融认证中心(CFCA)这样的国家信息安全基础设施,更进一步增加了权威性和自主性。

目前,HyperEnclave 作为可适配国产 CPU 且兼容 SGX 生态的自主通用 TEE 系统,已经在蚂蚁内部和外部客户的关键场景实际部署。三年技术成果凝聚成的学术论文也于近日收到了系统领域顶会 USENIX ATC’22 的录用通知。“今天,坚持下来的同学们,都成为了虚拟化技术、可信计算技术、机密计算技术领域的顶级专家。他们耐住了无人区独行的寂寞,顶住了短期利益的诱惑,终于守得云开见月明!” 闫守孟非常感慨。

Occlum 和 HyperEnclave 针对的是单个计算节点,但是云原生领域有很多基于 Kubernetes 的大规模集群,并且这些环境也不适用于机密计算。闫守孟团队开始了将 Kubernetes 和 TEE 结合起来的 KubeTEE 项目。KubeTEE 可以让用户进行大规模集群远程证明服务而无需关心 TEE 细节,集群密钥分发和同步服务让 TEE 也支持分布式计算。

Occlum 让单节点 TEE 更容易使用,KubeTEE 则从单节点扩展到多节点和集群,HyperEnclave 则提供了自主通用 TEE 平台,三个项目结合在一起形成了蚂蚁开源的 SOFAEnclaves 技术栈,解决了机密计算目前实际应用中的三大难题。

目前,蚂蚁将上层应用软件与业务结合,还形成了一系列的软硬件一体化产品。“将软硬件产品通过系统层面深度性能调优,并经过最优的兼容性对接匹配测试,形成一套可以直接部署的完整解决方案。这样我们交付给客户的是基本上上电即用,无需额外的部署 、调优 、兼容性测试等的一套完整产品,使得客户部署和运维均非常容易,让客户可以更加专注到业务本身上面来。”蚂蚁集团高级技术专家孔金灿介绍道。

“我们非常希望能够打造一个默认可信、安全的基础设施。但是可信安全体系的根基一定是硬件。所以我们在几年前就开始面向数据中心、边缘计算与 IoT 的软硬件产品研发。包括芯片、板卡、服务器、一体机等诸多产品。为可信原生夯实根基。”

孔金灿表示,在可信原生的技术体系里面,软硬件结合主要解决三个方面问题。

一是安全加固,比如我们做了 Blade 可信根芯片与密码芯片,将可信启动、可信度量、密钥保护等进行了硬件封装,并取得了足够的密评资质。

二是性能加速,比如我们的密码卡与隐私计算加速卡,对频繁使用的密码算法进行硬件加速,能够有效提升应用的性能,并且进而降低大规模实施可信原生技术体系所需要付出的成本。我们通过软硬件结合的方法,利用 FPGA、ASIC 芯片,加速了国密算法、同态加密、隐私求交等非常耗时的计算。

三是能够形成很好的软硬结合的产品,帮助到业务在用户侧的落地。我们采用软硬件结合的手段,研发了可信原生软硬件底座,内置了可信原生团队自研的硬件与软件产品,可以将我们的可信原生技术整体输出。基于此,我们再结合蚂蚁业务应用,先后推出了摩斯隐私计算一体机、区块链一体机、OceanBase 数据库一体机等产品,取得了很好的市场反馈。

目前蚂蚁已经形成了包括底层可信软件栈和可信硬件部件等一套完善的可信安全软硬件底座,具体内容可以参考见下图:

66885ce31cff6809d3cd601500b6b17d.png

MOSN 社区|Go 原生插件使用问题全解析

34b136c1396bc7bd6abcb3f2821e312e.png

SOFARegistry 源码|数据同步模块解析

efb01f9d0e1cfab4c769e5738adc4e8e.jpeg

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8582 人正在系统学习中

来源:SOFAStack

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年6月24日
下一篇 2022年6月24日

相关推荐