跳到主要内容

接口说明

English | 简体中文

VarmorPolicy / VarmorClusterPolicy

Spec

字段子字段子字段描述
targetkind
string
-用于指定防护目标的 Workloads 类型
可用值: Deployment, StatefulSet, DaemonSet, Pod
name
string
-可选字段,用于指定防护目标的对象名称
containers
string array
-可选字段,用于指定防护目标的容器名,如果为空默认对 Workloads 中的所有容器开启沙箱防护(注:不含 initContainers, ephemeralContainers)
selector
LabelSelector
-可选字段,用于根据标签选择器识别防护目标,并开启沙箱防护
policyenforcer
string
-指定要使用的 LSM,可用值: AppArmor, BPF, Seccomp, AppArmorBPF, AppArmorSeccomp, BPFSeccomp, AppArmorBPFSeccomp
mode
string
-用于指定防护模式,不同模式的含义详见 内置规则
可用值:AlwaysAllow, RuntimeDefault, EnhanceProtect, BehaviorModeling, DefenseInDepth
enhanceProtecthardeningRules
string array
可选字段,用于指定要使用的内置加固规则,详见 内置规则
attackProtectionRules
AttackProtectionRules array
可选字段,用于指定要使用的内置规则,详见 内置规则
vulMitigationRules
string array
可选字段,用于指定要使用的内置规则,详见 内置规则
appArmorRawRules
string array
可选字段,用于设置自定义的 AppArmor 黑名单规则,参见 AppArmor 语法
bpfRawRules
BpfRawRules array
可选字段,用于支持用户设置自定义的 BPF 黑名单规则
syscallRawRules
LinuxSyscall array
可选字段,用于支持用户使用 Seccomp enforcer 设置自定义的 Syscall 黑名单规则。请参考此文档来制定自定义规则。
privileged
bool
可选字段,若要对特权容器进行加固,请务必将此值设置为 true。若为 false,将在 RuntimeDefault 模式的基础上构造 AppArmor/BPF Profiles。若为 ture,则在 AlwaysAllow 模式的基础上构造 AppArmor/BPF Profiles。

注意:当为 true 时,vArmor 不会为目标构造 Seccomp Profiles(默认值:false)
auditViolations
bool
可选字段. 用于审计违反沙箱策略的行为。此特性当前仅支持 AppArmor enforcer,任何违反沙箱策略的行为都会被记录到系统的审计日志中。若您使用 syslog 或 rsyslog,日志文件的默认路径为 /var/log/kern.log。(默认值:false)
modelingOptionsduration
int
动态建模的时间(单位:分钟)[实验功能]
updateExistingWorkloads
bool
--可选字段,用于指定是否对符合条件的工作负载进行滚动更新,从而在 Policy 创建或删除时,对目标工作负载开启或关闭防护(默认值:false)

注意:vArmor 只会对 Deployment, StatefulSet, or DaemonSet 类型的工作负载进行滚动更新,如果 .spec.target.kind 为 Pod,需要您自行重建 Pod 来开启或关闭防护。
PLACEHOLDER_PLACEHOLD

AttackProtectionRules

字段描述
rules
string array
要使用的内置规则列表,详见 内置规则
targets
string array
可选字段,仅对指定的可执行文件列表开启 Rules 中的内置规则,此功能仅支持 AppArmor enforcer
PLACEHOLDER

BpfRawRules

字段子字段描述
files
FileRule array
pattern
string
任意符合策略语法的文件路径字符串(最大长度 128 bytes),用于匹配文件路径、文件名称
文件匹配语法参见 BPF enforcer 语法
permissions
string array
禁止使用的权限,其中 write 权限隐式包含 append, rename, hard link, symbol link 权限
可用值:read(r), write(w), append(a), exec(e)
processes
FileRule array
-同上
network
NetworkRule
egresses
NetworkEgressRule array
对外联请求进行访问控制
ptrace
PtraceRule
strictMode
bool
可选字段,true 代表对所有(目标、来源)进程进行限制,false 代表仅对容器外的(目标、来源)进程进行限制(默认值:false)
permissions
string array
禁止使用的权限,可用值: trace, read, traceby, readby
- trace: 禁止 trace 其他目标进程
- read: 禁止 read 其他目标进程
- traceby: 禁止被其他来源进程 trace(宿主机进程除外)
- readby: 禁止被其他来源进程 read(宿主机进程除外)
mounts
MountRule array
sourcePattern
string
任意符合策略语法的文件路径字符串(最大长度 128 bytes),用于匹配 MOUNT(2) 的 source,UMOUNT(2) 的 target,以及 MOVE_MOUNT(2) 的 from_pathname
文件匹配语法参见 BPF enforcer 语法
fstype
string
任意字符串(最大长度 16 bytes),用于匹配文件系统类型,* 代表匹配任意文件系统
flags
string array
禁止使用的 mount flags,它们与 AppArmor 的 MOUNT FLAGS 类似,其中 all 代表匹配所有 flags
可用值:all, ro(r, read-only), rw(w), suid, nosuid, dev, nodev, exec, noexec, sync, async, mand, nomand, dirsync, atime, noatime, diratime, nodiratime, silent, loud, relatime, norelatime, iversion, noiversion, strictatime, nostrictatime, remount, bind(B), move(M), rbind(R), make-unbindable, make-private(private), make-slave(slave), make-shared(shared), make-runbindable, make-rprivate, make-rslave, make-rshared, umount
PLACEHOLDER_PLACEHOLDER_PLACEHOD

