Runtime Protection Best Practices
Pre-deploy scanning stops known-bad images, but it cannot see exploitation, drift, or zero-days once a container runs. This list covers how to detect and contain what scanning misses.
Search across all documentation pages
Pre-deploy scanning stops known-bad images, but it cannot see exploitation, drift, or zero-days once a container runs. This list covers how to detect and contain what scanning misses.
Work top to bottom the first time; each group builds on the one before it.
Treat these as a maturity path, not a checklist to complete in a day.
Groups A and B are the prevention baseline. Groups C through E are the runtime detection and response layers that assume something got through.
runAsNonRoot: true and readOnlyRootFilesystem: true so an exploited process cannot write to the image or escalate easily.capabilities.drop: ["ALL"] shrinks the attack surface before any detection runs.pod-security.kubernetes.io/enforce: restricted so unsafe Pods never admit in the first place.seccompProfile.type: RuntimeDefault to block dangerous syscalls at the kernel, reducing what a compromised container can attempt.vulnerabilityreports you can query and alert on./etc, /bin, or /usr in a running container almost always indicate compromise or misconfiguration.DROPPED and read the drop reason before assuming the application is at fault.You should be able to answer three questions quickly.
Can we prove what a container did last night - which processes ran and which hosts it contacted?
Would we get paged, not just logged, if a shell opened in a production Pod?
When a new CVE drops, can we list affected running images from SBOMs within minutes?
If any answer is no, revisit the group that covers it before adding more tooling.
Isn't scanning enough if it's strict? No. Scanning only knows published CVEs. Zero-days, stolen credentials, and logic flaws pass clean scans but show up as runtime drift.
Does runtime protection prevent attacks or just detect them? Falco and Hubble primarily detect and alert. For enforcement, add seccomp, AppArmor, read-only filesystems, or an enforcing tool like Tetragon.
How do I avoid alert fatigue? Scope rules to namespaces, add exceptions for known-good behavior, and route by priority so only actionable events page a human.
Where do SBOMs fit in runtime protection? They bridge shift-left and runtime: when a CVE appears, SBOMs tell you which running images are affected without re-scanning everything.
Do these tools need privileged access? The node agents need elevated privileges to load eBPF programs. Treat them as trusted infrastructure and restrict who can edit those DaemonSets.
Stack versions: This page was written for Kubernetes 1.36.2, Docker Engine 29.6.1 (BuildKit default), containerd (CRI runtime on nodes), Helm 3, Compose v2, Argo CD (latest - verify at build), and Gateway API (GA - verify controller support at build).
Reviewed by Chris St. John·Last updated Jul 16, 2026