Cilium / eBPF
数据面内核 已把东西向包路径钉到 identity 与 map;可观测性
· 网络观测 与 linux/ebpf-security
对照过 Tetragon 与
Falco。中间仍缺一层:一次安全事件如何经进程血缘与
hook、TracingPolicy 选择器如何在内核过滤、Override/SIGKILL
各自停在哪一步、导出过滤为何与 tetra
所见不一致,以及相对 Falco / auditd / 仅 CNP+Hubble
何时不该上 Tetragon。
本系列回答:Tetragon 运行时安全里延迟、丢失与误阻断落在哪一层,何时内核策略的税不值得付。
写:
- 进程模型(
exec_id/ 血缘 / K8s 富化)、Sensor 与 Hook、TracingPolicy 与选择器。 - 文件/网络/能力观测面、Override 与 Signal、事件导出与节流。
- 排障坐标系、相对 Falco / auditd / Cilium CNP·Hubble 的选型。
不写:Helm 百科、verifier/JIT 重讲、Cilium 东西向重讲、MITRE 规则库全书、未实测 CPU% 排行。对照综述见 observability/15;eBPF VM 见 ebpf/;东西向数据面见 cilium/。
系列状态:01–16 已发布(2026-08-18)。 规划见 PLAN.md。机制结论钉源码 tag v1.7.0,不以
tetragon.io/docs/live 站点冒充该版本。无真实 Tetragon 节点则不粘贴伪造tetra getevents/ JSON 输出。
版本锚定:Tetragon v1.7.0(源码 tag v1.7.0,2026-04-29)。与 Cilium 数据面版本正交;第三方升版须显式标注。
spec.nodeSelector与 domain sharding 晚于该 tag,不作为本系列能力。
适合谁看
- 平台 / 安全工程,要把「装了 Tetragon」推进到「能写可审计策略并归因」。
- 读过 Cilium 数据面系列,需要运行时安全排除树叶机制坐标的读者。
- 在 Tetragon、Falco、主机 audit、纯网络策略之间做路径选型的架构师。
与已有系列的分工
| 维度 | cilium/ / observability/15 | 本系列 |
|---|---|---|
| 定位 | 东西向 CNI / 工具对照 | 运行时安全事件与强制执行路径 |
| 深度 | identity→map;产品勾选 | TracingPolicy→hook→导出/阻断、排障轴 |
| 对照 | Hubble flow、Falco 口号 | 显式排除树;不重写 CNP/Hubble |
读法:只要「Tetragon 大概能杀进程」→ observability/15 足够;要「加载路径撞名、Override 拦不住副作用、导出与 gRPC 不一致」→ 本系列 01 → 02 → 06 → 07 → 10 → 13。
一、这个领域最值得关注的 5 个问题
- 一次安全事件从 hook 到导出,丢失落在哪一层? → 第 1–5、7、11–13 篇。
exec_id/ 进程树相对/proc重建消除了什么? → 第 2、8、13 篇。- 为何 TracingPolicy 已滤,
tetra仍可能看见「不该出现」的事件? → 第 4、6–7 篇。 - Override 与 SIGKILL 各自保证什么;TOCTOU 边界在哪? → 第 10、13 篇。
- 何时选 Tetragon,而非 Falco / auditd / 仅 CNP+Hubble? → 第 14–16 篇。
二、篇目依赖关系与推荐阅读路径
flowchart TD
overview["01 Overview"] --> proc["02 Process Model"]
proc --> hooks["03 Sensors Hooks"]
hooks --> export["04 Event Export"]
export --> agent["05 Agent Lifecycle"]
agent --> tp["06 TracingPolicy"]
tp --> sel["07 Selectors"]
sel --> k8s["08 K8s Identity"]
k8s --> faces["09 File Net Cap"]
faces --> enf["10 Enforcement"]
enf --> thr["11 Throttling"]
thr --> ops["12 Ops SIEM"]
ops --> trouble["13 Troubleshoot"]
trouble --> vs["14 vs Alternatives"]
vs --> rth["15 Runtime Hooks"]
rth --> select["16 Selection"]
overview --> select
| 路径 | 篇目 | 适合 |
|---|---|---|
| 必读核心 | 1 → 2 → 6 → 7 → 10 → 13 | 快速建立坐标系 |
| 事件与导出 | 3 → 4 → 11 → 12 | 管道与丢失归因 |
| 对照选型 | 1 → 14 → 16 | 路径选型 |
| 完整通读 | 1 → … → 16 | 系统掌握 |
三、目录与每篇价值点
第一部分:模型与事件路径(01–05)
- 运行时安全全景
- 相对 cilium / observability / Falco 的缺口;坐标系与 16 篇路线。
- 进程模型
exec_id、血缘、K8s/容器富化、in_init_tree。
- Sensor 与
Hook
- 进程生命周期传感器;kprobe / tracepoint / uprobe / LSM / fentry(v1.7.0)。
- 事件导出路径
- JSON、gRPC、
tetra;export / field / redaction 边界。
- JSON、gRPC、
- Agent
生命周期
- BTF/CO-RE、DaemonSet / 主机安装、三条策略加载路径(kubectl / gRPC / 静态文件)。
第二部分:策略、观测面与强制执行(06–11)
- TracingPolicy
- CRD、加载/卸载、
collectionKey{name, namespace};domain sharding 不作 v1.7.0 能力。
- CRD、加载/卸载、
- 选择器与内核过滤
- 选择器语义;动作挂载点。
- K8s
身份感知策略
TracingPolicyNamespaced、pod/container selector、hostSelector(v1.7.0);不含nodeSelector。
- 文件 /
网络 / 能力观测面
- 典型 hook 模式与失败表象。
- 强制执行
- Override vs Signal;enforcement mode;TOCTOU。
- 节流与观测税
- 事件节流、环缓冲压力、误杀面。
第三部分:运维、对照与收束(12–16)
- 运维与导出工程
- metrics、日志轮转、SIEM 接线边界。
- 排障坐标系
- 无事件、策略不生效、误阻断、导出缺口。
- 对照替代路径
- Falco、auditd、Cilium CNP/Hubble、seccomp。
- Runtime
Hooks 与容器边界
- 运行时钩子相对纯内核 hook 的分工。
- 选型收束与开放问题
- 排除树;回收 Cilium 16 的 Tetragon 指针。
四、延伸阅读
- Cilium / eBPF 数据面内核
- Cilium 选型收束(Tetragon 指针)
- 网络可观测性:Hubble / Tetragon 对照
- eBPF 安全:Falco / Tetragon
- eBPF 内核实现
- Envoy Gateway / Gateway API
- 全部系列索引
读完这篇,下一步读什么
优先读同系列或同问题的下一篇,把单篇消费变成主题集群。
【Tetragon / eBPF】运行时安全全景:缺口、五轴坐标系与 16 篇路线
相对 Cilium 数据面、可观测对照与 Falco 口号,钉清 Tetragon v1.7.0 运行时安全内核缺口;定义进程血缘、Sensor/Hook、策略加载、过滤分层、强制执行五条坐标系,给出 16 篇阅读路线。
【Tetragon / eBPF】强制执行:Override 与 SIGKILL 各自保证什么
按 Tetragon v1.7.0 官方 Enforcement 文档钉死:Override 使函数不执行并返回 argError;SIGKILL 终止进程但不保证当前 syscall 无副作用;monitor 与 enforce 如何把动作抹掉;以及 Bishop–Dilger–Garfinkel 的 TOCTOU 谱系落到 bpf_enforcer.c 的边界。
【Tetragon / eBPF】进程模型:exec_id、血缘、in_init_tree 与 procfs 回填
钉清 Tetragon v1.7.0 的进程身份:process_exec/exit 字段、exec_id 如何由 node:ktime:pid 生成、execve_map 与用户态 cache 的分工、in_init_tree 如何区分 kubectl exec 注入,以及 fork 时父不在 map 则子不入图的失败路径。
【Tetragon / eBPF】Sensor 与 Hook:进程传感器、kprobe、tracepoint、uprobe、LSM 与 fentry
钉清 Tetragon v1.7.0 内置 __base__ 进程传感器与 TracingPolicy 动态 hook 的分工:kprobe/kretprobe、tracepoint/rawtp、uprobe/USDT、LSM 与 fentry 各自能观察什么、依赖哪些内核能力,以及选错 hook 类型时的失败表象。