跳到主要内容
版本:v0.7

安装指引

前置条件

不同 Enforcer 所需要的前置条件如下表所示。

强制访问控制器要求推荐
AppArmor1. Linux Kernel 4.15 及以上版本
2. 系统需开启 AppArmor LSM
GKE with Container-Optimized OS
AKS with Ubuntu 22.04 LTS
VKE with veLinux 1.0
Debian 10 及以上版本
Ubuntu 18.04.0 LTS 及以上版本
veLinux 1.0
BPF1. Linux Kernel 5.10 及以上版本 (x86_64)
2. containerd v1.6.0 及以上版本
3. 系统需开启 BPF LSM
EKS with Amazon Linux 2
GKE with Container-Optimized OS
VKE with veLinux 1.0 (with 5.10 kernel)
AKS with Ubuntu 22.04 LTS *
ACK with Alibaba Cloud Linux 3 *
OpenSUSE 15.4 *
Debian 11 *
Fedora 37
veLinux 1.0 with 5.10 kernel

* 需手动启用节点的 BPF LSM
Seccomp1. Kubernetes v1.19 及以上版本所有 Linux 发行版

安装

vArmor 推荐使用 Helm chart 进行部署。通过 Helm 安装前,请先拉取 chart 包。

helm pull oci://elkeid-ap-southeast-1.cr.volces.com/varmor/varmor --version 0.6.2

然后使用 helm 命令及配置选项进行安装和配置。

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

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

配置选项

您可以使用以下选项,在安装或更新时配置 vArmor 的功能。

通用选项

关闭 AppArmor enforcer

当宿主机不支持 AppArmor LSM 时,应当主动关闭 AppArmor enforcer。默认值:开启。

--set appArmorLsmEnforcer.enabled=false

开启 BPF enforcer

当宿主机支持 BPF LSM 时,可以开启 BPF enforcer。默认值:关闭。

--set bpfLsmEnforcer.enabled=true

开启 BehaviorModeling 模式

这是一个实验性质的功能。当前只有 AppArmor 和 Seccomp enforcer 支持 BehaviorModeling 模式。请参考 BehaviorModeling Mode 了解更多细节。默认值:关闭。

--set behaviorModeling.enabled=true

配置审计日志的搜索列表

vArmor 顺序检查对应的审计日志是否存在,并通过监控第一个有效的文件来获取 AppArmor 和 Seccomp 的审计事件,从而用于违规审计和行为建模功能。当您使用 auditd 时,AppArmor 和 Seccomp 的审计事件会默认保存在 /var/log/audit/audit.log 文件中。否则,他们通常会被保存在 /var/log/kern.log 文件中。

你可以使用这个选项来配置审计日志、文件搜索顺序。请使用|来分割文件。默认值:/var/log/audit/audit.log|/var/log/kern.log

--set "agent.args={--auditLogPaths=FILE_PATH|FILE_PATH}"

配置监控指标

您可以开启指标来监控 vArmor。指标将在所有 Manager 实例 8081 端口上的 /metric 路径对外暴露。默认值:关闭。

--set metrics.enabled=true

您可以使用下面的选项在 vArmor 所在命名空间中创建 ServiceMonitor 对象,用于与 Prometheus 集成。默认值:关闭。

--set metrics.serviceMonitorEnabled=true

高级选项

设置 Webhook 的匹配标签

vArmor 只会对包含此 label 的 Workloads 开启沙箱防护。你可以使用此选项配置所需的 label,或者使用 --set 'manager.args={--webhookMatchLabel=}' 关闭此特性。默认值:sandbox.varmor.org/enable=true

--set "manager.args={--webhookMatchLabel=KEY=VALUE}"

禁止重启存在的工作负载

在创建、删除策略时,vArmor 允许用户通过策略的 .spec.updateExistingWorkloads 字段来决定是否对目标工作负载进行滚动更新。你可以通过此选项来关闭此特性。默认值:开启。

--set restartExistWorkloads.enabled=false

在宿主机网络命名空间中运行 Agent

vArmor 的 Agent 默认运行在独立的网络命名空间中,并在端口 6080 暴露就绪探针。如果您想将其部署在宿主网络命名空间中,那么可以使用下面的选项进行配置。

--set agent.network.hostNetwork=true \
--set agent.network.readinessPort=HOSTPORT

开启 BPF enforcer 的独占模式

如果您的系统支持 AppArmor LSM,那么容器运行时会为没有显式配置 AppAmor 的工作负载应用其默认的 AppArmor profile。 您可以使用这个选项开启 BPF enforcer 的独占模式,即为那些启用 BPF enforcer 防护的工作负载禁用 AppArmor profile。

--set bpfExclusiveMode.enabled=true

卸载所有 AppArmor 配置文件

当 Agent 退出或 vArmor 被卸载时,所有被 vArmor 管理的 AppArmor profile 都不会被自动卸载。 您可以使用下面的选项来改变此行为。默认值:关闭。

--set unloadAllAaProfiles.enabled=true

移除所有 Seccomp 配置文件

当 Agent 退出或 vArmor 被卸载时,所有被 vArmor 管理的 Seccomp profile 都不会被自动移除。 您可以使用下面的选项来改变此行为。默认值:关闭。

--set removeAllSeccompProfiles.enabled=true

更新

你可以使用 helm 命令进行升级、回滚等操作。

helm upgrade varmor varmor-0.6.2.tgz \
--namespace varmor --create-namespace \
--set image.registry="elkeid-ap-southeast-1.cr.volces.com" \
--set bpfLsmEnforcer.enabled=true \
--set appArmorLsmEnforcer.enabled=false
helm rollback varmor -n varmor

卸载

可以使用以下命令卸载 vArmor。

helm uninstall varmor -n varmor

若使用了 AppArmor 和 Seccomp enforcer,请按照以下步骤卸载 vArmor

  • 筛选出所有使用 AppArmor 或 Seccomp enforcer 的 VarmorPolicy/VarmorClusterPolicy(.spec.policy.enforcer 中包含 AppArmor 或 Seccomp)
  • 逐个处理 VarmorPolicy/VarmorClusterPolicy 和对应的工作负载
    • 删除 VarmorPolicy/VarmorClusterPolicy 对象
    • 当防护目标的类型为 Deployment, StatusfulSet, DaemonSet 时
      • .spec.updateExistingWorkloadstrue,那么你无需其他额外工作
      • .spec.updateExistingWorkloadsfalse,你需要手动删除被 vArmor 添加的 annotations、appArmorProfiles、seccompProfiles
    • 当防护目标的类型为 Pod 时,您需要重新创建 Pod(确保 Pod 中没有被 vArmor 添加的 annotations、appArmorProfiles、seccompProfiles)
  • 通过 helm 卸载 vArmor