Tetragon#

Tetragon - инструмент безопасности, аудита и мониторинга уровня процессов в Kubernetes. Он использует технологию eBPF для отслеживания системных вызовов (syscalls), выполнения команд, сетевой активности и других событий внутри контейнеров и хостовых систем без необходимости модификации приложений.

Основные задачи и возможности
  • Отслеживание выполнения команд (exec tracing):

    Регистрирует запуск бинарных файлов внутри pod, что позволяет выявлять подозрительную активность (например, запуск bash, wget или nc).

  • Контроль безопасности с помощью политик eBPF:

    Позволяет блокировать или предупреждать о выполнении определенных команд по правилам (например, запретить strace или tcpdump).

  • Аудит и сбор событий в реальном времени:

    Генерирует события аудита, которые могут быть отправлены в SIEM-системы, Loki, Kafka или другие системы анализа.

  • Интеграция с Cilium и Hubble:

    Работает как часть экосистемы Cilium, дополняя сетевую безопасность детальной видимостью на уровне ОС.

  • Низкий уровень накладных расходов:

    Использование eBPF обеспечивает высокую эффективность и масштабируемость, даже в больших кластерах.

  • Поддержка Kubernetes-native подхода:

    Политики и конфигурации управляются через CRD, что позволяет применять их декларативно, как обычные манифесты.

Примечание

Tetragon не является инструментом по умолчанию в компоненте Security. Его можно установить как инструмент (Tool) или явно включить в список spec.tools при установке компонента Security.

Конфигурация values#

Значения можно переопределить через редактирование инструмента с именем tetragon и указанием нужных values в spec.values. Общее описание конфигурации values для инструментов описано в разделе «Конфигурации инструментов дополнительных компонентов».

imagePullSecrets - секреты для загрузки Docker-образов#

Параметр

Описание

Значение по умолчанию

imagePullSecrets

Настройка imagePullSecrets

[]

priorityClassName - класс приоритета для pod Tetragon#

Параметр

Описание

Значение по умолчанию

priorityClassName

Настройка priorityClassName

""

imagePullPolicy - политика загрузки Docker-образов#

Параметр

Описание

Значение по умолчанию

imagePullPolicy

Политика загрузки образа

"IfNotPresent"

serviceAccount - настройки сервисного аккаунта для Tetragon#

Параметр

Описание

Значение по умолчанию

serviceAccount.create

Создать ресурс

true

serviceAccount.name

Имя ресурса

""

tolerations - толерации для размещения pod Tetragon на узлах#

Параметр

Описание

Значение по умолчанию

tolerations

Настройка tolerations для размещения pod

[{'operator': 'Exists'}]

extraHostPathMounts - дополнительные монтирования путей хоста#

Параметр

Описание

Значение по умолчанию

extraHostPathMounts

Настройка extraHostPathMounts

[]

extraConfigmapMounts - дополнительные монтирования ConfigMap#

Параметр

Описание

Значение по умолчанию

extraConfigmapMounts

Настройка extraConfigmapMounts

[]

extraVolumes - дополнительные тома для pod#

Параметр

Описание

Значение по умолчанию

extraVolumes

Дополнительные тома

[]

dnsPolicy - политика DNS для pod Tetragon#

Параметр

Описание

Значение по умолчанию

dnsPolicy

Политика DNS для pod Tetragon

"Default"

exportDirectory - каталог для файлов экспорта событий#

Параметр

Описание

Значение по умолчанию

exportDirectory

Каталог для размещения файлов экспорта JSON от Tetragon

"/var/run/cilium/tetragon"

hostNetwork - использование сети хоста для pod Tetragon#

Параметр

Описание

Значение по умолчанию

hostNetwork

Определяет, используют ли pod Tetragon сеть хоста

true

tetragon - основные настройки агента Tetragon#

Параметр

Описание

Значение по умолчанию

tetragon.enabled

Включить компонент

true

tetragon.image.override

Переопределение настройки

null

tetragon.image.repository

Репозиторий Docker-образа

"{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-tetragon/tetragon"

tetragon.image.tag

Тег Docker-образа

"v1.3.0"

tetragon.resources

Ресурсные ограничения

{}

tetragon.extraArgs

Настройка extraArgs

{}

tetragon.extraEnv

Дополнительные переменные окружения

[]

tetragon.extraVolumeMounts

Дополнительные тома

[]

tetragon.securityContext.privileged

Настройка privileged

true

tetragon.livenessProbe

Переопределение стандартной livenessProbe для контейнера Tetragon

{}

tetragon.processCacheSize

Tetragon помещает процессы в LRU-кеш для поиска родительских процессов

65536

tetragon.debug

Включение режима отладки Tetragon

false

tetragon.exportFilename

Имя файла для экспорта JSON. Пустая строка отключает экспорт

"tetragon.log"

tetragon.exportFilePerm

Права доступа к файлу экспорта JSON в виде строки

"600"

tetragon.exportFileMaxSizeMB

Размер в мегабайтах для ротации файлов экспорта JSON

