高效安全的微虚拟化技术——Firecracker
firecrackerSecure and fast microVMs for serverless computing.项目地址:https://gitcode.com/gh_mirrors/fi/firecracker
项目简介
Firecracker是一款专注于构建和管理安全多租户容器及函数工作负载的开源虚拟化技术。其设计目标是提供服务器无状态操作模型下的高效、安全的轻量级虚拟机,即微VM(microVM)。这些微VM结合了硬件虚拟化的安全性和隔离性,以及容器的快速响应和灵活性。
技术解析
Firecracker的核心是一个基于Linux内核虚拟机(KVM)的虚拟机监控器(VMM),它创建并运行微VM。设计上,Firecracker遵循极简主义原则,移除不必要的设备和面向客户的功能,从而减少每个微VM的内存占用和攻击面。这一策略提高了安全性,缩短了启动时间,并优化了硬件利用率。此外,Firecracker已被集成到如Kata Containers和Flintlock等容器运行时中。
开发于亚马逊Web服务(AWS),Firecracker最初被用于加速AWS Lambda和AWS Fargate等服务的性能。它以Apache 2.0许可证开放源代码。
更多关于Firecracker的信息,可访问firecracker-microvm.io。
开始使用
要开始使用Firecracker,您可以下载最新的发行版二进制文件,或者从源码编译。在具备Docker环境和bash的Unix/Linux系统上,可以按以下步骤进行:
git clone https://github.com/firecracker-microvm/firecracker
cd firecracker
tools/devtool build
toolchain="$(uname -m)-unknown-linux-musl"
编译完成后,
build/cargo_target/${toolchain}/debug/firecracker
路径下会存放Firecracker二进制文件。有关构建、测试和运行Firecracker的更多信息,请参考快速入门指南。
为了确保微VM的安全,包括满足多租户计算的要求,您需要一个经过良好配置的Linux主机操作系统。生产主机设置文档提供了满足这一要求的配置示例。
贡献和更新
Firecracker已经在AWS内部运行着生产工作负载,但我们仍处于发展的初期阶段,有许多工作等待完成。我们欢迎所有贡献。请查看快速入门指南中的开发设置部分,以及贡献指南。
新版本的发布通常每两到三个月进行一次,通过GitHub上的发行页面进行。变更历史记录在我们的变更日志中。
设计理念
详细的设计信息可在设计文档中找到。API请求的完整说明则在API文档中。
特点与功能
Firecracker由一个单一的微型虚拟机管理进程组成,启动后暴露一个API端点给宿主机。API的详细规范以OpenAPI格式提供。了解更多,请参阅API文档。
API端点可用于:
- 配置微VM: - 设置vCPU的数量(默认为1)- 设置内存大小(默认为128 MiB)- 配置CPU模板
- 添加网络接口
- 添加读写或只读磁盘
- 触发块设备扫描
- 更改磁盘的背景区分文件
- 配置virtio设备的速率限制器
- 配置日志和度量系统
[BETA]
配置客人面临的元数据服务的数据树- 添加vsock套接字
- 添加熵设备
- 使用指定的内核镜像、根文件系统和启动参数启动微VM
- (仅限x86_64)停止微VM
内置特性:
- 默认启用按需故障页和CPU过载订阅
- 采用线程特定的seccomp过滤器增强安全性
- Jailer 进程在生产场景下启动Firecracker;应用cgroup/命名空间隔离屏障并降低权限
测试平台
我们在以下组合上进行了测试:
| 实例类型 | 主机OS & 内核 | 客户根文件系统 | 客户内核 | | :------- | :------------------ | :------------- | :----------- | | c5n.metal | al2 Linux 5.10 | Ubuntu 22.04 | Linux 4.14 | | m5n.metal | al2023 Linux 6.1 | | Linux 5.10 | | m6i.metal | | | | | m6a.metal | | | | | m6g.metal | | | | | m7g.metal | | | |
已知问题与限制
- 在aarch64上,
pl031
RTC设备不支持中断,因此使用RTC闹钟的客人程序(如hwclock
)将无法正常工作。
性能
性能特征在规格文档中列出。所有规格都是对我们支持容器和函数工作负载在serverless运营模式承诺的一部分,并通过持续集成测试强制执行。
安全披露政策
Firecracker的安全是我们的首要任务。如果您怀疑发现了漏洞,请按照我们的安全政策文档私下联系我们,我们会立即优先处理您的信息披露。
常见问答与联系
常见问题汇总在FAQ文档中。
可以通过以下方式与Firecracker社区取得联系:
- 对于安全相关的问题,参照安全政策文档。
- 在我们的Slack工作区聊天,注意:大多数维护者都在欧洲时区。
- 在本仓库中打开GitHub问题。
- 发邮件至维护者邮箱 firecracker-maintainers@amazon.com。
在与Firecracker社区交流时,请遵守我们的行为准则。
firecrackerSecure and fast microVMs for serverless computing.项目地址:https://gitcode.com/gh_mirrors/fi/firecracker
版权归原作者 魏侃纯Zoe 所有, 如有侵权,请联系我们删除。