<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tetragon - eBPF-based Security Observability and Runtime Enforcement</title>
    <link>/enterprise/</link>
    <description>Recent content on Tetragon - eBPF-based Security Observability and Runtime Enforcement</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="/enterprise/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Daemon Configuration</title>
      <link>/docs/reference/daemon-configuration/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/daemon-configuration/</guid>
      <description>Tetragon default controlling settings are set during compilation, so configuration is only needed when it is necessary to deviate from those defaults. This document lists those controlling settings and how they can be set as a CLI arguments or as configuration options from YAML files.&#xA;Options The following table list all Tetragon daemon available options and is automatically generated using the tetragon binary --generate-docs flag. The same information can also be retrieved using --help.</description>
    </item>
    <item>
      <title>Development setup</title>
      <link>/docs/contribution-guide/development-setup/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/contribution-guide/development-setup/</guid>
      <description>Building and running Tetragon For local development, you will likely want to build and run bare-metal Tetragon.&#xA;Requirements A Go toolchain with the version specified in the main go.mod; GNU make; A running Docker service (you can use Podman as well); The docker-buildx-plugin (you may already have this); For building tests, libcap and libelf (in Debian systems, e.g., install libelf-dev and libcap-dev). Build everything You can build most Tetragon targets as follows (this can take time as it builds all the targets needed for testing, see minimal build):</description>
    </item>
    <item>
      <title>Events</title>
      <link>/docs/concepts/events/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/concepts/events/</guid>
      <description>Tetragon&amp;rsquo;s events are exposed to the system through either the gRPC endpoint or JSON logs. Commands in this section assume the Getting Started guide was used, but are general other than the namespaces chosen and should work in most environments.&#xA;JSON The first way is to observe the raw json output from the stdout container log:&#xA;kubectl logs -n kube-system -l app.kubernetes.io/name=tetragon -c export-stdout -f The raw JSON events provide Kubernetes API, identity metadata, and OS level process visibility about the executed binary, its parent and the execution time.</description>
    </item>
    <item>
      <title>Example</title>
      <link>/docs/concepts/tracing-policy/example/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/concepts/tracing-policy/example/</guid>
      <description>To discover TracingPolicy, let&amp;rsquo;s understand via an example that will be explained, part by part, in this document:&#xA;Warning This policy is for illustration purposes only and should not be used to restrict access to certain files. It can be easily bypassed by, for example, using hard links. apiVersion: cilium.io/v1alpha1 kind: TracingPolicy metadata: name: &amp;#34;fd-install&amp;#34; spec: kprobes: - call: &amp;#34;fd_install&amp;#34; syscall: false args: - index: 0 type: &amp;#34;int&amp;#34; - index: 1 type: &amp;#34;file&amp;#34; selectors: - matchArgs: - index: 1 operator: &amp;#34;Equal&amp;#34; values: - &amp;#34;/tmp/tetragon&amp;#34; matchActions: - action: Sigkill The policy checks for file descriptors being created, and sends a SIGKILL signal to any process that creates a file descriptor to a file named /tmp/tetragon.</description>
    </item>
    <item>
      <title>Deploy on Kubernetes</title>
      <link>/docs/installation/kubernetes/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/installation/kubernetes/</guid>
      <description>The recommended way to deploy Tetragon on a Kubernetes cluster is to use the Helm chart with Helm 3. Tetragon uses the helm.cilium.io repository to release the helm chart.&#xA;Install To install the latest release of the Tetragon helm chart, use the following command.&#xA;Note You can find the chart and its documentation with all available values for configuration in install/kubernetes/tetragon in the Tetragon repository. You can use any of the values and override them with --set KEY1=VALUE1,KEY2=VALUE2.</description>
    </item>
    <item>
      <title>Monitor Linux Kernel Modules</title>
      <link>/docs/use-cases/host-system-changes/linux-kernel-modules/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/use-cases/host-system-changes/linux-kernel-modules/</guid>
      <description>Monitoring kernel modules helps to identify processes that load kernel modules to add features, to the operating system, to alter host system functionality or even hide their behaviour. This can be used to answer the following questions:&#xA;Which process or container is changing the kernel?&#xA;Which process or container is loading or unloading kernel modules in the cuslter?&#xA;Which process or container requested a feature that triggered the kernel to automatically load a module?</description>
    </item>
    <item>
      <title>Monitor Process Credentials changes at the System Call layer</title>
      <link>/docs/use-cases/linux-process-credentials/syscalls-monitoring/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/use-cases/linux-process-credentials/syscalls-monitoring/</guid>
      <description>Tetragon can hook at the system calls that directly manipulate the credentials. This allows us to determine which process is trying to change its credentials and the new credentials that could be applied by the kernel.&#xA;This answers the questions:&#xA;Which process or container is trying to change its UIDs/GIDs in my cluster?&#xA;Which process or container is trying to change its capabilities in my cluster?&#xA;Before going forward, verify that all pods are up and running, ensure you deploy our Demo Application to explore the Security Observability Events:</description>
    </item>
    <item>
      <title>Persistent enforcement</title>
      <link>/docs/concepts/enforcement/persistent-enforcement/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/concepts/enforcement/persistent-enforcement/</guid>
      <description>This page shows you how to configure persistent enforcement.&#xA;Concept The idea of persistent enforcement is to allow the enforcement policy to continue running even when its tetragon process is gone.&#xA;This is configured with the --keep-sensors-on-exit option.&#xA;When the tetragon process exits, the policy stays active because it&amp;rsquo;s pinned in sysfs bpf tree under /sys/fs/bpf/tetragon directory.&#xA;When a new tetragon process is started, it performs the following actions:&#xA;checks if there&amp;rsquo;s existing /sys/fs/bpf/tetragon and moves it to /sys/fs/bpf/tetragon_old directory; sets up configured policy; removes /sys/fs/bpf/tetragon_old directory.</description>
    </item>
    <item>
      <title>Process execution</title>
      <link>/docs/use-cases/process-lifecycle/process-execution/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/use-cases/process-lifecycle/process-execution/</guid>
      <description>This first use case is monitoring process execution, which can be observed with the Tetragon process_exec and process_exit JSON events. These events contain the full lifecycle of processes, from fork/exec to exit, including metadata such as:&#xA;Binary name: Defines the name of an executable file Parent process: Helps to identify process execution anomalies (e.g., if a nodejs app forks a shell, this is suspicious) Command-line argument: Defines the program runtime behavior Current working directory: Helps to identify hidden malware execution from a temporary folder, which is a common pattern used in malwares Kubernetes metadata: Contains pods, labels, and Kubernetes namespaces, which are critical to identify service owners, particularly in a multitenant environments exec_id: A unique process identifier that correlates all recorded activity of a process As a first step, let&amp;rsquo;s start monitoring the events from the xwing pod:</description>
    </item>
    <item>
      <title>Quick Kubernetes Install</title>
      <link>/docs/getting-started/install-k8s/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/getting-started/install-k8s/</guid>
      <description>Create a cluster If you don’t have a Kubernetes Cluster yet, you can use the instructions below to create a Kubernetes cluster locally or using a managed Kubernetes service:&#xA;GKE AKS EKS Kind The following commands create a single node Kubernetes cluster using Google Kubernetes Engine. See Installing Google Cloud SDK for instructions on how to install gcloud and prepare your account.&#xA;export NAME=&amp;#34;$(whoami)-$RANDOM&amp;#34; export ZONE=&amp;#34;us-west2-a&amp;#34; gcloud container clusters create &amp;#34;${NAME}&amp;#34; --zone ${ZONE} --num-nodes=1 gcloud container clusters get-credentials &amp;#34;${NAME}&amp;#34; --zone ${ZONE} The following commands create a single node Kubernetes cluster using Azure Kubernetes Service.</description>
    </item>
    <item>
      <title>System dump</title>
      <link>/docs/troubleshooting/sysdump/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/troubleshooting/sysdump/</guid>
      <description>Before you report a problem, make sure to retrieve the necessary information from your cluster.&#xA;Tetragon&amp;rsquo;s bugtool captures potentially useful information about your environment for debugging. The tool is meant to be used for debugging a single Tetragon agent node but can be run automatically in a cluster. Note that in the context of Kubernetes, the command needs to be run from inside the Tetragon Pod&amp;rsquo;s container.&#xA;Key information collected by bugtool:</description>
    </item>
    <item>
      <title>Advanced Process execution</title>
      <link>/docs/use-cases/process-lifecycle/advanced-process-execution/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/use-cases/process-lifecycle/advanced-process-execution/</guid>
      <description>Monitor ELF or Flat binaries execution Advanced process execution can be performed by using Tracing Policies to monitor the execve system call path.&#xA;If we want to monitor execution of Executable and Linkable Format (ELF) or flat binaries before they are actually executed. Then the process-exec-elf-begin tracing policy is a good first choice.&#xA;Note The process-exec-elf-begin tracing policy, will not report the different binary format handlers or scripts being executed, but will report the final ELF or flat binary, like the shebang handler.</description>
    </item>
    <item>
      <title>Argument types</title>
      <link>/docs/concepts/tracing-policy/argument_types/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/concepts/tracing-policy/argument_types/</guid>
      <description>Each argument definition specifies data type to be retrieved from kernel argument. The list contains simple POD types and several complex kernel objects that are represented by extracted data type.&#xA;List of described data types:&#xA;sint8, int8 uint8 sint16, int16 uint16 int, sint32, int32 uint32 long, sint64, int64 ulong, uint64, size_t string skb sock char_buf char_iovec filename fd cred const_buf nop bpf_attr perf_event bpf_map bpf_prog user_namespace capability kiocb iov_iter load_info module syscall64 kernel_cap_t cap_inheritable cap_permitted cap_effective linux_binprm data_loc net_device sockaddr socket file dentry path Note All integer types (int8, uint8, int16, uint16, int32, uint32, int64, uint64) support Equal, NotEqual, GT, LT, and Mask operators in matchArgs or matchData.</description>
    </item>
    <item>
      <title>Deploy as a container</title>
      <link>/docs/installation/container/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/installation/container/</guid>
      <description>Install Stable versions To run a stable version, please check Tetragon quay repository and select which version you want. For example if you want to run the latest version which is v1.6.0 currently.&#xA;docker run --name tetragon --rm -d \ --pid=host --cgroupns=host --privileged \ -v /sys/kernel/btf/vmlinux:/var/lib/tetragon/btf \ quay.io/cilium/tetragon:v1.6.0 Unstable-development versions To run unstable development versions of Tetragon, use the latest tag from Tetragon-CI quay repository. This will run the image that was built from the latest commit available on the Tetragon main branch.</description>
    </item>
    <item>
      <title>Filename access</title>
      <link>/docs/use-cases/filename-access/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/use-cases/filename-access/</guid>
      <description>This page shows how you can create a tracing policy to monitor filename access. For general information about tracing policies, see the tracing policy page.&#xA;There are two aspects of the tracing policy: (i) what hooks you can use to monitor specific types of access, and (ii) how you can filter at the kernel level for only specific events.&#xA;Hooks There are different ways applications can access and modify files, and for this tracing policy we focus in three different types.</description>
    </item>
    <item>
      <title>Helm chart</title>
      <link>/docs/reference/helm-chart/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/helm-chart/</guid>
      <description>The Tetragon Helm chart source is available under github.io/cilium/tetragon/install/kubernetes/tetragon and is distributed from the Cilium helm charts repository helm.cilium.io.&#xA;To deploy Tetragon using this Helm chart you can run the following commands:&#xA;helm repo add cilium https://helm.cilium.io helm repo update helm install tetragon cilium/tetragon -n kube-system To use the values available, with helm install or helm upgrade, use --set key=value.&#xA;Values Key Type Default Description affinity object {} crds.installMethod string &amp;quot;operator&amp;quot; Method for installing CRDs.</description>
    </item>
    <item>
      <title>Hook points</title>
      <link>/docs/concepts/tracing-policy/hooks/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/concepts/tracing-policy/hooks/</guid>
      <description>Tetragon can hook into the kernel using kprobes and tracepoints, as well as in user-space programs using uprobes. Users can configure these hook points using the correspodning sections of the TracingPolicy specification (.spec). These hook points include arguments and return values that can be specified using the args and returnArg fields as detailed in the following sections.&#xA;Warning Hooking a system call can introduce time-of-check to time-of-use (TOCTOU) races when the relevant argument is a pointer to user-space memory.</description>
    </item>
    <item>
      <title>Log level</title>
      <link>/docs/troubleshooting/loglevel/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/troubleshooting/loglevel/</guid>
      <description>When debugging, it might be useful to change the log level. The default log level is controlled by the log-level option at startup:&#xA;Enable debug level with --log-level=debug Enable trace level with --log-level=trace Change log level on Kubernetes Warning The Pods of the Tetragon DaemonSet will be restarted automatically after changing the debug Helm value. It is possible to change the log level of Tetragon&amp;rsquo;s DaemonSet Pods by setting tetragon.debug to true.</description>
    </item>
    <item>
      <title>Making changes</title>
      <link>/docs/contribution-guide/making-changes/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/contribution-guide/making-changes/</guid>
      <description>Make sure the main branch of your fork is up-to-date:&#xA;git fetch upstream git checkout main git merge upstream/main For further reference read GitHub syncing a fork documentation.&#xA;Create a PR branch with a descriptive name, branching from main:&#xA;git switch -c pr/${GITHUB_USERNAME_OR_ORG}/changes-to-something main Make the changes you want.&#xA;Test your changes. Follow Development setup and Running tests guides to build and test Tetragon.&#xA;Make sure that all new code is covered by unit and/or end-to-end tests where feasible.</description>
    </item>
    <item>
      <title>Monitor Process Credentials changes at the Kernel layer</title>
      <link>/docs/use-cases/linux-process-credentials/monitor-changes-at-kernel/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/use-cases/linux-process-credentials/monitor-changes-at-kernel/</guid>
      <description>Monitoring Process Credentials changes at the kernel layer is also possible. This allows to capture the new process_credentials that should be applied.&#xA;This process-creds-installed tracing policy can be used to answer the following questions:&#xA;Which process or container is trying to change its own UIDs/GIDs in the cluster?&#xA;Which process or container is trying to change its own capabilities in the cluster?&#xA;In which user namespace the credentials are being changed?</description>
    </item>
    <item>
      <title>Quick Local Docker Install</title>
      <link>/docs/getting-started/install-docker/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/getting-started/install-docker/</guid>
      <description>Note This guide has been tested on Ubuntu 22.04 and 22.10 with respectively kernel 5.15.0 and 5.19.0 on amd64 and arm64 but any recent distribution shipping with a relatively recent kernel should work. See the FAQ for further details on the recommended kernel versions.&#xA;Note that you cannot run Tetragon using Docker Desktop on macOS because of a limitation of the Docker Desktop Linux virtual machine. Learn more about this issue and how to run Tetragon on a Mac computer in this section of the FAQ page.</description>
    </item>
    <item>
      <title>Record Linux Capabilities Usage</title>
      <link>/docs/use-cases/security-profiles/record-linux-capabilities/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/use-cases/security-profiles/record-linux-capabilities/</guid>
      <description>When the kernel needs to perform a privileged operation on behalf of a process, it checks the Capabilities of the process and issues a verdict to allow or deny the operation.&#xA;Tetragon is able to record these checks performed by the kernel. This can be used to answer the following questions:&#xA;What is the capabilities profile of pods or containters running in the cluster?&#xA;What capabilities to add or remove when configuring a security context for a pod or container?</description>
    </item>
    <item>
      <title>BPF programs statistics</title>
      <link>/docs/troubleshooting/bpf-progs-stats/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/troubleshooting/bpf-progs-stats/</guid>
      <description>This page shows you how to monitor BPF programs statistics.&#xA;Concept The BPF subsystem provides performance data for each loaded program and tetragon exports that in metrics or display that in terminal in top like tool.&#xA;In terminal The tetra command allows to display loaded BPF programs in terminal with:&#xA;tetra debug progs The default output shows tetragon programs only and looks like:&#xA;2024-10-31 11:12:45.94715546 +0000 UTC m=+8.038098448 Ovh(%) Id Cnt Time Name Pin 0.</description>
    </item>
    <item>
      <title>Execution Monitoring</title>
      <link>/docs/getting-started/execution/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/getting-started/execution/</guid>
      <description>At the core of Tetragon is the tracking of all executions in a Kubernetes cluster, virtual machines, and bare metal systems. This creates the foundation that allows Tetragon to attribute all system behavior back to a specific binary and its associated metadata (container, Pod, Node, and cluster).&#xA;Observe Tetragon execution events Tetragon exposes the execution events over JSON logs and GRPC stream. The user can then observe all executions in the system.</description>
    </item>
    <item>
      <title>gRPC API</title>
      <link>/docs/reference/grpc-api/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/grpc-api/</guid>
      <description>The Tetragon API is an independant Go module that can be found in the Tetragon repository under api. The version 1 of this API is defined in github.com/cilium/tetragon/api/v1/tetragon.&#xA;tetragon/bpf.proto BpfCmd Name Number Description BPF_MAP_CREATE 0 Create a map and return a file descriptor that refers to the map. BPF_MAP_LOOKUP_ELEM 1 Look up an element with a given key in the map referred to by the file descriptor map_fd. BPF_MAP_UPDATE_ELEM 2 Create or update an element (key/value pair) in a specified map.</description>
    </item>
    <item>
      <title>Network observability</title>
      <link>/docs/use-cases/network-observability/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/use-cases/network-observability/</guid>
      <description>To view TCP connect events, apply the example TCP connect TracingPolicy:&#xA;kubectl apply -f https://raw.githubusercontent.com/cilium/tetragon/main/examples/tracingpolicy/tcp-connect.yaml To start monitoring events in the xwing pod run the Tetragon CLI:&#xA;kubectl logs -n kube-system -l app.kubernetes.io/name=tetragon -c export-stdout -f | tetra getevents -o compact --namespace default --pod xwing In another terminal, start generate a TCP connection. Here we use curl.&#xA;kubectl exec -it xwing -- curl http://cilium.io The output in the first terminal will capture the new connect and write,</description>
    </item>
    <item>
      <title>Options</title>
      <link>/docs/concepts/tracing-policy/options/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/concepts/tracing-policy/options/</guid>
      <description>It&amp;rsquo;s possible to pass options through spec file as an array of name and value pairs:&#xA;spec: options: - name: &amp;#34;option-1&amp;#34; value: &amp;#34;True&amp;#34; - name: &amp;#34;option-2&amp;#34; value: &amp;#34;10&amp;#34; Options array is passed and processed by each hook used in the spec file that supports options. At the moment it&amp;rsquo;s availabe for kprobe and uprobe hooks.&#xA;Kprobe Options: options for kprobe hooks. Uprobe Options: options for uprobe hooks. Kprobe options disable-kprobe-multi: disable kprobe multi link disable-kprobe-multi This option disables kprobe multi link interface for all the kprobes defined in the spec file.</description>
    </item>
    <item>
      <title>Deploy with a package</title>
      <link>/docs/installation/package/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/installation/package/</guid>
      <description>Install Tetragon will be managed as a systemd service. Tarballs are built and distributed along the assets in the releases.&#xA;Note Tetragon as of version 1.0 supports amd64 and arm64 architectures. First download the latest binary tarball, using curl for example to download the amd64 release:&#xA;curl -LO https://github.com/cilium/tetragon/releases/download/v1.6.0/tetragon-v1.6.0-amd64.tar.gz Extract the downloaded archive, and start the install script to install Tetragon. Feel free to inspect the script before starting it.</description>
    </item>
    <item>
      <title>Privileged execution</title>
      <link>/docs/use-cases/process-lifecycle/privileged-execution/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/use-cases/process-lifecycle/privileged-execution/</guid>
      <description>Tetragon also provides the ability to check process capabilities and kernel namespaces access.&#xA;This information would help us determine which process or Kubernetes pod has started or gained access to privileges or host namespaces that it should not have. This would help us answer questions like:&#xA;Which Kubernetes pods are running with CAP_SYS_ADMIN in my cluster?&#xA;Which Kubernetes pods have host network or pid namespace access in my cluster?&#xA;Step 1: Enabling Process Credential and Namespace Monitoring Edit the Tetragon configmap:</description>
    </item>
    <item>
      <title>Running tests</title>
      <link>/docs/contribution-guide/running-tests/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/contribution-guide/running-tests/</guid>
      <description>Tetragon has several types of tests:&#xA;Go tests, composed of unit tests for userspace Go code and Go and BPF code. BPF unit tests, testing specifing BPF functions. E2E tests, for end-to-end tests, installing Tetragon in Kubernetes clusters and checking for specific features. Those tests are running in the Tetragon CI on various kernels1 and various architectures (amd64 and arm64).&#xA;Go tests To run the Go tests locally, you can use:</description>
    </item>
    <item>
      <title>Runtime Hooks</title>
      <link>/docs/concepts/runtime-hooks/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/concepts/runtime-hooks/</guid>
      <description>Applying Kubernetes Identity Aware Policies requires information about Kubernetes (K8s) pods (e.g., namespaces and labels). Based on this information, the Tetragon agent can update the state so that Kubernetes Identify filtering can be applied in-kernel via BPF.&#xA;One way that this information is available to the Tetragon agent is via the K8s API server. Relying on the API server, however, can lead to a delay before the container starts and the policy is applied.</description>
    </item>
    <item>
      <title>Configure Runtime Hooks</title>
      <link>/docs/installation/runtime-hooks/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/installation/runtime-hooks/</guid>
      <description>See Tetragon Runtime Hooks, for an introduction to the topic.&#xA;Install Tetragon with Runtime Hooks We use minikube as the example platform because it supports both cri-o and containerd, but the same steps can be applied to other platforms.&#xA;Setup cluster minikube with CRI-O minikube with Containerd kind (with Containerd) minikube start --driver=kvm2 --container-runtime=cri-o minikube start --driver=kvm2 --container-runtime=containerd Tetragon Runtime Hooks use NRI. NRI is enabled by default starting from containerd version 2.</description>
    </item>
    <item>
      <title>Selectors</title>
      <link>/docs/concepts/tracing-policy/selectors/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/concepts/tracing-policy/selectors/</guid>
      <description>Selectors enable per-hook in-kernel BPF filtering and actions. Each selector defines a set of filters as well as a set of (optional) actions to be performed if the selector filters match. Each hook can contain up to 5 selectors. If no selectors are defined on a hook, the default action (Post, i.e., post an event) will be used.&#xA;Each selector comprises a set of filters:&#xA;matchArgs: filter on the value of arguments.</description>
    </item>
    <item>
      <title>Tags</title>
      <link>/docs/concepts/tracing-policy/tags/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/concepts/tracing-policy/tags/</guid>
      <description>Tags are optional fields of a Tracing Policy that are used to categorize generated events.&#xA;Introduction Tags are specified in Tracing policies and will be part of the generated event.&#xA;apiVersion: cilium.io/v1alpha1 kind: TracingPolicy metadata: name: &amp;#34;file-monitoring-filtered&amp;#34; spec: kprobes: - call: &amp;#34;security_file_permission&amp;#34; message: &amp;#34;Sensitive file system write operation&amp;#34; syscall: false args: - index: 0 type: &amp;#34;file&amp;#34; # (struct file *) used for getting the path - index: 1 type: &amp;#34;int&amp;#34; # 0x04 is MAY_READ, 0x02 is MAY_WRITE selectors: - matchArgs: - index: 0 operator: &amp;#34;Prefix&amp;#34; values: - &amp;#34;/etc&amp;#34; # Writes to sensitive directories - &amp;#34;/boot&amp;#34; - &amp;#34;/lib&amp;#34; - &amp;#34;/lib64&amp;#34; - &amp;#34;/bin&amp;#34; - &amp;#34;/usr/lib&amp;#34; - &amp;#34;/usr/local/lib&amp;#34; - &amp;#34;/usr/local/sbin&amp;#34; - &amp;#34;/usr/local/bin&amp;#34; - &amp;#34;/usr/bin&amp;#34; - &amp;#34;/usr/sbin&amp;#34; - &amp;#34;/var/log&amp;#34; # Writes to logs - &amp;#34;/dev/log&amp;#34; - &amp;#34;/root/.</description>
    </item>
    <item>
      <title>Documentation</title>
      <link>/docs/contribution-guide/documentation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/contribution-guide/documentation/</guid>
      <description>Thank you for taking the time to improve Tetragon&amp;rsquo;s documentation.&#xA;Find the content All the Tetragon documentation content can be found under github.com/cilium/tetragon/docs/content/en/docs.&#xA;Note The main page served from a directory path is named _index.md. For example /docs/contribution-guide is available under /docs/content/en/docs/contribution-guide/_index.md. Style to follow We generally follow the Kubernetes docs style guide k8s.io/docs/contribute/style/style-guide.&#xA;Preview locally To preview the documentation locally, use one of the method below. Then browse to localhost:1313/docs, the default port used by Hugo to listen.</description>
    </item>
    <item>
      <title>File Access Monitoring</title>
      <link>/docs/getting-started/file-events/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/getting-started/file-events/</guid>
      <description>Tracing policies can be added to Tetragon through YAML configuration files that extend Tetragon&amp;rsquo;s base execution tracing capabilities. These policies perform filtering in kernel to ensure only interesting events are published to userspace from the BPF programs running in kernel. This ensures overhead remains low even on busy systems.&#xA;The instructions below extend the example from Execution Monitoring with a policy to monitor sensitive files in Linux. The policy used is file_monitoring.</description>
    </item>
    <item>
      <title>Install tetra CLI</title>
      <link>/docs/installation/tetra-cli/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/installation/tetra-cli/</guid>
      <description>This guide presents various methods to install tetra in your environment.&#xA;Install the latest release Autodetect your environment This shell script autodetects the OS and the architecture, downloads the archive of the binary and its SHA 256 digest, compares that the actual digest with the supposed one, installs the binary, and removes the download artifacts.&#xA;Note This installation method requires a working Go toolchain, curl(1), and the sha256sum(1) utilities. For Go, see how to install the latest Go release and for the curl and checksum utility, it is usually distributed in common Linux distribution but you can usually find them respectively under the package curl and coreutils.</description>
    </item>
    <item>
      <title>Kubernetes Identity Aware Policies</title>
      <link>/docs/concepts/tracing-policy/k8s-filtering/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/concepts/tracing-policy/k8s-filtering/</guid>
      <description>Motivation Tetragon is configured via TracingPolicies. Broadly speaking, TracingPolicies define what situations Tetragon should react to and how. The what can be, for example, specific system calls with specific argument values. The how defines what action the Tetragon agent should perform when the specified situation occurs. The most common action is generating an event, but there are others (e.g., returning an error without executing the function or killing the corresponding process).</description>
    </item>
    <item>
      <title>Metrics</title>
      <link>/docs/reference/metrics/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/metrics/</guid>
      <description>Tetragon Health Metrics tetragon_bpf_error_metrics_total The total and type of errors encountered exposed via the BPF error metrics API. Internal use only.&#xA;label values error 22 error_name EINVAL file_name bpf_d_path.h helper_func FnProbeRead line_number 166 tetragon_bpf_missed_events_total Number of Tetragon perf events that are failed to be sent from the kernel.&#xA;label values error E2BIG, EAGAIN, EBUSY, EINVAL, ENOENT, ENOSPC, unknown msg_op 13, 14, 15, 16, 23, 24, 25, 26, 27, 28, 5, 7 tetragon_build_info Build information about tetragon</description>
    </item>
    <item>
      <title>Namespace access monitoring</title>
      <link>/docs/use-cases/process-lifecycle/namespace-access/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/use-cases/process-lifecycle/namespace-access/</guid>
      <description>Tetragon can monitor Linux namespace operations to detect when processes change their namespaces. This is particularly useful for detecting container escapes where a process attempts to access host namespaces using tools like nsenter.&#xA;Use Case: Detecting Container Escapes via Namespace Changes A common container escape technique involves using nsenter to switch into the host&amp;rsquo;s namespaces. Even if a container is running with restricted privileges, monitoring setns syscalls helps detect attempts to break out of the container&amp;rsquo;s isolation.</description>
    </item>
    <item>
      <title>Enforcement Mode</title>
      <link>/docs/concepts/tracing-policy/mode/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/concepts/tracing-policy/mode/</guid>
      <description>Beyond monitoring, Tetragon tracing policies include enforcement actions. Configuring the mode of a policy allows you to disable enforcement in a policy, without modifying the policy itself.&#xA;A tracing policy can be set in two modes:&#xA;monitoring: enforcement operations are elided enforcement: enforcement operations are respected and performed Using the tetra CLI, you can inspect the mode of each policy. For example:&#xA;tetra tracingpolicy list Will produce out similar to:</description>
    </item>
    <item>
      <title>Event throttling</title>
      <link>/docs/concepts/cgroup-rate/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/concepts/cgroup-rate/</guid>
      <description>This page shows you how to configure per-cgroup rate monitoring.&#xA;Concept The idea is that tetragon monitors events rate per cgroup and throttle them (stops posting its events) if they cross configured threshold.&#xA;The throttled cgroup is monitored and if its traffic gets stable under the limit again, it stops the cgroup throttling and tetragon resumes receiving the cgroup&amp;rsquo;s events.&#xA;The throttle action generates following events:&#xA;THROTTLE start event is sent when the group rate limit is crossed THROTTLE stop event is sent when the cgroup rate is again below the limit stable for 5 seconds Note The threshold for given cgroup is monitored per CPU.</description>
    </item>
    <item>
      <title>Network Monitoring</title>
      <link>/docs/getting-started/network/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/getting-started/network/</guid>
      <description>In addition to file access monitoring, Tetragon&amp;rsquo;s tracing policies also support monitoring network access. In this section, you will see how to monitor network traffic to &amp;ldquo;external&amp;rdquo; destinations (destinations that are outside the Kubernetes cluster or external to the Docker host where Tetragon is running). These instructions assume you already have Tetragon running in either Kubernetes or Docker, and that you have deployed the Cilium demo application.&#xA;Monitoring Kubernetes network access First, you&amp;rsquo;ll need to find the pod CIDR and service CIDR in use.</description>
    </item>
    <item>
      <title>Submitting a pull request</title>
      <link>/docs/contribution-guide/submitting-a-pull-request/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/contribution-guide/submitting-a-pull-request/</guid>
      <description>Note This guide is partially based on the Cilium contributing guide. Caution This guide assumes that you have already made and tested changes you want to contribute. If you have not, please follow the steps from the Contribution Guide. Commit changes Save your changes in one or more commits. If you are not comfortable with Git yet (in particular with git rebase), refer to the GitHub documentation.&#xA;Caution Commits should separate logical chunks of code and not represent a chronological list of changes.</description>
    </item>
    <item>
      <title>Tracing Policy</title>
      <link>/docs/reference/tracing-policy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/tracing-policy/</guid>
      <description>A TracingPolicy is a user-configurable Kubernetes custom resource (CR) that defines how Tetragon observes events in both the kernel and userspace using eBPF. It supports a variety of hook points including kprobes, uprobes, tracepoints, LSM hooks, and USDTs, giving users fine-grained control over what to trace and what actions to take. Policies consist of hook points, selectors for in-kernel filtering, and optional actions that can be executed when a match occurs.</description>
    </item>
    <item>
      <title>Verify installation</title>
      <link>/docs/installation/verify/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/installation/verify/</guid>
      <description>Verify Tetragon image signature Learn how to verify Tetragon container images signatures.&#xA;Prerequisites You will need to install cosign.&#xA;Verify Signed Container Images Since version 0.8.4, all Tetragon container images are signed using cosign.&#xA;Let&amp;rsquo;s verify a Tetragon image&amp;rsquo;s signature using the cosign verify command:&#xA;cosign verify --certificate-github-workflow-repository cilium/tetragon --certificate-oidc-issuer https://token.actions.githubusercontent.com &amp;lt;Image URL&amp;gt; | jq Note If you are using cosign &amp;lt; v2.0.0, you must set COSIGN_EXPERIMENTAL=1 environment variable to allow verification of images signed in KEYLESS mode.</description>
    </item>
    <item>
      <title>Configure Tetragon</title>
      <link>/docs/installation/configuration/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/installation/configuration/</guid>
      <description>Depending on your deployment mode, Tetragon configuration can be changed by:&#xA;Kubernetes Docker systemd kubectl edit cm -n kube-system tetragon-config # Change your configuration setting, save and exit # Restart Tetragon daemonset kubectl rollout restart -n kube-system ds/tetragon # Change configuration inside /etc/tetragon/ then restart container. # Example: # 1. As a privileged user, write to the file /etc/tetragon/tetragon.conf.d/export-file # the path where to export events, example &amp;#34;/var/log/tetragon/tetragon.log&amp;#34; # 2. Bind mount host /etc/tetragon into container /etc/tetragon # Tetragon events will be exported to /var/log/tetragon/tetragon.</description>
    </item>
    <item>
      <title>Developer&#39;s certificate of origin</title>
      <link>/docs/contribution-guide/developer-certificate-of-origin/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/contribution-guide/developer-certificate-of-origin/</guid>
      <description>To improve tracking of who did what, we’ve introduced a “sign-off” procedure, make sure to read and apply the Developer&amp;rsquo;s Certificate of Origin.</description>
    </item>
    <item>
      <title>Policy Enforcement</title>
      <link>/docs/getting-started/enforcement/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/getting-started/enforcement/</guid>
      <description>Tetragon&amp;rsquo;s tracing policies support monitoring kernel functions to report events, such as file access events or network connection events, as well as enforcing restrictions on those same kernel functions. Using in-kernel filtering in Tetragon provides a key performance improvement by limiting events from kernel to user space. In-kernel filtering also enables Tetragon to enforce policy restrictions at the kernel level. For example, by issuing a SIGKILL to a process when a policy violation is detected, the process will not continue to run.</description>
    </item>
    <item>
      <title>Metrics</title>
      <link>/docs/installation/metrics/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/installation/metrics/</guid>
      <description>Tetragon exposes a number of Prometheus metrics that can be used for two main purposes:&#xA;Monitoring the health of Tetragon itself Monitoring the activity of processes observed by Tetragon For the full list, refer to metrics reference.&#xA;Enable/Disable Metrics Kubernetes In a Kubernetes installation, metrics are enabled by default and exposed via the endpoint /metrics. The tetragon service exposes the Tetragon Agent metrics on port 2112, and the tetragon-operator-metrics service the Tetragon Operator metrics on port 2113.</description>
    </item>
    <item>
      <title>Release &amp; upgrade notes</title>
      <link>/docs/contribution-guide/release-notes/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/contribution-guide/release-notes/</guid>
      <description>Tetragon release notes are published on the GitHub releases page. To ensure the release notes are accurate and helpful, contributors should write them alongside development. Then, at the time of release, the final notes are compiled and published.&#xA;This guide is intended for both Tetragon developers and reviewers. Please follow it when creating or reviewing pull requests.&#xA;release-note blurb in PR When you create a pull request, the template will include a release-note blurb in the description.</description>
    </item>
    <item>
      <title>Contributor Ladder</title>
      <link>/docs/contribution-guide/contributor-ladder/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/contribution-guide/contributor-ladder/</guid>
      <description>Tetragon is a sub-project of the Cilium project and follows the same governance model, community processes, and contributor growth paths as Cilium. To support contributors in gaining both privileges and responsibilities, we adopt the shared Contributor Ladder. This contributor ladder defines how contributors can grow from community participants to project maintainers, along with the expectations at each level.&#xA;Community members generally start at the first levels of the ladder and advance as their involvement deepens.</description>
    </item>
    <item>
      <title>FAQ</title>
      <link>/docs/installation/faq/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/installation/faq/</guid>
      <description>What is the minimum Linux kernel version to run Tetragon? Tetragon needs Linux kernel version 4.19 or greater.&#xA;We currently run tests on stable long-term support kernels 4.19, 5.4, 5.10, 5.15 and bpf-next, see this test workflow for up to date information. Not all Tetragon features work with older kernel versions. BPF evolves rapidly and we recommend you use the most recent stable kernel possible to get the most out of Tetragon&amp;rsquo;s features.</description>
    </item>
    <item>
      <title>Comprehensive Execution Monitoring with Tetragon</title>
      <link>/features/execution-monitoring/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/features/execution-monitoring/</guid>
      <description>Understanding the intricate behavior of processes within their environments is an important requirement for many security teams. The sheer volume and complexity of modern applications and infrastructure can make detecting and responding to threats challenging.&#xA;Traditional security tooling often struggles to provide detailed, real-time information on process creation, execution, and termination, making it difficult to detect anomalies. Identifying whether processes are spawning unexpectedly, running with escalated privileges, or exiting abnormally is critical but can be cumbersome without the right tools.</description>
    </item>
    <item>
      <title>Enhanced Network Observability with Tetragon</title>
      <link>/features/network-observability/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/features/network-observability/</guid>
      <description>In cloud native environments, network monitoring is essential but often disconnected from the processes and workloads driving the activity. Traditional observability typically stop at capturing connections, leaving questions about which processes initiated them or how they interact with other workloads and endpoints unanswered. This lack of context makes anomaly detection and root-cause analysis difficult.&#xA;Tetragon brings clarity to network observability by directly linking every network event to the specific processes and workloads behind them.</description>
    </item>
    <item>
      <title>Kubernetes Identity Aware Policies with Tetragon</title>
      <link>/features/kubernetes-identity-aware-policies/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/features/kubernetes-identity-aware-policies/</guid>
      <description>In traditional security environments, policies are often applied uniformly, assuming static infrastructure. This approach is ill-suited to Kubernetes clusters, where workloads are dynamic, ephemeral, and highly diverse. This complexity brings the need for security teams to enforce policies with precision. Enforcing policies too broadly may lead to excessive noise or performance overhead, while enforcing too narrowly can result in missing critical events.&#xA;Tetragon addresses these challenges with Kubernetes Identity Aware Policies, leveraging eBPF for in-kernel filtering based on Kubernetes constructs like namespaces, pod labels, and container fields.</description>
    </item>
    <item>
      <title>Privilege and Capabilities Monitoring with Tetragon</title>
      <link>/features/privileges-monitoring/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/features/privileges-monitoring/</guid>
      <description>In Linux environments, processes have various credentials—such as user and group IDs, capabilities, and security flags—that define their privileges. Threat actors frequently exploit these credentials to escalate privileges or circumvent security controls. Without real-time visibility into these changes, security teams are left blind to critical signs of compromise.&#xA;Tetragon addresses this challenge by providing real-time monitoring of process credentials at both the system call and kernel levels. By hooking into system calls that manipulate credentials, Tetragon can capture detailed information about which processes or containers are attempting to change user IDs, group IDs, or capabilities.</description>
    </item>
    <item>
      <title>Real-Time File Integrity Monitoring with Tetragon</title>
      <link>/features/file-integrity-monitoring/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/features/file-integrity-monitoring/</guid>
      <description>Security teams often face significant challenges in ensuring the integrity of critical files in their systems. Traditional file integrity monitoring (FIM) approaches, such as periodic file system scans, often miss rapid changes or fail to detect access events in real time.&#xA;These methods are prone to delays, creating a window of opportunity for malicious actors to alter or access sensitive files without detection. Additionally, monitoring systems like Inotify can struggle with scalability, expressiveness, and the ability to filter events based on specific execution contexts, such as the identity of the process accessing the file.</description>
    </item>
    <item>
      <title>Real-Time OS Integrity Monitoring with Tetragon</title>
      <link>/features/operating-system-integrity/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/features/operating-system-integrity/</guid>
      <description>Modern containerized environments often rely on dynamic host system changes, such as loading kernel modules or modifying kernel parameters, to deliver necessary functionality. However, this same flexibility introduces significant security risks. Malicious actors can exploit these capabilities to load unauthorized kernel modules, alter system behavior, or hide their presence within the system. For security teams, the challenge lies in distinguishing legitimate activity from malicious manipulation of these critical kernel-level components.</description>
    </item>
    <item>
      <title>Real-Time Privilege Monitoring with Tetragon</title>
      <link>/features/capabilities-monitoring/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/features/capabilities-monitoring/</guid>
      <description>Processes running with high privileges or elevated capabilities can pose security risks, as they may bypass critical security controls or perform unauthorized actions. For example, misconfigured Kubernetes workloads might unintentionally request overly broad privileges, increasing the risk of exploitation. Identifying which processes are using elevated privileges and understanding the capabilities they require is essential for maintaining a secure environment. Security teams often struggle to identify and manage the precise capabilities required by applications running in Kubernetes environments and Linux capabilities are often granted too broadly due to a lack of visibility into what each workload truly needs.</description>
    </item>
    <item>
      <title>Search Results</title>
      <link>/search/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/search/</guid>
      <description></description>
    </item>
  </channel>
</rss>