10

tetragon.exportFileMaxBackups

Количество ротированных файлов для сохранения

5

tetragon.exportFileCompress

Сжатие ротированных файлов экспорта JSON

false

tetragon.exportRateLimit

Ограничение скорости экспорта событий

-1

tetragon.exportAllowList

Настройка exportAllowList

"{\"event_set\":[\"PROCESS_EXEC\", \"PROCESS_EXIT\", \"PROCESS_KPROBE\", \"PROCESS_UPROBE\", \"PROCESS_TRACEPOINT\", \"PROCESS_LSM\"]}"

tetragon.exportDenyList

Настройка exportDenyList

"{\"health_check\":true}\n{\"namespace\":[\"\", \"cilium\", \"kube-system\"]}"

tetragon.fieldFilters

Настройка fieldFilters

""

tetragon.redactionFilters

Настройка redactionFilters

""

tetragon.clusterName

Настройка clusterName

""

tetragon.enableK8sAPI

Настройка enableK8sAPI

true

tetragon.enableProcessCred

Настройка enableProcessCred

false

tetragon.enableProcessNs

Настройка enableProcessNs

false

tetragon.btf

Настройка btf

""

tetragon.commandOverride

Настройка commandOverride

[]

tetragon.argsOverride

Настройка argsOverride

[]

tetragon.prometheus.enabled

Включение экспозиции метрик Tetragon

true

tetragon.prometheus.address

Адрес для экспозиции метрик

""

tetragon.prometheus.port

Порт для экспозиции метрик

2112

tetragon.prometheus.metricsLabelFilter

Список меток метрик через запятую

"namespace,workload,pod,binary"

tetragon.prometheus.serviceMonitor.enabled

Создание ресурса ServiceMonitor для pod Tetragon

false

tetragon.prometheus.serviceMonitor.labelsOverride

Набор меток для ресурса ServiceMonitor

{}

tetragon.prometheus.serviceMonitor.extraLabels

Дополнительные метки для ServiceMonitor Tetragon

{}

tetragon.prometheus.serviceMonitor.scrapeInterval

Интервал сбора метрик

"10s"

tetragon.grpc.enabled

Включение экспозиции gRPC Tetragon

true

tetragon.grpc.address

Адрес для экспозиции gRPC

"localhost:54321"

tetragon.gops.enabled

Включение экспозиции gops-сервера

true

tetragon.gops.address

Адрес для экспозиции gops

"localhost"

tetragon.gops.port

Порт для экспозиции gops

8118

tetragon.pprof.enabled

Включение экспозиции pprof-сервера

false

tetragon.pprof.address

Адрес для экспозиции pprof

"localhost"

tetragon.pprof.port

Порт для экспозиции pprof

6060

tetragon.enablePolicyFilter

Включение фильтра политик

true

tetragon.enablePolicyFilterDebug

Включение отладочных сообщений фильтра политик

false

tetragon.enableMsgHandlingLatency

Включение мониторинга задержек

false

tetragon.healthGrpc.enabled

Включение gRPC-сервера проверки состояния

true

tetragon.healthGrpc.port

Порт проверки состояния

6789

tetragon.healthGrpc.interval

Интервал проверки состояния

10

tetragon.hostProcPath

Настройка hostProcPath

"/proc"

tetragon.ociHookSetup.enabled

Настройка enabled

false

tetragon.ociHookSetup.interface

Настройка interface

"oci-hooks"

tetragon.ociHookSetup.installDir

Настройка installDir

"/opt/tetragon"

tetragon.ociHookSetup.failAllowNamespaces

Настройка failAllowNamespaces

""

tetragon.ociHookSetup.securityContext.privileged

Настройка privileged

true

tetragon.ociHookSetup.extraVolumeMounts

Дополнительные тома

[]

tetragon.ociHookSetup.resources

Ресурсные ограничения

{}

tetragon.eventCacheRetries

Настройка eventCacheRetries

15

tetragon.eventCacheRetryDelay

Настройка eventCacheRetryDelay

2

tetragon.enableKeepSensorsOnExit

Настройка enableKeepSensorsOnExit

false

tetragon.processCacheGCInterval

Настройка processCacheGCInterval

"30s"

tetragonOperator - настройки оператора Tetragon#

Параметр

Описание

Значение по умолчанию

tetragonOperator.enabled

Включить оператор Tetragon

true

tetragonOperator.annotations

Аннотации для ресурса

{}

tetragonOperator.podAnnotations

Аннотации для ресурса

{}

tetragonOperator.extraLabels

Метки для ресурса

{}

tetragonOperator.extraPodLabels

Метки для ресурса

{}

tetragonOperator.priorityClassName

priorityClassName для pod Deployment оператора Tetragon

""

tetragonOperator.serviceAccount.create

Создать ресурс

true

tetragonOperator.serviceAccount.annotations

Аннотации для ресурса

{}

tetragonOperator.serviceAccount.name

Имя ресурса

""

tetragonOperator.securityContext

