最少组件、SELinux增强
Bottlerocket中只包含运行容器所需的软件,以减少安全攻击面,从而提高了安全性。除了使用标准Linux内核技术在容器化工作负载(例如控制组(cgroup),名称空间和seccomp)之间实现隔离之外,还以强制模式使用安全性增强的Linux(SELinux)来增强容器与主机操作系统之间的隔离。
Device-mapper和eBPF
Bottlerocket使用Device-mapper的verity目标(dm-verity),这是一种Linux内核功能,可提供完整性检查,以帮助防止攻击者在操作系统上持续存在威胁,例如覆盖核心系统软件。
Bottlerocket Linux内核中包括了eBPF,这减少了许多低级系统操作对内核模块的需求。
Rust开发
Bottlerocket的大部分内容都是用Rust编写的,Rust是一种现代编程语言,可帮助确保线程安全并防止与内存相关的错误,例如可能导致安全漏洞的缓冲区溢出。
隔离容器管理
Bottlerocket还通过阻止与生产服务器的管理连接来实施可进一步提高安全性的操作模型。它适用于限制对单个主机的控制的大型分布式环境。
为了进行调试,可以使用Bottlerocket的API运行“管理容器”(通过用户数据或AWS Systems Manager调用),然后使用SSH登录以进行高级调试和故障排除。admin容器是Amazon Linux 2容器映像,包含用于对Bottlerocket进行故障排除和调试的实用程序,并以提升的特权运行。它允许安装和使用标准调试工具,例如traceroute,strace,tcpdump。登录到单个Bottlerocket实例的行为旨在作为高级调试和故障排除的操作。
自动更新
Bottlerocket通过使节点的管理和对集群中节点的自动更新更加容易,从而大规模地提高了操作和可管理性。与旨在支持以各种格式打包的应用程序的通用Linux发行版不同,Bottlerocket是专门为运行容器而构建的。对其他通用Linux发行版的更新是在逐个软件包的基础上应用的,它们的软件包之间的复杂依赖关系可能导致错误,从而使流程难以实现自动化。