【Falco】选型收束与开放问题:排除树与系列边界关闭

💡 原文中文,约7400字,阅读约需18分钟。
📝

内容提要

本文是Falco运行时检测系列终章,通过机制排除树收束选型判断:明确何时该用Falco(自管K8s、能运维五轴、驱动可达),何时不该用(需inline阻断、合规要auditd、驱动不可达等)。回收Tetragon和Envoy Gateway的悬空指针,列出四项开放问题(auto回退可观测性、插件一致性SLO、联合runbook、迭代器默认策略),并给出ADR友好的收束建议。

🔎

延伸解读

排除树:从“看场景”到可证伪判据

本文用机制排除树替代“各有优劣看场景”的模糊选型。每个叶节点对应一个可证伪的机制问题,如是否需要进程/syscall上下文、是否需要inline阻断、合规目标是否为auditd等。这种结构让选型决策可审计、可写入ADR,避免因品牌或历史CVE口号而误判。读者可依据自身条件逐层判断,明确Falco的适用边界。

Falco的甜区与苦区:运维能力是关键

文章强调,Falco的适用不仅取决于技术需求,更取决于团队运维能力。甜区要求能运维五轴(Driver、协商、富化、规则、输出),并能区分“无原始事件”与“有事件无告警”。苦区则包括无法区分这些状态、误将TracingPolicy改写为规则却期望Override等。这提醒读者,选型前需评估自身运维成熟度,而非仅看功能列表。

开放问题:可观测性与一致性待解

系列列出四项开放问题,包括auto回退的可观测性、plugin与syscall路径的一致性SLO、与Tetragon/Cilium的联合runbook、以及BPF iterators默认策略。这些问题均需通过测量或官方文档变更来关闭,而非路线图承诺。读者在部署Falco时,应关注这些未决项,避免在关键场景中依赖未验证的行为。

ADR友好收束:明确否证条件与边界

文章提供ADR友好的收束建议,要求将排除树写入ADR,并附否证条件,如编制减员、需要Override、驱动不可达等。同时明确系列边界:不涉及verifier/JIT/BTF、TracingPolicy、南北向Gateway等,避免重复劳动。这有助于团队在技术决策中留下可追溯的记录,防止未来因人员变动或信息丢失而重开争论。

Q&A

Falco 适合在什么场景下使用?

Falco 适合自管 Kubernetes 集群,已有或愿意维护规则仓库与告警下游,不要求 inline Override,值班能用五轴(Driver、协商、富化、规则、输出/丢事件)说话,且节点上 modern_ebpf 或 kmod 至少一条可达。

哪些情况下不应该使用 Falco?

以下任一情况不应使用 Falco:编制撑不住五轴;需求是 inline Override 或 Signal;合规目标就是主机 audit 账本;节点无法加载 modern_ebpf 且无法部署可用 kmod;把装了 Falco 当成已具备自动遏制;仅因 CVE-2022-26316 历史窗口而弃用。

Falco 与 Tetragon 在功能上有什么区别?

Falco 是用户态规则主路径,适合检测和告警,不支持 inline Override;Tetragon 支持 inline Override,当需要让内核操作不执行时,应选择 Tetragon。

Falco 的 auto 回退存在什么问题?

driver.kind=auto 静默换引擎时,值班难以在不读节点日志全文的情况下证明当前 Driver 行与预期一致,这会影响轴 1 分列证据包,并可能导致按 modern_ebpf 能力集排 kmod 权限。

Falco 的 plugin 与 syscall 主路径的一致性 SLO 是什么?

目前没有明确的 SLO 数字。问题是当 container/k8smeta 元数据为空时,带 plugin 字段的规则可能漏报,需要写成可验收的一致性目标,但本系列不编造数字。

Falco 与 Tetragon/Cilium 的联合 runbook 是什么?

联合 runbook 用于指导故障时先查 Hubble verdict、process_exec 还是 Falco 五轴,以及 identity、exec_id 与 Falco 告警如何在同一张工单引用。目前该 runbook 仍开放,本系列不裁决安装顺序。

Falco 0.44.1 中 BPF iterators 的默认策略是什么?

0.44.0 引入 iterators 辅助 drop recovery,0.44.1 可禁用(容器可用性)。生产默认开还是关,应由谁在 ADR 里钉死,目前默认叙事因环境而异,保持开放。

Falco 的排除树是什么?

排除树是一系列机制判据,用于决定是否使用 Falco。它从是否需要进程/syscall上下文开始,依次判断是否需要 inline Override、合规目标是否为 auditd、规则库是否足够、编制是否撑得住五轴、驱动是否可达,最终导向 Falco 或其他方案。

🏷️

标签

➡️

继续阅读