AWS开源其基于KVM的Firecracker轻量级虚拟化技术,意图提升无服务器安全及性能。
在上个月末的亚马逊 re:Invent 大会上,AWS发布其新版开源Firecracker轻量级虚拟化技术,旨在进一步推动无服务器计算的采纳。
长久以来,人们一直在争论是否有必要在由某种形式的虚拟机管理程序提供的额外隔离层上运行容器。至于无服务器技术,也就是在容器内部执行的事件驱动型函数,AWS是将其Lambda无服务器服务隔离在专用的弹性计算云(EC2)虚拟实例上了。新发布的Firecracker技术则以轻量级微虚拟机提供另一种方法隔离微服务和无服务器函数,性能开销更少,而安全性更好。
Firecracker的GitHub项目页面上写道:
Firecracker是开源虚拟化技术,专门为创建和管理安全多租户容器和基于函数的服务而设计,基于服务的函数可以提供无服务器操作模式。Firecracker在轻量级虚拟机,也就是微虚拟机(microVM)中执行工作负载。微虚拟机结合了硬件虚拟化技术提供的安全和隔离属性与容器提供的速度和灵活性。
AWS Lambda 本身是在2014年的re:Invent大会上发布的,催化了整个无服务器运动。2017年,AWS发布 AWS Fargate 服务,为以无服务器方式部署应用容器提供了新模型。
普通Docker容器得益于底层操作系统(通常是Linux)提供的多种隔离方式。问题在于,大型多租户环境中,比如云环境,容器提供的核心隔离就不够用了,这也是为什么AWS和其他大型容器用户转向了各型虚拟机管理技术来提供额外隔离层的原因。
安全
完整的虚拟机管理程序,比如KVM和Xen,包含一个操作系统,会对性能和存储要求产生影响。相反,Firecracker每个微虚拟机仅占用5MB内存。虽然Firecracker本身并不是完整的虚拟机,却使用开源KVM虚拟机管理程序来创建并管理微虚拟机。Firecracker还是以开源Rust编程语言写就的高性能技术,Rust语言自带的内存和类型安全功能有助于提升整体安全性。
在主机操作系统上运行容器的风险在于,攻击者可能会未授权访问系统资源。而使用Firecracker,简单的客户机模式减小了攻击界面。
Firecracker客户机只有非常简单的虚拟化设备模式,将攻击界面减到最小:一个网络设备、一个块输入/输出设备、一个可编程间隔计时器、KVM时钟、一个串口控制台和一部分键盘(仅够虚拟机重启用)。
虽然AWS直到11月26日才公开发布Firecracker,该技术早已用在保护 AWS Lambda 和Fargate服务上了。
竞争
Firecracker不是将轻量级虚拟机管理模式用于提升容器隔离的首创。早在2014年11月,Ubuntu Linux 就宣布了LXD计划,作为改善容器安全和部署密度的轻量级虚拟机管理程序。
2017年12月,OpenStack基金会发布基于英特尔 Clear Containers 的 Kata Containers 计划。2018年5月,谷歌gVisor沙箱容器隔离面世,同样提供类似的虚拟化安全改善。
目前,Firecracker仅支持英特尔CPU,但公开路线图表明未来将支持AMD和ARM芯片。
Firecracker GitHub 页面:
https://github.com/firecracker-microvm/firecracker
相关阅读