Перейти к содержимому

eBPF / Tetragon (ядерный резерв)

Источник ebpf — это половина противодействия уклонению карты R/RW. Там, где кооперативный путь видит то, что агент сообщает, этот видит то, что ядро сделало — чтения/записи файлов и исходящие соединения — даже когда агент отключает собственную телеметрию, потому что он работает вне контроля агента.

Его определяют два проектных решения, и оба они и есть его поза безопасности:

  • Он не загружает программы eBPF сам. Tetragon выполняет захват в ядре, развёрнутый как отдельный укреплённый сервис, держащий CAP_BPF + CAP_PERFMON. Коннектор — это потребитель с нулевыми возможностями, только для чтения экспорта событий JSON Tetragon (общий файл/FIFO, режим 0600, или stdin).
  • Он слеп к телам TLS и полезным нагрузкам. Он наблюдает отношения доступа — никогда содержимое.

Репозиторий поставляет эталонное развёртывание в connectors/ebpf/deploy/: укреплённый DaemonSet Tetragon, две TracingPolicy (доступ к файлам, сеть) и вариант Compose для одиночных хостов.

ПолеЗначение
Источник сигналаebpf
Режимфайл read / write, рёбра сетевых соединений (connect)
Инициаторидентичность времени выполнения (процесс/контейнер) — вид identity, никогда не разрешённый агент
Достоверностьвсегда approximate — см. ниже
Уровень охватаядерный резерв

Слово approximate здесь точное, а не скромное: доступ — это достоверность ядра (системный вызов произошёл); то, что ядро не может дать, — это агент: оно знает процесс и cgroup, но не то, каким управляемым агентом это было. Модуль карты доступа повышает атрибуцию, когда источник идентичности привязывает идентичность времени выполнения к агенту.

В Kubernetes примените поставляемый DaemonSet и TracingPolicy:

Окно терминала
kubectl apply -f connectors/ebpf/deploy/tetragon-daemonset.yaml
kubectl apply -f connectors/ebpf/deploy/tracingpolicy-file-access.yaml
kubectl apply -f connectors/ebpf/deploy/tracingpolicy-network.yaml

Tetragon пишет свой экспорт JSON в общий том (/var/run/olivares/tetragon.log); коннектор читает его с другой стороны. На одиночном хосте connectors/ebpf/deploy/docker-compose.yaml — это то же разделение без Kubernetes. Полная архитектура и заметки об укреплении находятся в connectors/ebpf/deploy/README.md.

{
"sources": [{
"name": "node-kernel-backstop",
"kind": "ebpf",
"tenant": "<tenant-id>",
"config": {
"events_path": "/var/run/olivares/tetragon.log",
"detect_evasion": "true"
}
}]
}
КлючПо умолчаниюЗначение
events_path- (stdin)поток событий JSON Tetragon — файл, FIFO или stdin
followtrueпродолжать чтение по мере роста потока
detect_evasionfalseopt-in: помечать известный процесс агента, чья кооперативная телеметрия замолкает, пока ядро всё ещё видит его действия
evasion_window5mльготный период до того, как пропавшее кооперативное соединение будет помечено
agent_signaturesclaude,claude-codeимена исполняемых файлов, классифицируемые детектором как кооперативные агенты
otlp_endpoints127.0.0.1:4317,127.0.0.1:4318конечные точки кооперативной телеметрии, чьи соединения детектор коррелирует

Коннектор потребляет события Tetragon ProcessKprobe (файловые операции и сетевые соединения) и ProcessExit (состояние детектора); ProcessExec используется для контекста атрибуции и никогда не эмитируется как ребро.

Ядерные рёбра присоединяются к карте доступа с атрибуцией к идентичностям времени выполнения, всегда помеченные approximate. Вывод детектора оседает в Security как findings — сессия, которая перестаёт эмитировать, пока ядро всё ещё видит активность, — это в точности тот случай, ради которого существует этот источник:

Представление Security перечисляет findings от детективных источников estate. Представление Security перечисляет findings от детективных источников estate.
  • Его сквозная глубина атрибуции всё ещё подтверждается. Кооперативный путь и собственный аудит хранилища — это проверенные сигналы высокой точности; относитесь к ядерному резерву как к подъёмнику нижней границы, а не как к завершённому первичному источнику (Честность и ограничения).
  • Область охвата Tetragon — это его TracingPolicy. Поставляемые политики покрывают доступ к файлам и сетевые соединения; то, что они не трассируют, не существует в экспорте.
  • Процесс ≠ агент. Без привязки идентичности каждое ядерное ребро остаётся approximate — по замыслу, а не по случайности.