vArmor – 云原生容器沙箱系统

简介

vArmor 是一个云原生容器沙箱系统,用于增强容器的隔离性,减少内核攻击面,并增加攻击者进行容器逃逸或横向移动的难度与成本。

vArmor 借助 Linux 的 AppArmor LSM, BPF LSM  Seccomp 技术实现强制访问控制器(即 enforcer),从而对容器进行安全加固。它可以用于增强容器隔离性、减少内核攻击面、增加容器逃逸或横行移动攻击的难度与成本。

您可以借助 vArmor 在以下场景对 Kubernetes 集群中的容器进行沙箱防护

  • 业务场景存在多租户(多租户共享同一个集群),由于成本、技术条件等原因无法使用硬件虚拟化容器(如 Kata Container)
  • 需要对关键的业务进行安全加固,增加攻击者权限提升、容器逃逸、横向渗透的难度与成本
  • 当出现高危漏洞,但由于修复难度大、周期长等原因无法立即修复时,可以借助 vArmor 实施漏洞利用缓解(具体取决于漏洞类型或漏洞利用向量。缓解代表阻断利用向量、增加利用难度)

截图

vArmor

特色

  • 云原生。vArmor 遵循 Kubernetes Operator 设计模式,用户可通过操作 CRD API 对特定的 Workloads 进行加固。从而以更贴近业务的视角,实现对容器化微服务的沙箱加固
  • 支持单独或组合使用 AppArmor、BPF、Seccomp enforcer,对容器的文件访问、进程执行、网络外联、系统调用等进行强制访问控制
  • 支持 Allow by Default 安全模型,即只有显式声明的行为会被阻断,从而减少性能损失和增加易用性
  • 支持行为建模,并基于行为模型进行安全防护,即只有显式声明的行为会被允许
  • 开箱即用。vArmor 包含多种内置加固规则供直接使用

vArmor 由字节跳动终端安全团队的 Elkeid Team 研发,目前该项目仍在积极迭代中。

注意:如果需要高强度的隔离方案,建议优先考虑使用硬件虚拟化容器(如 Kata Container)进行计算隔离,并借助 CNI 的 NetworkPolicy 进行网络隔离。

使用场景

  • 多租户共享 Kubernetes 集群时,无法使用硬件虚拟化容器的场景。
  • 对关键业务进行安全加固,增加攻击者权限提升、容器逃逸、横向渗透的难度。
  • 高危漏洞无法立即修复时,通过 vArmor 实施漏洞利用缓解。

策略模式与内置规则支持 5 种运行模式:AlwaysAllow、RuntimeDefault、EnhanceProtect、BehaviorModeling、DefenseInDepth。

快速上手

Step 1. 拉取 chart 包

helm pull oci://elkeid-cn-beijing.cr.volces.com/varmor/varmor --version 0.5.9

Step 2. 安装

您可以在非中国地区使用 elkeid-ap-southeast-1.cr.volces.com 域名

helm install varmor varmor-0.5.9.tgz \
    --namespace varmor --create-namespace \
    --set image.registry="elkeid-cn-beijing.cr.volces.com"

Step 3. 示例

# 创建名为 demo 的命名空间
kubectl create namespace demo

# 创建 VarmorPolicy,对符合 .spec.target.selector 的 Deployment 开启 AlwaysAllow 模式沙箱
kubectl create -f test/demo/1-apparmor/vpol-apparmor-alwaysallow.yaml

# 查看 VarmorPolicy & ArmorProfile 状态
kubectl get VarmorPolicy -n demo
kubectl get ArmorProfile -n demo

# 创建 Deployment
kubectl create -f test/demo/1-apparmor/deploy.yaml

# 获取 Pod name
POD_NAME=$(kubectl get Pods -n demo -l app=demo-1 -o name)

# 在 c1 容器中执行命令,读取 secret token
kubectl exec -n demo $POD_NAME -c c1 -- cat /run/secrets/kubernetes.io/serviceaccount/token

# 更新 VarmorPolicy 策略,禁止 Deployment 读取 secret token
kubectl apply -f test/demo/1-apparmor/vpol-apparmor-enhance.yaml

# 在 c1 容器中执行命令,读取 secret token,验证读取行为被禁止
kubectl exec -n demo $POD_NAME -c c1 -- cat /run/secrets/kubernetes.io/serviceaccount/token

# 删除 VarmorPolicy 和 Deployment
kubectl delete -f test/demo/1-apparmor/vpol-apparmor-alwaysallow.yaml
kubectl delete -f test/demo/1-apparmor/deploy.yaml

Step 4. 卸载

helm uninstall varmor -n varmor

下载

THE END
分享
二维码
打赏
海报
vArmor – 云原生容器沙箱系统
vArmor 是一个云原生容器沙箱系统,用于增强容器的隔离性,减少内核攻击面,并增加攻击者进行容器逃逸或横向移动的难度与成本。 vArmor 借助 Linux 的 AppArmor LSM, BPF LSM 和 Seccomp 技术实现强制访问控制器(即 enforcer),从而对容器进行安全加固。它可以用于增强容器隔离性、减少内核攻击面、增加容器逃逸或横行移动攻击的难度与成本。
<<上一篇
下一篇>>