安全容器:开启云原生沙箱技术的未来-阿里云开发者社区

开发者社区> 阿里巴巴云原生> 正文

安全容器:开启云原生沙箱技术的未来

简介: 本文中,蚂蚁金服和阿里云的容器开发者们会共同向大家介绍安全容器的前世今生、它们在 双11 中的应用、以及未来的发展方向。

本文节选自《不一样的 双11 技术:阿里巴巴经济体云原生实践》一书

作者:
王旭,花名循环,蚂蚁金服资深技术专家
刘奖,阿里云基础软件部资深技术专家
秦承刚,花名承刚,蚂蚁金服资深技术专家

前不久,我们的同事艾竞说“安全所带来的信任,是一种无形的产品,支撑着所有金融业务”,我深以为然,作为蚂蚁金服的基础设施部门,我们既要努力推进基础设施云原生化,也要保证全链路的安全,而安全容器,就是整个安全链路中最终“落地”的一环。无独有偶,基础设施云服务,作为云原生应用的发源地,也在和云原生应用的互动中前行,安全容器沙箱作为云服务的演化方向之一也在扮演日益重要的角色。本文中,蚂蚁金服和阿里云的容器开发者们会共同向大家介绍安全容器的前世今生、它们在 双11 中的应用、以及未来的发展方向。

容器与安全容器

如果把一套云原生的系统想成一个有机体,那么,容器无疑就是其中的细胞,它们每个都是个独立的个体,又协同工作,它们生生不息让整个生命体健康运转。每个细胞都有它自己的隔离系统,正如容器,它的名字(Container, Jail, Zone...)天生就带着隔离的味道,但是,容器的安全性究竟够不够呢?年初 Tripwire 的一份调查揭示了人们对容器安全的种种担心【1】:

  • 42% 的受访者因为安全顾虑推迟或限制了容器化进程;
  • 58% 的在生产环境中使用容器的受访者承认它们的容器中存在安全缺陷,另外还有 13% 的人觉得自己的容器有安全问题,但不确定,而非常决绝地表示自己的容器非常安全的比例只有 7%。

面对这样的威胁,目前可用的容器层的解决方案就是 Linus Torvalds 在 2015 年北美 LinuxCon/ContainerCon 上所说的——“安全问题的唯一正解在于允许那些(导致安全问题的)Bug 发生,但通过额外的隔离层来阻挡住它们。” 这也就是当今的安全容器技术的基本原理。(注:Linus 所说的思路是安全容器的思路,但安全容器不是从这里开始的,事实上,主流开源安全容器项目 Kata Containers 【2】的两个前身——runV 和 Clear Containers 都是在 Linus 上述访谈之前三个月开源的)。

隔离性不仅是安全

Kata Containers 在官方网站上展示的格言就是——

The speed of containers, the security of VMs

而且,这类技术最广为接受的名字也是“安全容器”。然而,隔离性所带来的好处远不止安全性这一点,在阿里巴巴和蚂蚁金服的大规模实践中,它至少还意味着四个方面的优势:

  • 分层内核可以改善节点调度效率,容器的进程在自己的内核上被调度,对于主机来说,就只是一个进程,这在节点上运行着大量容器的时候,对节点的调度效率和稳定性都有极大的帮助;
  • 良好的封装可以降低运维的压力,如果可以把应用进程乃至数据全部放入安全容器中,不对主机展示,那么对于主机的运维来说,将变得更加简单;
  • 有利于系统的 QoS 保障计费系统的准确工作,如果所有用户的相关的计算和数据流量都放在一个完全封装的安全容器的中,那么,对于主机管理网的 QoS 保障、对用户的 SLA 保障、对用户的计费都将是可操作且集中的;
  • 有利于保障用户的数据隐私,普通容器的情况下,容器的文件系统数据和进程数据是完全暴露给主机的,对于云服务场景,这就要求用户授权服务方来访问用户数据,否则无异于掩耳盗铃,但如果可以通过安全容器的沙箱把这些都放在容器中,那么对于用户的授权要求也就可以最小化了。

显而易见,云原生基础设施确实是需要更好的隔离技术的,安全容器是大有可为的。

Kata Containers 与阿里云安全沙箱

上面已经提到,目前主流的开源安全容器项目是 Kata Containers,核心是用虚拟化技术来作为容器(确切地说是 Kubernetes Pod)的沙箱,从而提供虚拟机级别的隔离性,这个安全级别是在过去多年以来的云服务中被广泛接受的。该项目在两年前的 2017 年 12 月,由 runV 和 Intel 的 Clear Containers 项目合并而成,本文作者之一王旭就是 runV 项目的发起者,也是 Kata Containers 的创立者之一。

