Skip to main content
Cloud DevOps Solutions
Get a quote Talk to an engineer

DevSecOps and secrets

Falco Runtime Security for Kubernetes: Deployment, Rule Tuning and Alert Routing

Falco is an open source runtime security tool that watches system calls and Kubernetes audit events and raises alerts when behaviour matches a rule, such as a shell in a container or a write below /etc. We deploy it on your clusters, tune the rules to your workloads and route alerts to people who can act.

Key takeaways

  • Falco detects suspicious behaviour while workloads run. It does not scan images or prevent attacks by default, so it complements build-time tools.
  • Default rules are generic. Without tuning to your workloads, expect noisy alerts that teams stop reading.
  • Start in alert-only mode on a few namespaces, tune for a couple of weeks, then widen. Never begin with paging.
  • Detection is only useful with a response path: who receives each alert, and what they do next.
  • Falco is a detector with a performance cost on busy nodes. Capacity and driver choice need testing, not assumption.

What teams use Falco for

Shell and exec detection

Alerts when someone opens an interactive shell or runs an unexpected binary in a production container, a common step in an intrusion.

Sensitive file and credential access

Detects reads of service account tokens, cloud credential files or writes to system directories by processes that should not touch them.

Privilege escalation signals

Flags privileged containers, host namespace use, unexpected capability changes and mounts of the host filesystem.

Kubernetes audit event monitoring

Rules on API server audit events can catch unusual secret reads, new cluster role bindings or exec into pods.

Cryptominer and outbound connection detection

Unexpected outbound connections or mining binaries inside workloads are flagged for review and containment.

What Falco is and why teams adopt it

Falco is a runtime security engine and a graduated project of the Cloud Native Computing Foundation. It watches what processes actually do on a host: files opened, programs executed, network connections made, privileges changed. It compares those events with rules and emits an alert when something matches.

This addresses a gap that build-time tools leave. A scanner such as Trivy tells you an image contains a known vulnerable package. It cannot tell you that, right now, someone has exec’d into a production pod and is reading a service account token. Falco can. Teams adopt it once they have the basics in place and want to know whether a workload is being abused.

The catch is that detection tools create work. Falco consulting is therefore less about installing a DaemonSet and more about making sure the alerts it produces are specific, owned and acted upon.

How we run Falco in production

Drivers and deployment

Falco collects system calls through a kernel module or an eBPF probe. We prefer the modern eBPF option where kernels support it, because it avoids building and loading kernel modules on every node image. We deploy with the official Helm chart as a DaemonSet, with explicit resource requests, a tolerance for any tainted nodes, and a priority class so it is not evicted first under pressure.

Managed Kubernetes imposes limits. On Amazon EKS managed node groups Falco works well, but serverless compute such as Fargate does not give you the node access it needs, so you would rely on provider detection there. We confirm this against your design before committing.

Rules as code

Falco rules are YAML. We keep the upstream rules unchanged, and put your exceptions and custom rules in a separate file under version control, delivered through the Helm values. A narrow custom rule might look like this:

- rule: Unexpected shell in payments namespace
  desc: Detect an interactive shell in production payments pods
  condition: >
    spawned_process and container and
    proc.name in (bash, sh, zsh) and
    k8s.ns.name = "payments" and proc.tty != 0
  output: >
    Shell opened in payments pod
    (user=%user.name pod=%k8s.pod.name container=%container.name cmd=%proc.cmdline)
  priority: WARNING
  tags: [container, shell, payments]

Field names and macros evolve between releases, so we test rules against the Falco version you run, and upgrade them through the same review process as application code.

Alert routing

Raw alerts to a chat channel become wallpaper. We use Falcosidekick to fan alerts out by priority: high-confidence events to your on-call tool with a runbook link, medium events to a security channel, and everything to long-term storage. If you already run Loki or an ELK stack, the full event stream lands there for investigation. Alert severity maps into your SRE and incident response process so there is a defined first responder.

Rolling out without blocking developers

Falco does not block anything by default, so it will not break deployments. The risk is different: developers get interrupted by alerts about legitimate debugging. Our rollout handles that.

  • Observe first. Alerts go to a log destination only, on non-production and then a few production namespaces.
  • Agree debugging rules. If engineers may exec into pods for troubleshooting, that is fine, but it should be logged and alerted at low priority, with higher priority in sensitive namespaces.
  • Tune with the owners. Application teams explain what their containers legitimately do, and exceptions are added with a reason.
  • Page last. Only when a rule has stayed quiet and accurate for weeks do we let it page anyone.

Tuning findings and common failure modes

Most noise comes from a few sources: package managers running at container start, agents and sidecars that write to unusual paths, and health check scripts. We write exceptions scoped by image, namespace or process lineage, not by disabling rules. Other failure modes:

  • Dropped events. Under heavy system call load, Falco can drop events. We monitor its own metrics and size resources accordingly.
  • Stale rules. New applications introduce new normal behaviour. Rules are reviewed on a schedule.
  • No owner. Alerts that no one is accountable for are the most common cause of a failed programme.
  • Over-trust. A quiet Falco does not prove nothing is wrong, since an attacker may avoid behaviour the rules look for.

