WAF++ WAF++
Back to WAF++ Homepage

WAF-REL-020 – Health Checks & Readiness Probes Configured

Beschreibung

Alle Produktions-Services MÜSSEN Health Check Endpoints exponieren und Readiness-/Liveness-Probes konfigurieren. Load Balancer MÜSSEN Health Checks mit explizit konfigurierten Pfaden, Intervallen und Schwellenwerten nutzen – keine Cloud-Provider-Defaults.

Kein Deployment ohne funktionierende Health Checks. Dies ist eine nicht-verhandelbare Voraussetzung für automatisches Failover und Zero-Downtime Deployments.

Rationale

Ohne Health Checks werden fehlerhafte Instanzen weiterhin mit Traffic versorgt. Kubernetes ohne Readiness Probe sendet Traffic an Pods, die noch nicht bereit sind oder bereits ausgefallen sind. Load Balancer ohne explizite Health Check Konfiguration verwenden Defaults, die oft zu tolerant (30s Interval, keine Path-Validierung) sind.

Bedrohungskontext

Risiko Beschreibung

Traffic auf fehlerhafte Instanzen

Ohne Health Check routet LB weiterhin Requests an Instanzen, die Fehler zurückgeben.

Deadlock unentdeckt

Ohne Liveness Probe läuft ein deadlockter Prozess ewig weiter und blockiert Ressourcen.

Premature Traffic

Ohne Readiness Probe erhält ein nicht-initialisierter Pod Traffic und erzeugt Fehler.

Default-Timeout zu tolerant

Cloud-Provider-Defaults sind oft 30s Interval und 3 Fehlschläge – zu lang für schnelle Recovery.

Anforderung

Alle Services MÜSSEN:

  • /health/live Endpoint exponieren (Liveness: Prozess lebt)

  • /health/ready Endpoint exponieren (Readiness: Traffic-fähig, Abhängigkeiten OK)

  • Kubernetes: readinessProbe und livenessProbe mit gemessenen initialDelaySeconds konfigurieren

  • Load Balancer Health Checks: expliziter Path, Interval, Timeout, Healthy/Unhealthy Threshold

  • Keine Cloud-Provider-Defaults für Health Check Konfiguration

Implementierungsanleitung

  1. Endpoints implementieren: /health/live (nur Prozess), /health/ready (Deps prüfen)

  2. initialDelaySeconds messen: Startup-Zeit des Services messen, Puffer addieren

  3. Intervalle konfigurieren: interval=15s, timeout=5s, failureThreshold=3

  4. ALB Health Check: path=/health/ready, interval=15, matcher=200

  5. Liveness NUR für Prozess-Liveness: Keine externe Abhängigkeiten in Liveness-Probe prüfen

  6. Testen: Health Check Failure in Staging simulieren und Verhalten beobachten

Reifegrad-Abstufung

Level Bezeichnung Kriterien

1

Keine Health Checks

Keine Probes; LB verwendet TCP-Ping als Health Check.

2

Basis LB Health Check

ALB Health Check auf "/" konfiguriert; keine Kubernetes Probes.

3

ReadinessProbe + LivenessProbe

Beide Probes mit gemessenen Delays; LB prüft /health/ready; Fehler erzeugen Alerts.

4

Deep Health Checks

Readiness prüft echte Abhängigkeiten; StartupProbe für langsame Services.

5

Synthetisches Monitoring

Externe Validierung der Health Endpoints; Health-Check-Latenz als SLI.

Terraform Checks

waf-rel-020.tf.aws.alb-target-group-health-check

Prüft: ALB Target Group hat expliziten health_check Block mit Path, Interval und Thresholds.

Compliant Non-Compliant
resource "aws_lb_target_group" "api" {
  name     = "payment-api-tg"
  port     = 8080
  protocol = "HTTP"
  vpc_id   = var.vpc_id

  health_check {
    enabled           = true
    path              = "/health/ready"
    interval          = 15
    timeout           = 5
    healthy_threshold = 2
    unhealthy_threshold = 3
    matcher           = "200"
  }
}
resource "aws_lb_target_group" "api" {
  name     = "payment-api-tg"
  port     = 8080
  protocol = "HTTP"
  vpc_id   = var.vpc_id
  # Kein health_check Block –
  # Cloud-Defaults werden verwendet
  # WAF-REL-020 Violation
}

Remediation: health_check Block mit explizitem path, interval, timeout, healthy_threshold und unhealthy_threshold hinzufügen.

Evidenz

Typ Pflicht Beschreibung

IaC

✅ Pflicht

Terraform oder Kubernetes-Manifeste mit Readiness- und Liveness-Probe-Konfiguration.

Config

✅ Pflicht

Load Balancer Health Check Konfiguration mit explizitem Path und Thresholds.

Process

Optional

Test-Ergebnisse: Health Check Failure in Staging simuliert und dokumentiert.