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

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 本文中,蚂蚁金服和阿里云的容器开发者们会共同向大家介绍安全容器的前世今生、它们在 双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等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术公众号。”

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
13天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
13天前
|
Cloud Native 持续交付 开发者
云原生技术在现代企业中的应用与实践####
本文深入探讨了云原生技术的核心概念及其在现代企业IT架构转型中的关键作用,通过具体案例分析展示了云原生如何促进企业的敏捷开发、高效运维及成本优化。不同于传统摘要仅概述内容,本部分旨在激发读者对云原生领域的兴趣,强调其在加速数字化转型过程中的不可或缺性,为后续详细论述奠定基础。 ####
|
8天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
2天前
|
安全 Java API
Nacos 3.0 Alpha 发布,在安全、泛用、云原生更进一步
近期,我们欣喜地宣布 Nacos 3.0 的第一个版本 Nacos 3.0-ALPHA 已经发布。Nacos 3.0 的目标是在 2.0 的基础上,进一步优化安全性、易用性和标准化。同时,我们将引入更多功能,帮助用户在分布式协调、AI 大模型、云原生等多种场景中更好地使用 Nacos,以提升其广泛适应性。
|
2天前
|
Cloud Native
邀您参加云原生高可用技术沙龙丨云上高可用体系构建:从理论到实践
云原生高可用技术专场,邀您从理论到实践一起交流,探索云上高可用体系构建!
|
8天前
|
人工智能 Kubernetes Cloud Native
阿里云容器服务,智算时代云原生操作系统
2024云栖大会,阿里巴巴研究员易立分享了阿里云容器服务的最新进展。容器技术已成为云原生操作系统的基石,支持多样化的应用场景,如自动驾驶、AI训练等。阿里云容器服务覆盖公共云、边缘云、IDC,提供统一的基础设施,助力客户实现数字化转型和技术创新。今年,阿里云在弹性计算、网络优化、存储解决方案等方面进行了多项重要升级,进一步提升了性能和可靠性。
|
13天前
|
Cloud Native JavaScript Docker
云原生技术:构建现代应用的基石
在数字化转型的浪潮中,云原生技术如同一艘承载梦想的航船,引领企业驶向创新与效率的新海域。本文将深入探索云原生技术的核心价值,揭示其如何重塑软件开发、部署和运维模式,同时通过一个简易代码示例,展现云原生应用的构建过程,让读者领略到云原生技术的魅力所在。
|
13天前
|
运维 Cloud Native 持续交付
云原生技术深度探索:重塑现代IT架构的无形之力####
本文深入剖析了云原生技术的核心概念、关键技术组件及其对现代IT架构变革的深远影响。通过实例解析,揭示云原生如何促进企业实现敏捷开发、弹性伸缩与成本优化,为数字化转型提供强有力的技术支撑。不同于传统综述,本摘要直接聚焦于云原生技术的价值本质,旨在为读者构建一个宏观且具体的技术蓝图。 ####
|
15天前
|
运维 Cloud Native 开发者
云原生技术入门与实践
在云计算的浪潮中,云原生技术以其独特的优势和魅力吸引了越来越多的开发者和企业。本文将从云原生技术的基本概念、核心组件以及实际应用三个方面进行详细介绍,帮助读者更好地理解和掌握这一新兴技术。同时,文章还将分享一些实际案例和经验教训,让读者能够更深入地了解云原生技术的应用场景和发展趋势。
33 5
|
14天前
|
Cloud Native 持续交付 云计算
云原生技术的崛起与未来展望
本文探讨了云原生技术的核心概念、发展历程及其在现代IT架构中的关键作用。随着云计算的普及,云原生作为一种优化云应用构建和部署的方法,正逐渐成为企业数字化转型的重要推力。文章分析了容器化、微服务、持续集成/持续部署(CI/CD)等关键技术如何支撑起灵活、高效、可扩展的云原生架构,并讨论了面临的挑战与未来的发展趋势。
29 2