NetworkEgressRule

字段描述
ipBlock
string
可选字段,可使用任意标准的 CIDR,支持 IPv6。用于对指定 CIDR 范围内的 IP 地址进行外联限制,例如
* 192.168.1.1/24 代表 192.168.1.0 ~ 192.168.1.255 范围内的 IP 地址
* 2001:db8::/32 代表 2001:db8:: ~ 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff 范围内的 IP 地址
(注:同一个 NetworkEgressRule 中,IPBlock 和 IP 字段互斥,不能同时出现)
ip
string
可选字段,任意标准的 IP 地址,支持 IPv6,用于对特定的 IP 地址进行外联限制
port
int
可选字段,用于对指定的端口进行外联限制,当为空时,默认对(匹配 IP 地址的)所有端口进行外联限制。否则仅对特定端口进行控制
可用值:1~65535
PLACEHOLDER

策略语法

vArmor 也支持用户在 spec.policy.enhanceProtect.appArmorRawRulesspec.policy.enhanceProtect.bpfRawRules 中根据语法自定义强制访问控制规则。

AppArmor enforcer

AppArmor enforcer 支持用户根据 AppArmor 的语法自定义规则

BPF enforcer (WIP)

BPF enforcer 支持用户根据语法自定义规则,每类规则的数量上限为 50 条。每个节点支持最多对 100 个容器开启沙箱。

  • 文件权限定义

    权限缩写隐含权限备注
    readr-
    rename
    hard link
    禁止读
    禁止利用 rename oldpath newpath 绕过 oldpath 的读限制
    禁止利用 ln TARGET LINK_NAME 绕过 TARGET 的读限制
    writew-
    append
    rename
    hard link
    symbol link
    chmod
    chown
    禁止写
    禁止利用 O_APPEND flag 绕过 map_file_to_perms() 实现追加写操作
    禁止利用 rename oldpath newpath 绕过 newpath 的写限制
    禁止利用 ln TARGET LINK_NAME 绕过 LINK_NAME 的写限制
    禁止利用创建软链接(符号链接)绕过目标文件的写限制
    WIP
    WIP
    execx-禁止执行
    appenda-禁止追加写
  • 文件路径匹配

    BPF enfocer 支持根据路径 Pattern 对文件进行匹配,并支持两种匹配模式(精确匹配、通配匹配),匹配 Pattern 的最大长度限制为 64 字节。

    • 精确匹配

    • 通配匹配

      通配符语法样例备注
      *- 仅用于匹配叶子结点的文件名
      - 匹配 dot 文件,但不匹配 . 和 .. 文件
      - 仅支持单个 *,且不支持 ** 和 * 一起出现
      - fi* 代表匹配任意以 fi 开头的文件名
      - *le 代表匹配任意以 le 结尾的文件名
      - *.log 代表匹配任意以 .log 结尾的文件名
      此通配符的行为可能会在后续版本中发生改变
      **- 在多级目录中,匹配零个、一个、多个字符
      - 匹配 dot 文件,但不匹配 . 和 .. 文件
      - 仅支持单个 **,且不支持 ** 和 * 一起出现
      - /tmp/**/33 代表匹配任意以 /tmp 开头,且以 /33 结尾的文件,包含 /tmp/33
      - /tmp/** 代表匹配任意以 /tmp 开头的文件、目录
      - /tm** 代表匹配任意以 /tm 开头的文件、目录
      - /t**/33 代表匹配任意以 /t 开头,以 /33 结尾的文件、目录
  • 网络地址匹配

    • 当前 vArmor 支持对指定的 IP 地址、IP 地址块(CIDR 块)、端口进行外联访问控制
    • 当指定了 IP 地址、IP 地址块,但未指定端口时,默认对所有端口生效
    • 具体请参见 NetworkEgressRule