亚马逊公司
Bottlerocket(顺便说一下,小型自制黑火药火箭的名称)并不是第一个容器操作系统,但由于与 AWS 服务的默认集成,它很可能会变得广泛。 尽管该系统专注于亚马逊云,但开源代码允许它在任何地方构建:本地服务器上、Raspberry Pi 上、任何竞争云中,甚至在无容器环境中。
这是 Red Hat 埋没的 CoreOS 发行版的完全值得的替代品。
事实上,亚马逊网络服务部门已经有了 Amazon Linux,它最近推出了第二个版本:它是一个通用发行版,可以在 Docker 容器中运行,也可以与 Linux KVM、Microsoft Hyper-V 和 VMware 一起运行ESXi 虚拟机管理程序。 它经过优化,可在 AWS 云上运行,但随着 Bottlerocket 的发布,每个人都被鼓励升级到更安全、更现代化且使用更少资源的新系统。
AWS 推出 Bottlerocket
极简主义
Linux 剥离了运行容器不需要的所有内容。 据该公司称,这种设计减少了攻击面。
这意味着基础系统上安装的软件包更少,从而更容易维护和更新操作系统,并且还减少了由于依赖关系而出现问题的可能性,从而减少了资源使用。 基本上,这里的所有内容都在单独的容器内运行,并且底层系统实际上是裸露的。
亚马逊还删除了所有 shell 和解释器,消除了它们被使用或用户意外升级权限的风险。 为了简约和安全,基础镜像不包含命令 shell、SSH 服务器或 Python 等解释语言。 管理员工具放置在单独的服务容器中,默认情况下处于禁用状态。
该系统通过两种方式进行管理:通过 API 和编排。
Bottlerocket 不是更新单个软件的包管理器,而是下载完整的文件系统映像并重新启动到其中。 如果负载失败,它会自动回滚,并且工作负载失败可以手动触发回滚(通过 API 命令)。
框架 /etc
与 RAM 中的文件系统一起安装 /etc
不支持:要保存设置,您应该使用 API 或将功能移至单独的容器中。
API更新方案
安全
容器由 Linux 内核的标准机制(cgroup、命名空间和 seccomp)创建,并用作强制访问控制系统,即用于额外的隔离
默认情况下,启用策略以在容器和内核之间共享资源。 二进制文件受到标志保护,以防止用户或程序执行它们。 如果确实访问了文件系统,Bottlerocket 会提供一种工具来检查和跟踪所做的任何更改。
“验证启动”模式是通过 device-mapper-verity 函数实现的(
系统中还有一个过滤器
执行模型
用户自定义
汇编
安全
故障模式
获取资源
用户
任务
是的
任何
用户权利
中断执行
系统调用、故障
核心
任务
没有
静止的
没有
内核恐慌
прямой
BPF
事件
是的
准时制、核心再生产
验证、准时生产
错误信息
有限的帮手
BPF 与常规用户或内核级代码有何不同
AWS 表示,Bottlerocket“采用了一种操作模型,通过阻止具有管理权限的生产服务器连接来进一步增强安全性”,并且“适合对每个主机的控制受到限制的大型分布式系统”。
为系统管理员提供管理员容器。 但 AWS 认为管理员通常不需要在 Bottlerocket 内部工作:“登录到单独的 Bottlerocket 实例的行为旨在用于不频繁的操作:高级调试和故障排除,”
Rust 语言
内核之上的操作系统工具大部分是用 Rust 编写的。 这种语言的本质是
构建时默认应用标志 --enable-default-pie
и --enable-default-ssp
启用可执行文件地址空间的随机化(
对于 C/C++ 包,包含附加标志 -Wall
, -Werror=format-security
, -Wp,-D_FORTIFY_SOURCE=2
, -Wp,-D_GLIBCXX_ASSERTIONS
и -fstack-clash-protection
.
除了 Rust 和 C/C++ 之外,还有一些包是用 Go 编写的。
与 AWS 服务集成
与同类容器操作系统的不同之处在于,Amazon 对 Bottlerocket 进行了优化,使其可以在 AWS 上运行并与其他 AWS 服务集成。
最流行的容器编排器是 Kubernetes,因此 AWS 引入了与其自己的企业 Kubernetes 服务 (EKS) 的集成。 编排工具位于单独的控制容器中
鉴于过去一些类似举措的失败,看看 Bottlerocket 是否会成功将会很有趣。 例如,Vmware 的 PhotonOS 结果无人认领,RedHat 购买了 CoreOS 并
Bottlerocket 与 AWS 服务的集成使该系统以自己的方式独一无二。 这也许是一些用户可能更喜欢 Bottlerocket 而不是其他发行版(例如 CoreOS 或 Alpine)的主要原因。 该系统最初设计为与 EKS 和 ECS 配合使用,但我们重申这不是必需的。 首先,Bottlerocket 可以
Bottlerocket 源代码在 Apache 2.0 许可证下发布在 GitHub 上。 开发商已经
由于宣传
维迪斯娜 报价
来源: habr.com