Runtime security is the last line of defense in Kubernetes. Even with strong image scanning and policy enforcement, a compromised container can execute arbitrary commands. Three open-source tools provide runtime security enforcement: KubeArmor (LSM-based policy enforcement), Falco (signature-based detection), and Tetragon (eBPF-based enforcement).
This guide compares their detection methods, enforcement capabilities, and self-hosted deployment patterns.
Quick Comparison
| Feature | KubeArmor | Falco | Tetragon |
|---|---|---|---|
| GitHub | kubearmor/kubearmor | falcosecurity/falco | cilium/tetragon |
| Stars | 2,090 | 6,400+ | 5,800+ |
| Core Technology | AppArmor / eBPF / SELinux | Kernel module / eBPF | eBPF |
| Detection Mode | Policy-based enforcement | Signature-based detection | eBPF tracing + enforcement |
| Enforcement | ✅ Block violations | ❌ Detect & alert only | ✅ Block violations |
| Zero-Day Protection | ✅ Whitelist-based policies | ❌ Needs signatures | ✅ Function-level tracing |
| Language | Go | C++ | Go |
| Last Active | 2026-05 | 2026-05 | 2026-05 |
KubeArmor: LSM-Based Policy Enforcement
KubeArmor uses Linux Security Modules (AppArmor, SELinux, or eBPF LSM) to enforce security policies at the container runtime level. It translates Kubernetes-native KubeArmorPolicy CRDs into LSM profiles.
Architecture
KubeArmor runs as a DaemonSet on each node. It watches for KubeArmorPolicy resources and generates LSM profiles that are applied to containers via the CRI. When a container violates a policy, the action is blocked at the kernel level.
Installation
| |
| |
Security Policy Example
| |
System Policy Example
| |
Key Strengths
- Active enforcement: Actually blocks violations, not just alerts
- Kubernetes-native policies: CRDs instead of raw AppArmor profiles
- Zero-day protection: Whitelist-based policies block unknown behavior
- Multi-LSM support: Works with AppArmor, SELinux, or eBPF LSM
Falco: Signature-Based Runtime Detection
Falco is the most widely deployed runtime security tool for Kubernetes. It uses kernel-level system call monitoring to detect suspicious activity based on predefined rules.
Installation
| |
| |
Custom Detection Rules
| |
Key Strengths
- Large rule ecosystem: 100+ built-in rules maintained by the community
- Mature project: CNCF graduated project with enterprise backing
- Flexible output: stdout, file, HTTP, gRPC, NATS, Kafka
- eBPF support: No kernel module required with modern_ebpf driver
Limitations
- Detection only: Cannot block violations — only generates alerts
- Signature-dependent: New attack patterns need new rules
- High cardinality: Can generate many false positives without tuning
Tetragon: eBPF-Based Enforcement and Visibility
Tetragon, from the Cilium project, uses eBPF to trace kernel functions and enforce security policies. It provides both visibility (what’s happening) and enforcement (stopping bad behavior).
Installation
| |
| |
Tracing Policy Example
| |
Enforcing Policy Example
| |
Key Strengths
- eBPF-native: Deep kernel visibility without kernel modules
- Enforcement mode: Can block syscalls and file access
- Cilium integration: Works seamlessly with Cilium CNI
- Low overhead: eBPF JIT compilation minimizes performance impact
Choosing the Right Tool
| Scenario | Best Choice | Why |
|---|---|---|
| Block unauthorized processes | KubeArmor | LSM enforcement at container level |
| Detect known attack patterns | Falco | Largest rule set, CNCF graduated |
| eBPF-based visibility + enforcement | Tetragon | Deep kernel tracing with Cilium |
| Compliance (PCI-DSS, SOC2) | Falco + KubeArmor | Detection + enforcement combined |
| Zero-trust container security | KubeArmor | Whitelist-based policies |
| Existing Cilium deployment | Tetragon | Native integration |
Why Runtime Security is Critical
Container images are scanned before deployment, network policies control traffic between pods, and admission controllers validate configurations. But once a container is running, what prevents an attacker from executing unauthorized commands, accessing sensitive files, or establishing reverse shells?
Runtime security fills this gap by monitoring actual behavior inside containers. Unlike static analysis, runtime security catches:
- Zero-day exploits: Attacks that bypass image scanners
- Supply chain compromises: Malicious code injected into legitimate images
- Insider threats: Authorized users performing unauthorized actions
- Lateral movement: Attackers pivoting between containers
For container image scanning before deployment, see our Trivy vs Grype vs Clair guide. For Kubernetes policy enforcement, the Kyverno vs OPA Gatekeeper vs Trivy Operator comparison covers admission-time security. For eBPF-based networking and observability, check Cilium vs Pixie vs Tetragon.
For container image scanning before deployment, see our Trivy vs Grype vs Clair guide. For Kubernetes policy enforcement, the Kyverno vs OPA Gatekeeper vs Trivy Operator comparison covers admission-time security. For eBPF-based networking and observability, check Cilium vs Pixie vs Tetragon. For container sandboxing at the runtime level, our gVisor vs Kata Containers vs Firecracker guide covers isolation strategies. For network policy enforcement, see Calico vs Cilium vs Kube-Router.
FAQ
Can KubeArmor, Falco, and Tetragon run simultaneously?
Yes, they serve complementary purposes. Falco provides detection and alerting, KubeArmor enforces container-level policies, and Tetragon provides eBPF-level visibility. Many production deployments run Falco for detection alongside KubeArmor or Tetragon for enforcement.
Does KubeArmor require a specific container runtime?
KubeArmor supports containerd, CRI-O, and Docker. It works with any Kubernetes distribution that uses these runtimes. The LSM backend (AppArmor, SELinux, or eBPF) depends on the host OS.
What is the performance overhead of eBPF-based tools?
eBPF programs are JIT-compiled to native code, resulting in minimal overhead (typically 1-3% CPU). Tetragon’s overhead is comparable to Cilium’s networking eBPF programs. Falco with modern_ebpf has similar overhead to the kernel module approach but avoids kernel module compilation.
Can I use KubeArmor without AppArmor or SELinux?
KubeArmor supports eBPF LSM as a fallback when neither AppArmor nor SELinux is available. Most modern Linux kernels (5.8+) support eBPF LSM.
How do I test runtime security policies?
Use a tool like kubectl run with a test container that attempts blocked actions (e.g., running /bin/sh in a policy-blocked namespace). Check KubeArmor logs with karmor log or Falco output for verification.
Does Falco support Kubernetes audit logs?
Yes. Falco can consume Kubernetes audit logs in addition to system calls. This enables detection of API-level attacks like unauthorized RBAC changes or secret access.