Контекст безопасности

{}

tetragonOperator.podSecurityContext.allowPrivilegeEscalation

Настройка allowPrivilegeEscalation

false

tetragonOperator.podSecurityContext.capabilities.drop

Настройка drop

['ALL']

tetragonOperator.resources.limits.cpu

Настройка cpu

"500m"

tetragonOperator.resources.limits.memory

Настройка memory

"128Mi"

tetragonOperator.resources.requests.cpu

Настройка cpu

"10m"

tetragonOperator.resources.requests.memory

Настройка memory

"64Mi"

tetragonOperator.strategy

Стратегия обновления

{}

tetragonOperator.nodeSelector

Селектор узлов

{}

tetragonOperator.tolerations

tolerations

[{'operator': 'Exists'}]

tetragonOperator.affinity

Правила привязки pod

{}

tetragonOperator.image.override

Переопределение настройки

null (не задано)

tetragonOperator.image.repository

Репозиторий Docker-образа

"{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-tetragon/tetragon-operator"

tetragonOperator.image.tag

Тег Docker-образа

"v1.3.0"

tetragonOperator.image.pullPolicy

Политика загрузки образа

"IfNotPresent"

tetragonOperator.extraVolumes

Дополнительные тома

[]

tetragonOperator.extraVolumeMounts

Дополнительные монтирования томов

[]

tetragonOperator.forceUpdateCRDs

Настройка forceUpdateCRDs

false

tetragonOperator.podInfo.enabled

Включить CRD PodInfo

false

tetragonOperator.tracingPolicy.enabled

Включить создание CRD TracingPolicy

true

tetragonOperator.prometheus.enabled

Включить метрики оператора Tetragon

true

tetragonOperator.prometheus.address

Адрес экспозиции метрик

""

tetragonOperator.prometheus.port

Порт метрик

2113

tetragonOperator.prometheus.serviceMonitor.enabled

ServiceMonitor для pod tetragonOperator

false

tetragonOperator.prometheus.serviceMonitor.labelsOverride

Метки ServiceMonitor

{}

tetragonOperator.prometheus.serviceMonitor.extraLabels

Дополнительные метки ServiceMonitor

{}

tetragonOperator.prometheus.serviceMonitor.scrapeInterval

Интервал метрик

"10s"

export - настройки экспорта событий и логов#

Параметр

Описание

Значение по умолчанию

export.mode

Настройка mode

"stdout"

export.resources

Ресурсные ограничения

{}

export.securityContext

Контекст безопасности

{}

export.filenames

Настройка filenames

["tetragon.log"]

export.stdout.extraEnv

Дополнительные переменные окружения

[]

export.stdout.enabledCommand

Настройка enabledCommand

true

export.stdout.enabledArgs

Настройка enabledArgs

true

export.stdout.commandOverride

Настройка commandOverride

[]

export.stdout.argsOverride

Настройка argsOverride

[]

export.stdout.extraVolumeMounts

Дополнительные тома

[]

export.stdout.image.override

Переопределение настройки

null (не задано)

export.stdout.image.repository

Репозиторий Docker-образа

"{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-hubble-export-stdout/hubble-export-stdout"

export.stdout.image.tag

Тег Docker-образа

"v1.1.0"

crds - управление установкой Custom Resource Definitions#

Параметр

Описание

Значение по умолчанию

crds.installMethod

Метод установки CRD: operator, helm или none

"operator"

rthooks - настройки runtime хуков#

Параметр

Описание

Значение по умолчанию

rthooks.enabled

Включить daemonset Tetragon rthooks

false

rthooks.interface

Метод установки rthooks

""

rthooks.annotations

Аннотации для ресурса

{}

rthooks.extraLabels

Метки для ресурса

{}

rthooks.podAnnotations

Аннотации для ресурса

{}

rthooks.priorityClassName

priorityClassName для pod Tetrargon rthooks

""

rthooks.podSecurityContext

Контекст безопасности для pod Tetrargon rthooks

{}

rthooks.installDir

Каталог хоста для установки бинарного файла tetragon-oci-hook

"/opt/tetragon"

rthooks.failAllowNamespaces

Список пространств имен через запятую

""

rthooks.extraVolumeMounts

Дополнительные монтирования томов для init-контейнера

[]

rthooks.resources

Ресурсы для init-контейнера oci-hook-setup

{}

rthooks.extraHookArgs

Дополнительные аргументы для tetragon-oci-hook

{}

rthooks.ociHooks.hooksPath

Каталог для установки JSON-файла запуска хука

"/usr/share/containers/oci/hooks.d"

rthooks.nriHook.nriSocket

Путь к NRI nriSocket

"/var/run/nri/nri.sock"

rthooks.image.override

Переопределение настройки

null (не задано)

rthooks.image.repository

Репозиторий Docker-образа

"[quay.io/cilium/tetragon-rthooks]"

rthooks.image.tag

Тег Docker-образа

"v0.4"

rthooks.serviceAccount.name

Имя ресурса

""