Cost, capacity and day-2 operations

Falco is free software, so cost is node resources and operator time. Plan for per-node overhead, the storage and licensing of whatever receives the alerts, and someone to maintain rules. Day-2 tasks include upgrading Falco and its rules together, watching the engine’s metrics through Prometheus, and testing that alerts still arrive end to end, for example with a harmless test event after each upgrade.

Honest limits

Falco detects; it does not scan, prevent or investigate. It sees behaviour on the node, but sees less on serverless platforms. Its rules are heuristics and can be evaded by a careful attacker. It does not replace Kubernetes hardening, network policy or secrets management such as HashiCorp Vault.

When to choose something else

If you have no one to triage alerts, a managed detection service or cloud-native threat detection will give you more value than a self-tuned rule engine. If you mainly need to prevent bad deployments, begin with admission policy. If you want enforcement in the kernel, evaluate Tetragon.

Working with us

We typically start with a two-week observation pilot, deliver tuned rules and a response runbook, and then roll out across clusters. See our Kubernetes consulting service, or get in touch to scope a pilot.

Official documentation: falco.org

How we work with Falco

  1. 01

    Establish the threat model

    We agree what you most need to detect (compromised pods, stolen credentials, insider misuse) and what response capacity you have.

  2. 02

    Choose the driver and deployment

    We select the modern eBPF probe or the kernel module based on your node operating system and managed Kubernetes limits, and deploy as a DaemonSet with Helm.

  3. 03

    Run in observation mode

    Falco runs on a few namespaces with alerts going to a log channel only. We review what fires and why.

  4. 04

    Tune rules to your workloads

    We write exceptions and custom rules in version control, with reasons, so legitimate behaviour is not alerted on and real risks are.

  5. 05

    Route alerts and define response

    Falcosidekick or an equivalent sends alerts to chat, SIEM or incident tooling by severity, each with a short runbook.

  6. 06

    Expand and review

    Coverage widens cluster by cluster, and rules are reviewed regularly against new applications and incidents.

Falco compared with the alternatives

We recommend the tool that fits your team, not the one we know best. Here is when each option makes sense.

OptionChoose it when
FalcoFalco is an open source runtime security tool that watches system calls and Kubernetes audit events and raises alerts when behaviour matches a rule, such as a shell in a container or a write below /etc.
Cilium TetragonChoose it if you already run Cilium and want eBPF-based observability with the option to enforce policy in the kernel, accepting a different rule model.
Commercial runtime security (Sysdig, Aqua, Wiz Defend)Choose a commercial product if you need a managed console, vendor-maintained detections, response actions and support, and have the budget.
Cloud provider threat detection (GuardDuty EKS Runtime, Defender for Containers)Choose it for managed coverage with less to operate, especially if your team is small and already in one cloud.
Admission policy (Kyverno, OPA Gatekeeper)Choose it first if your main goal is preventing risky workloads from being deployed. Admission policy prevents; Falco detects what happens afterwards.

Tools we use alongside Falco

KubernetesHelmFalcosidekickFalco TaloneBPFPrometheusGrafanaLokiSlackPagerDutyAWS Security HubKyvernoTrivyOpenTelemetry

Frequently asked questions

What does Falco do?
Falco monitors system calls from the Linux kernel and, optionally, Kubernetes audit events, then evaluates them against rules. When a rule matches, for example a shell starting inside a container or a process reading a credential file, it emits an alert with context such as the pod, container and command. It detects behaviour rather than scanning for known vulnerabilities.
Can Falco block attacks?
Not by itself. Falco is a detection tool, so it raises alerts. Response tools such as Falco Talon or your own automation can act on alerts, for example by labelling or isolating a pod, but automated action should be introduced carefully after alerts are trusted. Prevention is better handled by admission policy, network policy and hardened workloads.
Does Falco work on EKS Fargate or other managed nodes?
It depends on kernel access. Falco needs to observe system calls on the node, so serverless options such as Fargate, where you cannot deploy a privileged DaemonSet, are generally not supported in the usual way. Managed node groups work, and provider-native detection may fill gaps elsewhere. We check your node model before proposing a design.
How much overhead does Falco add?
It adds CPU and memory use on each node, which grows with system call volume, and busy nodes with heavy I/O feel it most. Modern eBPF drivers are designed to be efficient, but the impact is workload dependent. We load test on representative nodes and set resource requests and rule scope accordingly rather than quoting a general figure.
How do we stop Falco alerts being noisy?
Run in observation mode first, identify the few rules producing most alerts, and add narrow exceptions for known legitimate behaviour, for example a specific init process in a named image. Avoid disabling whole rules. Keep exceptions in version control with a reason, and page only on a small set of high-confidence events.
Is Falco enough on its own?
No. It covers behaviour at runtime. You still need image and dependency scanning, secrets management, least-privilege access, network policy and a response process. Falco is most valuable when it feeds a team that can investigate quickly, and least valuable when alerts go to an unread channel.

Talk to an engineer about Falco

Book a free 30-minute call. We review your current setup and tell you honestly whether and how we can help.

Written by Saddique Khan, DevOps / SRE / Cloud Consultant Engineer. Last updated 2026-10-09.