Tetragon基于 eBPF 的安全可观测性 & 运行时增强组件

联合创作 · 2023-09-27 12:13

Tetragon 是 Cilium 开源的基于 eBPF 的安全可观察性和运行时增强组件。

Tetragon 能够检测并对重要的安全事件做出反应,例如

  • 流程执行事件
  • 系统调用活动
  • I/O 活动,包括网络和文件访问

在 Kubernetes 环境中使用时,Tetragon 是 Kubernetes 感知的 —— 也就是说,它了解 Kubernetes 身份,例如命名空间、Pod 等——因此可以针对单个工作负载配置安全事件检测。

功能概述

eBPF 实时

Tetragon 是一个运行时安全实施和可观察性工具。这意味着 Tetragon 直接在内核的 eBPF 中应用策略和过滤。它直接在内核中执行过滤、阻止和对事件做出反应,而不是将事件发送到用户空间代理。

对于可观察性用例,直接在内核中应用过滤器会大大减少观察开销。通过避免昂贵的上下文切换和唤醒,特别是对于高频事件,例如发送、读取或写入操作,eBPF 减少了所需的资源。

相反,Tetragon 在 eBPF 中提供了丰富的过滤器(文件、套接字、二进制名称、命名空间/功能等),允许用户在其特定上下文中指定重要且相关的事件,并仅将这些事件传递给用户空间代理。

eBPF 灵活性

Tetragon 可以连接到 Linux 内核中的任何函数并过滤其参数、返回值、Tetragon 收集的有关进程的相关元数据(例如,可执行文件名称)、文件和其他属性。通过编写跟踪策略,用户可以解决各种安全性和可观察性用例。

Tetragon 允许在内核深处挂钩,用户空间应用程序无法操作数据结构,避免了系统调用跟踪的常见问题,即数据被错误读取、被攻击者恶意更改或由于页面错误和其他用户/内核边界错误而丢失。许多 Tetragon 开发人员也是内核开发人员。通过利用这个知识库,Tetragon 创建了一组跟踪策略,可以解决许多常见的可观察性和安全用例。

eBPF 内核感知

Tetragon 通过 eBPF 可以访问 Linux 内核状态。然后,Tetragon 可以将这个内核状态与 Kubernetes 感知或用户策略相结合,以创建由内核实时执行的规则。这允许注释和强制执行进程命名空间和功能、进程的套接字、进程文件描述符到文件名等等。

例如,当应用程序更改其权限时,我们可以创建一个策略来触发警报,甚至在进程有机会完成系统调用并可能运行其他系统调用之前终止该进程。

开发指南

本地开发入门可以参考开发指南

浏览 8
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报