You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
配置工作负载
使用 vArmor 实现云原生容器安全
复制全文
下载 pdf
使用 vArmor 实现云原生容器安全
vArmor 用于为 Kubernetes 集群中的工作负载提供容器加固与运行时防护,适用于需要基于 AppArmor、BPF 和 Seccomp 为云原生应用配置安全策略并验证防护效果的场景,本文介绍使用 vArmor 实现云原生容器安全的配置方法和注意事项。​
背景信息​
vArmor 是字节跳动开源的云原生容器沙箱系统,它借助 Linux 的 AppArmor LSM,BPF LSM 和 Seccomp 技术进行容器加固。用户可以通过 vArmor 的 CRD 在 Kubernetes 集群中管理安全策略,对指定工作负载的容器进行加固。vArmor 旨在降低利用现有技术加固容器的门槛和成本,从而平衡安全风险与防护成本。​
说明​
vArmor 的更多详情,请参见 什么是容器加固、项目官网。​
vArmor 借助不同的加固技术,实现云原生容器的安全加固,其基本概念和工作原理,如下表所示。​
​
加固技术​
基本概念​
工作原理​
AppArmor Enforcer​
基于 Linux 内核 AppArmor 模块实现的安全执行引擎。它是一种成熟的强制访问控制系统。​
当系统创建 Pod 时,vArmor 会将定义好的安全策略转化为 AppArmor Profile,并通过 Webhook 机制注入到容器配置中。随后,Linux 内核会接管控制权,根据 Profile 限制容器内进程的文件读写、网络访问和系统调用能力。​
BPF Enforcer​
基于 eBPF(Extended Berkeley Packet Filter)技术实现的新一代安全执行引擎。​
不需要向容器注入静态配置,而是将轻量级的 eBPF 沙盒程序动态挂载到内核的安全钩子(LSM Hooks)或追踪点上。当容器内进程发起系统调用时,eBPF 程序会在内核态实时检查该动作是否合法,并直接阻断违规请求。​
行为建模模式​
基于动态特征采集的“白名单”安全策略生成模式。​
开启该模式后,vArmor 不会立刻进行拦截,而是进入“观察期”。系统会在后台静默记录目标容器在正常业务运转时的行为数据(例如启动了哪些进程、读取了哪些文件路径、发起了哪些网络调用)。观察期结束后,自动总结出一份专属的白名单策略。​
​
不同加固技术的对比,如下表所示。​
​
对比维度​
AppArmor Enforcer​
BPF Enforcer​
行为建模模式​
功能分类​
执行器模块(拦截引擎)。​
执行器模块(拦截引擎)。​
策略模式(行为数据收集器)。​
工作机制​
静态注入 Profile,依赖内核内置模块实施拦截。​
动态挂载 eBPF 程序,在系统调用层实时接管拦截。​
静默观察容器运行时行为,自动总结并生成白名单策略。​
主要优势​
生态成熟,稳定性高,排障路径清晰。​
不依赖单一内核模块,跨系统兼容性强,拦截粒度极细。​
零人工配置门槛,避免因手动配置不当引发的业务中断。​
依赖与限制​
宿主机内核必须支持并已开启 AppArmor 功能。​
宿主机内核版本需满足 eBPF 特性要求。​
需保证观察期内业务流量足够丰富,否则生成的白名单可能不全。​
适用场景​
运行在 veLinux/Ubuntu 节点上的常规业务隔离防护。​
运行在无法使用 AppArmor 的节点,或对性能有极致要求的底层防护。​
复杂业务上线初期,安全工程师无法人工梳理确切权限需求的场景。​
​
说明​
  • AppArmor Enforcer 和 BPF Enforcer 在访问控制能力方面存在部分差异。但两者并不冲突,如有需求,可以在集群中同时使用。​
  • 行为建模模式与两款执行器是上下游配合关系。行为建模生成的策略,最终必须交由 AppArmor 或 BPF 来执行。​
前提条件​
已安装 varmor 组件。​
操作指南​
步骤一:配置 VarmorPolicy​
在集群中安装 varmor 组件和相关 CRD 资源后,您可以通过配置 VarmorPolicy 资源自定义容器安全策略。VarmorPolicy 主要包含两部分:​
  • target:用于通过资源类型和标签选择器,指定哪些 Pod 或工作负载会应用该策略。​
  • policy:用于定义具体的防护方式,例如选择 AppArmor 还是 BPF 作为执行器、使用哪种防护模式,以及要拦截哪些高危行为。​
