应用实践
简介
本文将阐述我们推出 vArmor 项目的目的,解析其在容器安全策略管理中的挑战与解决方案。然后从技术角度出发,介绍其在多租户隔离、核心业务加固与特权容器加固等场景的应用,展示如何凭借项目的技术特性来解决特定问题,从而实现技术与业务目标,助力企业构建云原生环境下的安全防线。
为什么推出 vArmor
容器运行时组件和 Kubernetes 早已增加了对 LSM、Seccomp 的支持,其中 Seccomp 在 Kubernetes v1.19 GA,AppArmor LSM 在 Kubernetes v1.30 GA。用户可以自行编写和管理 AppArmor、SELinux、Seccomp Profiles,并在工作负载中配置安全策略对其进行加固。几乎所有的容器运行时组件都附带了默认的 AppArmor 和 Seccomp 安全策略,但默认的 Seccomp 策略需要显式设置才会为容器开启,而默认的 AppArmor 策略需要操作系统支持才会为容 器自动开启。
充分利用 Linux 系统的安全机制可以有效加固容器。例如通过 LSM、Seccomp 等技术对容器进程进行强制访问控制,可以减少内核攻击面、增加容器逃逸或横向移动攻击的难度与成本。它们的基本原理如下图所示。
然而,编写和管理安全策略则面临诸多挑战:
- 容器运行时组件的默认安全策略存在局限性,无法防御某些漏洞、错误配置风险,也不能限制攻击者在容器内的渗透行为。
- 构建 AppArmor、Seccomp、SELinux Profile 需要专业知识。
- 为复杂且快速迭代的容器化应用制定健壮的安全策略(尤其是 Deny-by-Default 模式的策略)难度较大。
- AppArmor 或 SELinux LSM 依赖操作系统发行版,存在一定局限性。
- 在 Kubernetes 环境中,自动化管理和应用不同的安全策略比较复杂。
为了解决这些问题,vArmor 应运而生。它提供了多种策略模式、内置规则和配置选项,vArmor 会根据策略对象的定义,管理安全策略(AppArmor Profile、BPF Profile、Seccomp Profile)对不同工作负载的容器进行加固。vArmor 还基于 BPF 和 Audit 技术实现了行为建模功能,可以对不同应用进行行为采集并生成行为模型,从而辅助构建安全策略。
例如,用户可以按需配置策略对象,实现违规拦截、拦截并告警、只告警不拦截三种效果,并使用内置规则和自定义规则动态更新策略对象,从而满足不同应用场景的需要。下面我们将用几个实际应用场景来展示 vArmor 如何助力企业提升云原生环境中的容器安全防护能力。