第 10 篇 钉了部署与特权分叉。本篇回答:成本与噪声落在哪一层,以免误判成「驱动坏了」或「Falco 比 Tetragon 贵百分之几」。 无实测则不写 CPU%;不引用 linux/ebpf-security 里未经本仓库核验的资源表。
「观测税」在这里指:为拿到可判定事件,你在特权面、缓冲内存、syscall 覆盖面、规则求值与下游 sink上付出的机制成本——不是品牌口号里的性能排名。
本篇在系列中的位置
篇目 核心内容 第 10 篇 · driver.kind Helm、auto、least-privileged 第 11 篇 · 观测税与误报面 成本 × 轴;噪声归因 第 12 篇 · 运维与升级 0.43→0.44 成对换驱动 系列目录 全部篇目
版本锚定:Falco 0.44.1。缓冲与丢事件旋钮见
engine.*.buf_size_preset/drop_failed_exit、engine.modern_ebpf.cpus_for_each_buffer、base_syscalls(Advanced Performance Tuning / Falco Is Dropping Syscalls Events)。节流类结论只写已文档化旋钮;不发明「采样百分比」API。
一、双引擎下的权限与部署成本差(机制,非 CPU%)
| 成本维度 | modern_ebpf | kmod | 落轴 |
|---|---|---|---|
| 特权模型 | 可 least-privileged(四能力,见第 10 篇) | 完整特权加载 .ko |
1 |
| 制品形态 | 嵌入 binary,无独立模块构建链 | 预构建 / 本机编译 / 签名与 DKMS | 1 |
异构 auto |
可能在节点间与 kmod 分叉 | 回退落点 | 1 |
| 捕获之后 | 进入同一 libscap → libsinsp → 规则路径 | 同左(协商与缓冲参数可分叉) | 2–4 |
结论要写窄:双引擎的「税」首先差在加载与特权,不差在「用户态规则引擎换成了另一套」。 把 kmod 节点的 privileged 需求写成「Falco 天生比某产品多吃 CPU」,坐标系错了。相对 Tetragon 内核 selector 的税,对照在第 14 篇,本篇不重开。
二、规则噪声
噪声主要落在规则引擎轴与富化轴,表象却常被写成「驱动太吵」:
| 噪声来源 | 机制 | 典型误判 |
|---|---|---|
| 默认规则集过宽 / 环境不匹配 | 合法运维动作命中 | 「要换引擎」 |
| 异常(exceptions)过窄或过宽 | 该抑制的没抑制,或吞掉真阳性 | 「规则坏了」↔︎「没有攻击」 |
| 富化字段空导致条件漂移 | container.* / 路径字段未填 |
同一规则在测试机响、在集群哑 |
| 优先级阴影 | 高优先级规则先吃掉注意力 | 低优先级真信号被值班忽略 |
治理顺序:先确认有原始事件(轴 1–2)且字段已富化(轴 3),再收紧条件/异常(轴 4)。不要用「关掉半个规则仓库」掩盖丢事件(轴 5)。
三、节流 / 采样:只写已文档化边界
0.44.1 没有与 Tetragon
cgroup-rate 同构的「按 cgroup
停投递」开关可抄。文档化的成本旋钮包括:
| 旋钮 | 文档位置(语义) | 作用层 | 注意 |
|---|---|---|---|
buf_size_preset |
引擎段;丢事件排查文 | 轴 2/5 缓冲 | 增大降丢、抬内存;非采样比 |
cpus_for_each_buffer |
modern_ebpf | 轴 2/5 | 多 CPU 共享更大环 |
drop_failed_exit |
引擎段 | 轴 2 | 丢失败 exit,缩小流量,改可见集合 |
base_syscalls(custom_set /
repair / all) |
Advanced Performance Tuning | 捕获覆盖面 | 少钩 syscall = 少事件,也少状态修复原料 |
| 规则异常 / 禁用规则 | 规则语言与加载篇 | 轴 4 | 减告警,不减内核进入 scap 的原始流(除非规则不再需要那些 syscall) |
disable_iterators |
0.44.1 modern_ebpf | 轴 5 恢复路径 | 关 iterators 回退 procfs;可用性门,不是「采样」 |
官方丢事件文还建议:审计规则避免无谓回压、必要时去掉
plugin 试验。禁止把未文档化的「随机 sample
10%」写进 runbook。若 live 文档出现新采样键而 tag 0.44.1 的
falco.yaml 没有,以 tag 为准(见第 12
篇)。
四、误报与漏报 → 哪一条轴
| 现象 | 优先轴 | 否证问题 |
|---|---|---|
| 频繁告警但属合法变更 | 4(规则/异常) | 条件是否过宽?异常是否可钉进程/镜像? |
| 规则在实验命中、生产静默 | 3 或 4 | 字段是否空?规则是否未加载? |
| SIEM 无告警,节点 drop 在涨 | 5 | 是背压/缓冲丢,还是 sink 配错? |
| 完全无 syscall 事件 | 1–2 | 引擎是否加载?API/Schema 是否协商成功? |
auto 后行为突变 |
1 | 实际引擎是否已换?特权模型是否仍匹配? |
误报(false positive)与漏报(false negative)都要先点名轴,再改 YAML。把漏报默认写成「攻击者绕过了 eBPF」,会跳过缓冲丢弃与富化空洞这类可核对原因。
五、禁止未测排行榜
| 禁止写法 | 原因 |
|---|---|
| 「Falco 比 Tetragon 少/多 X% CPU」 | 本系列无实测;站内旧对照表不引用 |
| 「kmod 一定比 modern_ebpf 更重」 | 未声明 workload / 内核 / 规则集则不可比 |
| 「调高 preset 就零丢包」 | 官方只给调参方向,不保证完备性 |
| 用营销 benchmark 代替五轴归因 | C 级线索不能支撑机制结论 |
成本讨论的合格形态是上表那种 成本 × 轴:说清付在特权、内存、覆盖面还是告警噪声上。开放争论仍是第 1 篇留下的:内核过滤完整性 vs 用户态规则可移植性——用失败模式比较,不用未测排名。
参考资料
规范 / 官方文档(A)
- Falco Advanced Performance
Tuning(
base_syscalls) - Falco Falco Is Dropping Syscalls
Events(
buf_size_preset、规则回压、plugin) - Falco 0.44.1
falco.yaml:engine.modern_ebpf.disable_iterators等 - Kernel Events least-privileged(权限成本,回指第 10 篇)
本系列
- 第 5 篇 · 丢事件与缓冲;第 6–8 篇 规则与输出
- PLAN.md §五实验台账(无伪造 pps)
上一篇:部署与 driver.kind
下一篇:运维与升级
读完这篇,下一步读什么
优先读同系列或同问题的下一篇,把单篇消费变成主题集群。
【Falco】排障坐标系:五轴否证与双引擎证据包
按 Falco 五轴映射无事件、协商失败、富化空洞、规则未命中与输出/丢事件;强调先点名轴、modern_ebpf 与 kmod 分列证据包;并说明不可与 Tetragon 五轴混因果。
【Falco】丢事件与缓冲:drop 归因与 BPF iterators 门
区分驱动/用户态缓冲丢事件与规则未命中:钉清 buf_size_preset 与缓冲维度、drop 指标语义、0.44 BPF iterators 愈合路径,以及 0.44.1 可禁用 iterators 的容器门与双引擎证据包差。
【Falco】规则语言与引擎:条件、优先级与异常
钉清 Falco 0.44.1 规则轴:YAML 结构、条件求值与字段依赖、priority 与 exceptions 的语义差、引擎在 libsinsp 中的位置,以及条件永远假与异常过宽两类失败表象。
Falco / 运行时检测:从双引擎驱动到规则引擎
补齐站内 Tetragon 排除树与产品对照之上的 Falco 检测内核:modern_ebpf 与 kmod 双引擎、libscap/libsinsp、规则引擎与输出,并以排障与相对 Tetragon/auditd/seccomp 的选型收束。