配置示例和重点参数说明,如下所示:​
​
apiVersion: crd.varmor.org/v1beta1​
kind: VarmorPolicy​
metadata:​
name: demo-policy # 安全策略名称​
namespace: default # 安全策略所在命名空间​
spec:​
target: # 目标选择器,定义使用安全策略的对象​
kind: Pod # 定义使用该安全策略的资源类型​
selector:​
matchLabels:​
app: varmor-test # 定义使用该安全策略的 Pod 标签​
policy: # 安全策略详情​
enforcer: AppArmor # 使用 AppArmor 技术来实现隔离和限制​
mode: EnhanceProtect # 增强防护模式,只要容器内的行为命中了下面的规则,动作会被内核直接拒绝,并返回 Permission denied​
enhanceProtect: # 核心防护规则详细配置​
auditViolations: true # 是否记录违规审计日志。取值:true(表示在策略生效时额外记录审计日志);false(表示不记录审计日志。是否拦截违规动作,取决于当前策略模式,例如在 EnhanceProtect 模式下,命中规则后仍会被拦截)​
attackProtectionRules: # 规则详情​
- rules: # 规则 1:全局禁止修改文件权限​
- disable-chmod​
- rules: # 规则 2:定向防止 SA Token 泄露​
- mitigate-sa-leak​
targets:​
- "/bin/bash"​
- "/bin/dash"​
- "/bin/sh"​
​
说明​
  • 您也可以通过云安全中心,配置指定集群的 VarmorPolicy 策略,详情请参见 容器加固功能说明。​
  • 更多 vArmor 自定义规则的配置详情和示例,请参见 官方文档。​
步骤二:加固工作负载​
创建工作负载时,需要在 Pod 标签中添加与target.selector.matchLabels匹配的标签,用于让 VarmorPolicy 选中目标 Pod。如果组件启用了 Webhook 注入能力,还需要按组件要求补充 sandbox.varmor.org/enable: "true" 等匹配标签。本文以无状态负载为例,示例和说明如下:​
  1. 创建工作负载的 YAML 文件。示例文件deployment-demo.yaml代码如下:​
  • ​
    apiVersion: apps/v1​
    kind: Deployment​
    metadata:​
    name: deployment-demo # 工作负载名称​
    namespace: default # 工作负载所属命名空间​
    spec: ​
    replicas: 1​
    selector: ​
    matchLabels: ​
    app: varmor-test # 使用 VarmorPolicy 标签指定具体的安全策略​
    template: ​
    metadata: ​
    labels: ​
    app: varmor-test # 使用 VarmorPolicy 标签指定具体的安全策略​
    sandbox.varmor.org/enable: "true" # Webhook 匹配标签,该配置必须与 varmor 组件配置的一致​
    spec:​
    containers:​
    - name: demo​
    image: doc-cn-beijing.cr.volces.com/vke/nginx-demo:v1.0​
    ports:​
    - containerPort: 80​
    ​
  1. 执行以下命令,创建工作负载。​
  • ​
    kubectl apply -f deployment-demo.yaml​
    ​
结果验证​
配置确认​
​
通过容器服务控制台
通过云安全中心控制台
​
  1. 在左侧导航栏中,单击 工作负载 > 对象浏览器。​
  1. 在 分类 下拉菜单中选择 CRD,使用名称varmorpolicy检索资源对象。​
  1. 单击资源名称,进入资源详情页面,可以看到创建的 VarmorPolicy 配置。​
  • ​​​
  1. 单击 操作 栏中的 编辑 Yaml 或 删除,即可查看、修改或删除 VarmorPolicy 配置。​
​
策略验证​
在本文的 VarmorPolicy 中,开启了全局禁止修改文件权限。可以使用如下示例,验证测试是否在 Pod 中生效。​
​
touch /tmp/a​
chmod 777 /tmp/a​
​
预期结果如下,由于 Pod 开启了全局禁止修改文件权限,因此执行chmod命令,返回失败。​
​
bash: /bin/chmod: Permission denied​
​
查看日志​
违规日志页允许查看指定集群、工作负载触发的违规审计记录,帮助用户快速定位“哪个 Pod、命中了哪条规则、阻断了什么行为”(如访问的文件路径、被过滤的系统调用、网络访问目标等)。日志支持按集群、策略、时间等维度筛选,为策略调优与安全事件溯源提供依据。​
  1. 在左侧导航栏中,选择 风险管理 > 容器加固。​
  1. 选择 违规日志 页签,即可查看指定集群或 Pod 中的违规日志。​
  • ​​​
​
​
最近更新时间:2026.07.14 14:30:48
这个页面对您有帮助吗?
有用
有用
无用
无用