一、开源背景
随着云原生技术的发展,已经有越来越多的组织开始使用云原生技术来构建自己的基础设施,或者使用它们来进行应用发布与管理。众所周知,容器技术是云原生领域的核心与基础,Linux 容器、容器镜像,容器编排等技术的出现,带来了更高的资源利用率和研发效率。但在享受 Linux 容器带来的性能与便捷时,也带来了诸如 Linux 容器隔离性较弱的安全问题。
虽然业内已经推出了一些基于硬件虚拟化技术和用户态内核的强隔离方案,但它们仍然有着比较高的技术门槛和使用成本,这使得 Linux 容器仍将是大部分场景的主流。因此,Linux 容器隔离性增强是业界长期研究和关注的方向。
另外,Linux 容器被广泛且大量运用的一个结果便是大量应用会被部署在同一个集群、同一个节点上,这种架构加剧了容器被攻击后所能够产生的安全影响。攻击者会尝试利用错误配置和漏洞进一步提权和横行移动,从而扩大攻击战果。因此,如何对云原生环境的 Linux 容器进行安全加固,增加攻击者渗透入侵的难度与成本也是安全界研究的重点。
针对 Linux 容器隔离性弱、已有加固手段门槛高、安全加固缺乏云原生视角等问题和痛点,字节跳动安全与风控终端安全团队自研了云原生容器沙箱——vArmor。vArmor 基于 Linux 的 LSM 技术(AppArmor & BPF),构建了一款既贴近云原生应用场景,又具有较低使用门槛的容器沙箱。vArmor 能够让用户从应用发布和运维的视角来使用沙箱,使用内置或自定义策略对 Linux 容器进行安全加固,从而增强云原生环境下 Linux 容器的隔离性,增加攻击者渗透入侵的难度与成本。
8月19日,第 12 届 KCon 黑客大会举办,火山引擎云原生安全负责人韦伟受邀发表题为《从 0 到 1 打造云原生容器沙箱——vArmor》的主题演讲,为大家详细介绍了 vArmor 的原理、实现与效果,并在演讲现场正式公布 vArmor 对外开源,欢迎行业从业者体验交流与共建。
二、vArmor 介绍
vArmor 是什么
vArmor 是一个云原生容器沙箱系统,它借助 Linux 的 LSM 技术(AppArmor & BPF)对容器进行沙箱加固,从而增强容器隔离性、减少内核攻击面、增加容器逃逸或横向移动攻击的难度与成本。vArmor 遵循 Kubernetes Operator 设计模式, 使用户可以通过声明式 API 来操作沙箱系统对工作负载进行加固。从而以更贴近业务的视角,实现对容器化微服务的沙箱加固。
有什么特点
-
云原生:通过声明式 API 为用户提供云原生用户体验,用户只需从应用发布和运维的视角来使用沙箱,从而无需关注承载应用的具体容器是如何在高度动态的环境中被加固的。
-
开销低:基于 Linux LSM 技术在内核中对容器进程进行强制访问控制(文件、程序、网络外联等),并使用 Allow by Default 安全模型,仅对显示声明的权限提升、横行移动等攻击行为进行强制访问控制。
-
兼容性强:在符合条件的系统上,用户可以选择 AppArmor 和 BPF 两种强制访问控制器对 Linux 容器进行加固。支持当前主流的公有云容器服务(如 ACK、VKE、EKS、GKE、AKS)和操作系统。
-
开箱即用:根据长期攻防研究与云原生安全防护建设经验,内置针对容器环境常见攻击行为的防护策略集,无需用户自行编写策略。
-
易用性高:支持自定义策略,支持动态调整防护策略(无需重启工作负载)。
应用场景
你可以借助 vArmor 在以下场景,对 Kubernetes 集群中的 Linux 容器进行沙箱防护
-
多租户场景中,由于成本、技术条件等原因无法使用硬件虚拟化容器
-
需要对关键的业务容器进行安全加固,增加攻击者权限提升、渗透入侵的难度与成本
-
出现高危漏洞且无法立即修复时,可以借助 vArmor 对漏洞实施利用缓解(取决于漏洞类型或漏洞利用向量)
注:如果需要高强度的隔离方案,建议优先考虑使用硬件虚拟化容器(如 Kata Container)进行计算隔离,并借助 CNI 的 NetworkPolicy 支持进行网络隔离。
三、如何使用
详见项目 README 及 KCon 2023 slides(KCon 官方下载)
开源地址:github.com/bytedance/v…
四、后续计划
vArmor 现已开源,目前该项目仍在积极迭代中。后续会在端到端测试、可观测性、安全性、兼容性等方面不断提升,同时不断完善 BPF 强制访问控制器的功能,丰富优化内置策略等。欢迎大家试用和参与社区建设。
五、感谢与交流
vArmor 从 0 到 1 以来,离不开团队同学的支持,这里感谢 Elkeid Team 的全部成员,特别感谢 Ping Shen @shenping-bd,致以最诚挚的感谢。
欢迎大家通过 GitHub 或官方邮箱 elkeid@bytedance.com 进行后续交流与反馈。