跳至正文

机器翻译。英文版本为权威来源,母语审校尚未完成。

指南

连接 eBPF 后备

内核级 eBPF 观测器——任何代理都无法规避的文件和网络 I/O 的非协作基础事实,无论代理是否协作都提供清晰层级的覆盖范围

最近更新:

eBPF 后备是非协作的基础事实观测器。它附着在内核系统调用跟踪点上,将文件和网络 I/O 报告为访问映射边,任何用户空间代理都无法规避、禁用或歪曲。协作遥测信任代理诚实报告,后备则不然——它观察的是内核,而非代理。

关于通用数据源模型和 OLIVARES_SOURCES_CONFIG 结构,参见连接数据源。关于后备所补充的协作路径,参见连接 Claude Code

它观测什么

后备检测内核级系统调用——openreadwriteconnectsendtorecvfrom 及其变体——并为每个相关的 I/O 事件发出一个观测结果。读/写分类来自系统调用本身,而非代理声称的内容,因此它的权威性与 pgAudit 的 READ/WRITE 类的权威性相同:内核执行了操作,因此操作发生了。

结果是一个将文件和网络 I/O 归因于主机上进程身份的访问映射边流。这些边馈送与其他所有数据源相同的访问映射

为什么它存在

协作遥测——OpenTelemetry 导出、钩子载荷、MCP 内省——更丰富且更高层,但它是协作的:发出它的是代理。禁用其 OTel 导出器的代理,或从未有导出器的运行时,完全不产生协作信号。

eBPF 后备弥补了这个缺口。停止导出遥测数据的代理仍然发出系统调用;内核仍然看到它们;后备仍然报告它们。这就是连接 Claude Code 文档引用的基础事实:

真正非协作活动的基础事实是内核/eBPF 后备,而非这个启发式。

那个启发式——检测一个停止发出 OTel 但其钩子仍在触发的会话——是协作侧的异常信号。后备使非协作侧变得可观测。

覆盖范围层级

后备在保真度模型中属于 clean 层级。读与写从系统调用确定,而非从代理声称的内容。保真度文档将其与 pgAudit 和 CloudTrail 并列:“内核级 eBPF 基础事实。“清晰的覆盖范围不意味着清晰的归因——参见下面的局限。

何时使用它 vs 协作观测

它们互补;不互相替代。

  • 协作(OTel、钩子、MCP) ——更高层的上下文:会话、工具、模型、成本。更丰富的映射。
  • 非协作(eBPF) ——反规避保证:无论代理选择报告什么,在内核级别实际发生了什么。

两者都运行。协作路径构建你治理所依据的丰富映射。后备提供不可伪造的底线,捕捉协作路径遗漏的任何内容——规避、配置错误或没有遥测的运行时。

部署模型

后备在代理执行的每台主机上运行,在标准 serve 中以数据源类型 ebpf 连接,与 pgaudits3cloudtrailruntimemcpclaude 并列。因为 eBPF 程序附着在主机内核上,每台主机一个实例覆盖所有代理进程。没有按代理的安装步骤。

Linux 能力

eBPF 跟踪需要提升的内核权限。至少,加载 eBPF 程序的进程需要 CAP_BPFCAP_PERFMON 系列中的能力(或等效的,取决于内核版本——较旧的内核将这些折叠到 CAP_SYS_ADMIN 中)。

:::caution 确切的能力集取决于你的内核版本、发行版和安全模块(AppArmor、SELinux)。查阅连接器自己的文档了解所需的精确标志——本页不列出确定的集合,因为它在不同环境中不同。在容器中运行需要显式的能力授予(可能还需要 BPF 文件系统挂载);锁定的 Kubernetes Pod 需要 securityContext 覆盖。 :::

配置

OLIVARES_SOURCES_CONFIG 中选择 kind: "ebpf",使用与其他连接器相同的数据源条目结构:

{
  "sources": [
    {
      "name": "host-backstop",
      "kind": "ebpf",
      "tenant": "acme",
      "config": {}
    }
  ]
}

确切的配置键由连接器拥有;阅读其描述符而非复制未验证的模式。上面的 config 对象故意为空——本页遵循与连接数据源相同的规则:我们仅文档化已验证的键,我们没有从这些 Web 文档验证 eBPF 连接器的配置界面。

反规避属性

后备不依赖代理协作:

  • 禁用其 OTel 导出器的代理仍然生成内核系统调用——后备看到这些。
  • 在协作遥测中说谎的代理无法对内核说谎。系统调用记录是权威的。
  • 错误报告 readOnlyHint / destructiveHint 的 MCP 服务器不影响后备观测到的内容——那些是它不消费的协作信号。

连接 Claude Code 中的协作侧启发式——一个 OTel 沉默但钩子仍在触发的会话——是一个检测信号。后备是该信号指向的基础事实。

诚实的局限

后备观测内核看到的内容,而非代理意图的内容。这种区别很重要:

  • 归因在进程级别。 I/O 归因于进程身份(PID、UID、二进制路径)。如果多个代理共享一个进程,后备无法分离它们的访问——归因为 approximate,而非 firm。按代理归因需要按代理身份信号;参见保真度
  • 无会话或工具上下文。 后备看到的是系统调用,不是会话或工具名称。它无法告诉你哪个工具调用触发了文件写入——只知道进程写了文件。协作路径携带该上下文。
  • 内核版本依赖。 eBPF 跟踪点的可用性因内核版本而异。确认连接器自己文档中的最低内核版本。
  • 无载荷内容。 与其他所有数据源一样,后备发出标识符和读/写分类,绝不包含文件内容或网络载荷。

相关内容

搜索文档