SIEM (Security Information and Event Management) is a platform that aggregates security telemetry from across an organisation’s infrastructure, normalises it into a common schema, applies correlation rules and behavioural analytics to detect threats, and retains the data for investigation and compliance reporting. The name combines two earlier disciplines: SIM (Security Information Management) — long-term log retention, compliance reporting, and forensic search — and SEM (Security Event Management) — real-time alert correlation and incident detection. Modern SIEMs do both simultaneously, serving as the primary visibility layer for a Security Operations Centre (SOC). Leading platforms include Splunk Enterprise Security, IBM QRadar, Microsoft Sentinel, Elastic Security, Exabeam, and LogRhythm; all share the same fundamental architecture despite differing in query language (SPL for Splunk, KQL for Sentinel, EQL/KQL for Elastic, AQL for QRadar), correlation engine design (search-based vs dedicated CEP engine), and deployment model (on-premises, SaaS, or hybrid).
Inputs: logs vs events — and why the distinction matters. A SIEM consumes two categories of telemetry with different characteristics. Logs are structured or semi-structured records written by a system describing what it did: syslog lines from Linux hosts, Windows Event Log entries, web server access logs, audit records from the Linux kernel audit subsystem, IMA measurement events, SELinux AVC denials, firewalld/nftables packet drops, OpenShift API server audit logs (every kubectl API call, with verb, resource, user, namespace, and response code), container runtime logs from CRI-O, SSSD authentication events, and AIDE change reports. Logs are high-volume, append-only, and timestamped but do not inherently carry urgency or severity — they describe facts. Events (or alerts) are pre-processed, semantically enriched signals that something security-relevant may have occurred: a failed authentication threshold exceeded, a KEV-listed CVE detected in a running image, a NetworkPolicy violation, an unexpected privileged container start, or a Falco rule firing on a suspicious execve(). Events are lower-volume, carry a severity and a structured alert schema, and often include correlation context already applied by the source (a CNI plugin, an EDR agent, RHACS, or a cloud-native security platform). The SIEM must handle both — logs require parsing, field extraction, normalisation (mapping vendor-specific field names to a common schema such as ECS, CEF, or LEEF), and indexing before they can be correlated; events arrive pre-normalised but must be deduplicated, enriched with asset context, and correlated with related log evidence. Concretely from a Kubernetes or OpenShift environment, a SIEM receives: logs (OpenShift API audit log via Vector/Fluentd sidecar or the OpenShift Logging Operator forwarding to a SIEM-compatible endpoint; node-level syslog; container stdout/stderr forwarded by the node logging agent; ODF/Ceph audit events; SSSD and PAM authentication logs from the RHCOS node via journald) and events/alerts (RHACS/Stackrox policy violations forwarded via webhook or syslog integration; Falco alerts forwarded to a Fluentd/Fluent Bit aggregator; OPA Gatekeeper policy violation events from the Kubernetes API audit log; image vulnerability findings from an integrated scanner; network flow anomalies from a CNI plugin with flow logging such as Cilium Hubble).
The SIEM’s relationship to the Kubernetes/OpenShift platform is strictly one-directional: the platform pushes telemetry to the SIEM, and the SIEM has no feedback path back to the platform. A SIEM can detect, correlate, alert, and report — but it cannot delete a pod, apply a NetworkPolicy, revoke an RBAC binding, quarantine a node, or trigger a MachineConfig rollout. This is an architectural boundary, not a limitation: the SIEM is an observation and detection system, not a control plane. Actuation — the feedback loop that actually changes the state of the cluster in response to a detected threat — is the role of SOAR. What a SIEM can do on the Kubernetes side is drive the log collection configuration: the OpenShift Logging Operator’s ClusterLogForwarder CRD specifies which log streams are forwarded, to which SIEM endpoint, in which format (syslog, HTTP JSON, Kafka), and with what filtering (namespace selectors, log level thresholds, field inclusion/exclusion). This is the platform-side filtering mechanism: rather than forwarding every container’s stdout at full volume to the SIEM (which would be impractical at scale), the ClusterLogForwarder routes infrastructure logs, audit logs, and application logs to different SIEM indices or pipelines, applies namespace-level filters to exclude high-volume but low-value namespaces (monitoring, logging itself), and can drop DEBUG-level application logs while preserving all audit and security events. The SIEM then applies its own filtering, normalisation, and enrichment on top. Platform-side pre-filtering is not optional at Kubernetes scale: a 100-node OpenShift cluster generating 50,000 log lines per second from all sources would overwhelm most SIEM ingestion pipelines and licensing budgets; structured forwarding of only security-relevant streams — API audit, node auth, security tool alerts, policy violations — is the production-realistic approach.
