CNCF 졸업 프로젝트인 Cilium에서 파생된 프로젝트인 Tetragon의 내부 구조에 대해서 알아보려고 한다. 탐지 규칙을 작성, 정의한 규칙들이 어떻게 적용되어 동작하는지를 중점적으로 정리 해보겠다.

출처
Her, Jin, et al. "An In-Depth Analysis of eBPF-Based System Security Tools in Cloud-Native Environments." IEEE Access (2025).
다른 eBPF 기반 도구들과 마찬가지로 User Space와 Kernel Space를 분리하여 생각해야한다. 실질적인 이벤트를 수집하는 역할은 eBPF Program 즉,Kernel Space에서 이루어지고 탐지 규칙 적용 및 관리는 User Space에서 이루어진다고 생각하면 된다.
먼저 User Space에 Observer, SensorManager, Informer 세 가지 구성 요소로 이루어져 있다.
Kernel Space에는 eBPF Program, eBPF Map이 존재한다.
일반적으로 다른 eBPF 기반 도구들은 고정된 Hook Point를 사용하는 매커니즘을 갖지만, Tetragon은 SensorManager가 eBPF Program을 로드할 때 Hook Point를 동적으로 결정할 수 있어 유연성이 있다. 하지만 이러한 특성으로 eBPF Program 부착 단계에서 추가적인 오버헤드가 있다.
앞서 언급한 TracingPolicy는 사용자가 정의한 탐지 정책 파일을 말한다. yaml 형식으로 작성되고, 이 정책 파일에 부착할 Hook Point, 함수, 매개변수 등을 and or 조건을 통해 정의한다. 정책이 배포되는 워크플로우는 다음과 같다.
또한 사용자는 정책 적용시에 kubectl apply 명령으로 쉽게 정책을 수정 및 적용할 수 있다. 이때 정책 수정으로 인한 다운타임이 발생하지 않는다는 것이 장점 중 하나이다.