在过去两年中,Kata Containers 在保证了对标准容器镜像的兼容性和对 Kubernetes 生态的兼容性的同时,不断致力于与相关社区一起,降低沙箱技术的开销,提升安全容器技术的弹性。引入/支持/推动了 containerd shim-v2 API【3】,Kubernetes RuntimeClass,Rust-VMM,等来降低开销、减少间接层、改善集成 Kubernetes 效果。

在阿里巴巴和蚂蚁金服内部,基于 Kata Containers 等安全沙箱技术也被应用在内部不同应用等混合部署、阿里云 Serverless 服务等场景,支持着各种业务。

gVisor 与进程级虚拟化

Google 在 2018 年发布了基于进程级虚拟化技术的沙箱产品“gVisor”。gVisor 很轻薄,利用了基本的硬件虚拟化技术提供进程级别的抽象,无需 VMM 支撑。gVisor 的运行就像 Linux 进程一样,拉起速度快,对内存等资源的占用也较小。蚂蚁金服在 gVisor 开源之后不久,就开始投入开发。目前已经是 gVisor 社区中,Google 以外的最大贡献者。同时,蚂蚁针对自己的业务场景进行了大量的定制优化。现在已经成功将其应用于生产环境,进行了初步的生产验证。

gVisor 是安全容器技术,更是全新的操作系统。它实现了一个用 Go 语言写的“安全内核”。这个内核实现了 Linux Kernel 的绝大部分功能。由于 Go 语言在内存安全与类型安全上的优势,gVisor 的“安全内核”被视为一道重要的防御纵深。我们在开发中会 review 每一行代码的“安全性”。为了进一步加强安全,蚂蚁搭建了一套 fuzz 测试系统,一刻不停的测试。为了弥补 Go 语言在性能上的不足,蚂蚁重构了网络协议栈,在获取安全的同时,也大幅提升了性能。

面向云原生,gVisor 的最大优势是“资源可伸缩”。它不会预留 CPU 与内存资源,跟普通的 Linux 进程并无太大差异。在 gVisor 容器中,不用的资源会立刻还给宿主机。我们在尝试基于 gVisor 的进程级虚拟化技术,打破传统容器的资源边界。在 Serverless 等场景下,实现超高密度的容器部署。

未来:从安全容器到云原生沙箱

就目前来看,虽然云原生应用期待沙箱有更好的隔离性,但目前的沙箱技术尚有一些需求没有完全满足,所以,我们在规划 2.0 乃至未来的 Kata 的时候,就将演进方向定为:

  • 在保持沙箱边界清晰的同时,可以跨沙箱共享一部分资源,极致降低开销;
  • 更加按需、弹性、即时地根据应用的需求来提供资源,而不是硬性地切分;
  • 让用户空间工具、沙箱、容器应用的内核联合为应用提供服务,因为应用的服务边界是内核 ABI 而不是模拟的硬件。

可以看到,这也喻示着两类安全容器技术实际上是彼此靠近的,虚拟化容器也与传统虚机渐行渐远,发展成为”云原生虚拟化“。蚂蚁金服和阿里云的正在这些方面共同合作,其中的部分工作已经展开,并在推动社区。

开源:从社区来,到社区去

目前,蚂蚁金服和阿里巴巴的安全容器技术都是基于开源社区而开发的,重要的开源社区包括 Kata Containers, gVisor 和 RustVMM。我们已经将一些成果推向社区,并在持续贡献。并且,秉承开放设计、开放开发的理念,我们也在将自己实践中的经验和问题,总结成为对未来的需求,不仅是对社区的修补和改进,更在推动社区在的设计理念、架构、协议方面前进。

未来正在到来,不论是加入社区做贡献还是直接加入我们,都非常欢迎。

参考链接

【1】 The New Stack: Security Worries Rise as Container Adoption Increases, 2019-01
【2】 Kata Containers, https://katacontainers.io
【3】 Containerd Runtime V2 (shim-v2) API
ban.jpg

本书亮点

  • 双11 超大规模 K8s 集群实践中,遇到的问题及解决方法详述
  • 云原生化最佳组合:Kubernetes+容器+神龙,实现核心系统 100% 上云的技术细节
  • 双 11 Service Mesh 超大规模落地解决方案

阿里巴巴云原生微信公众号(ID:Alicloudnative)关注微服务、Serverless、容器、Service Mesh等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术公众号。”

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里巴巴云原生
使用钉钉扫一扫加入圈子
+ 订阅

关注云原生中间件、微服务、Serverless、容器、Service Mesh等技术领域、聚焦云原生技术趋势、云原生大规模的落地实践

官方博客