Design SIEM System

Hard45 min
1 / 30
understanding7 min read

Problem Statement and SIEM Mission

How Problem Statement and SIEM Mission (understanding) informs SIEM System architecture and interviewer depth.

Problem Statement and SIEM Mission

Define a multi-tenant SIEM that ingests heterogeneous security telemetry, normalizes to a canonical schema, correlates in near real time, and drives SOC workflows with auditable retention tiers.

Design anchors (1)

  • Separate collection (agents, syslog, cloud APIs) from analytics (search, correlation, UEBA) so ingest spikes never stall investigations.
  • Treat false-positive budget as an SLO: tier-1 alerts must stay below analyst capacity; everything else queues or auto-suppresses.
  • Never index raw secrets—tokenize PAN, hash credentials, and route compliance copies to WORM storage.

Mechanism

Sources ship events to partitioned Kafka topics by tenant and source type. Stream parsers map to ECS/OCSF-like fields, enrich with asset and identity graph lookups, then fan out to hot columnar store for 90-day search and cold object tier for multi-year forensics.

Failure drills

If Kafka lag exceeds 120s, throttle low-value sources, scale parser HPA, and page platform—not SOC. If OpenSearch bulk rejects spike, rollover read-only indices and shed warm shards. If rule promotion fails validation, keep prior version active and open Sev2 to detection engineering. If enrichment cache (Redis) is cold, fall back to stale asset graph with enrichment_stale=true flag on alerts.

Cost and capacity

At 2.5M /s Peak EPS, right-size parsers before indexers—CPU on regex and JSON dominates. Chargeback tenants on ingested GB after compression.

SignalTarget
Peak EPS2.5M /s
Hot retention90 days
MTTD target15 min
Analyst seats400
javaOne Dark Pro
1public record NormalizedEvent(String tenantId, String eventClass, Instant ts, String actorId) {
2 public String partitionKey() { return tenantId + ":" + eventClass; }
3}
pythonOne Dark Pro
1def should_suppress(fingerprint: str, seen: dict[str, float], now: float, ttl: float = 3600) -> bool:
2 last = seen.get(fingerprint)
3 if last and now - last < ttl:
4 return True
5 seen[fingerprint] = now
6 return False
typescriptOne Dark Pro
1export interface CorrelationHit {
2 ruleId: string;
3 severity: number;
4 entities: string[];
5}
6
7export function fingerprint(ruleId: string, entities: string[]): string {
8 return ruleId + ":" + entities.sort().join("|");
9}

Why interviewers care

SIEM System interviews reward crisp scope, explicit trade-offs, and failure stories—not generic microservice diagrams.

Interview checkpoint

Name one failure story for Problem Statement and SIEM Mission that proves you understand real outages, not happy-path diagrams.

Key Highlights

  • Define a multi-tenant SIEM that ingests heterogeneous security telemetry, normal
  • Metrics: Peak EPS, Hot retention, MTTD target, Analyst seats
  • Separate collection (agents, syslog, cloud APIs) from analytics (searc
Interview tip
When discussing Problem Statement and SIEM Mission, quantify EPS, retention tiers, and false-positive budget before naming vendors.
Avoid
Do not claim SIEM replaces EDR or WAF—state layered defense and data sources clearly.

Section Rescue Kit

Buzzwords to use:

EPSUEBA

Safe statements:

  • "I tier hot/warm/cold storage and never keep seven years on SSD indexes."
  • "Correlation uses event-time watermarks—late events go to side output, not silent drop."
  • "Tenant isolation is enforced in the query planner, not just UI filters."
Design SIEM System - System Design | WinJob | WinJob