✦ For everyone, free.

Practical knowledge for real and everyday life

Home

Kubernetes Audit Event Handling

Kubernetes Audit Event Handling tracks cluster activities, offering structured logs and policies for security and compliance oversight.

Kubernetes Audit Event Handling is the set of practices and pipeline stages concerned with what happens to an audit event after it is generated by the API server: how it is transported, filtered, transformed, delivered to backends, and acted upon. Where audit logging configuration determines which events are captured, event handling determines how those captured events flow downstream and drive detection or response.


Backend Delivery Mechanisms

Log Backend

The simplest handling path writes audit events as newline-delimited JSON to a file on the control-plane node's local disk. This backend is synchronous by default but supports a batch mode to reduce I/O overhead, buffering events before flushing them to disk.

Webhook Backend

The webhook backend forwards audit events over HTTP to an external service, typically operating in batch mode with configurable buffering, retry, and throttling parameters.

apiVersion: apiserver.config.k8s.io/v1
kind: AuditSink
webhook:
  throttle:
    qps: 10
    burst: 15
  clientConfig:
    url: https://audit-collector.internal.example.com/ingest

Dynamic Configuration via --audit-webhook-config-file

kube-apiserver \
  --audit-webhook-config-file=/etc/kubernetes/audit-webhook-kubeconfig \
  --audit-webhook-batch-max-size=100 \
  --audit-webhook-batch-max-wait=5s \
  --audit-webhook-initial-backoff=10s

Handling Modes

Blocking vs. Batch Mode

  • Blocking mode delivers each event synchronously before the API server proceeds; it guarantees delivery but adds request latency and creates a hard dependency on backend availability.
  • Batch mode buffers events in memory and flushes them asynchronously on a size or time threshold, decoupling API server responsiveness from backend health at the cost of potential event loss if the process crashes before a flush.

Production clusters almost universally use batch mode for both log and webhook backends to avoid coupling API server latency to an external system's availability.

Truncation

Large request or response bodies (for example, a ConfigMap containing megabytes of data) can be truncated by the --audit-log-truncate-enabled and --audit-webhook-truncate-enabled flags, preventing a single oversized event from overwhelming the handling pipeline.


Downstream Processing Pipeline

Ingestion and Parsing

Once events leave the API server, a collection agent (commonly Fluent Bit, Vector, or a custom webhook receiver) parses the structured JSON and enriches it, for instance by resolving service account names to human-readable owners or tagging events with cluster identifiers in multi-cluster environments.

receivers:
  - name: k8s-audit-webhook
    type: http
    endpoint: 0.0.0.0:8443

processors:
  - type: enrich
    add_fields:
      cluster: production-us-east
  - type: filter
    drop_if:
      verb: "watch"

Routing to Detection Systems

Handled events are commonly routed to:

  • A SIEM for correlation against broader security telemetry and alerting rules (for example, alerting on create verbs against ClusterRoleBinding by unexpected identities).
  • A long-term object store (such as an S3-compatible bucket) for compliance retention independent of cluster lifecycle.
  • A real-time stream processor that triggers automated response actions, such as revoking a compromised service account token upon detecting anomalous impersonate verb usage.

Failure and Resilience Considerations

Backpressure Protection

The --audit-webhook-qps and --audit-webhook-batch-throttle-qps flags exist specifically to prevent a slow or unavailable webhook backend from causing unbounded memory growth in the API server's audit buffer, dropping events past a configured threshold rather than risking control-plane instability.

Event Ordering and Deduplication

Because a single logical request can generate multiple audit events across its RequestReceived, ResponseStarted, and ResponseComplete stages, handling logic downstream must correlate on auditID to reconstruct the full lifecycle of a request rather than treating each stage as an independent occurrence.

Event Loss Risk = Unflushed Batch Size Flush Interval

Relationship to Broader Audit Practice

Audit event handling is the operational bridge between raw API server instrumentation and actionable security or compliance outcomes. Without deliberate handling design, well-configured audit policies still produce logs that are never durably stored, never correlated, and never acted upon in time to matter.

API server Batch buffer Collector / SIEM