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

WAF-OPS-030 – Observability Stack Configured

Beschreibung

Jeder Produktions-Workload MUSS strukturierte Logs emittieren, Metriken exponieren und Distributed Tracing unterstützen. Ein zentralisierter Observability-Stack MUSS konfiguriert sein. Logs MÜSSEN in JSON strukturiert sein, Trace-IDs enthalten und eine definierte Retention-Policy haben.

Rationale

Nicht beobachtbare Systeme können nicht zuverlässig betrieben werden. Im Incident-Fall müssen Engineers in Minuten bestimmen können was passiert ist, warum und wann. Structured Logging ermöglicht automatisiertes Parsing. Metriken ermöglichen Trend-Analyse. Distributed Tracing ermöglicht Root-Cause-Isolation in Microservices. Ohne alle drei Säulen ist MTTR hoch und Post-Incident-Learning eingeschränkt.

Bedrohungskontext

Risiko Beschreibung

Blinde Incidents

Ohne strukturierte Logs dauert die Fehlerdiagnose Stunden statt Minuten.

Stille Fehler

Ohne Metriken werden Fehler erst durch Nutzerberichte entdeckt, nicht durch Alerting.

Root-Cause-Unmöglichkeit

Ohne Distributed Tracing in Microservices ist die Ursache eines Fehlers nicht isolierbar.

Security-Blind-Spots

Ohne zentrale Log-Aggregation sind Security-Incidents nicht erkennbar.

Anforderung

  • Alle Services MÜSSEN strukturierte JSON-Logs mit trace_id, request_id, service emittieren

  • Distributed Tracing MUSS konfiguriert und instrumentiert sein

  • RED-Metriken MÜSSEN für jeden Service exportiert sein (Rate, Errors, Duration)

  • Log-Retention MUSS mindestens 30 Tage (empfohlen: 90 Tage Applikation, 365 Tage Audit)

  • Sensitive Daten (PII, Credentials) DÜRFEN NICHT in Logs erscheinen

Implementierungsanleitung

  1. Structured Logging einrichten: JSON-Logging-Framework; trace_id, service, level, timestamp als Pflichtfelder

  2. OpenTelemetry SDK integrieren: Auto-Instrumentation für HTTP-Clients und -Server; Trace-ID-Propagation

  3. Log-Groups mit Retention konfigurieren: CloudWatch Log Groups in Terraform mit retention_in_days

  4. RED-Metriken exportieren: Request Rate, Error Rate, Duration (p50/p95/p99) als Custom Metrics

  5. Dashboards erstellen: Service-Health-Dashboard mit allen RED-Metriken

  6. X-Ray/Jaeger aktivieren: Tracing Backend konfigurieren; Sampling-Rate optimieren (5-10% unter Last)

Reifegrad-Abstufung

Level Bezeichnung Kriterien

1

Unstrukturiertes Logging

Text-Logs zu stdout; kein zentrales Aggregation; kein Tracing; kein Monitoring.

2

Zentralisierte Logs

Logs zentral aggregiert; Basis-Dashboards; kein Distributed Tracing.

3

Alle 3 Säulen konfiguriert

Structured Logs mit Trace-ID; Distributed Tracing; RED-Metriken; Log-Retention-Policy.

4

SLO-basiertes Alerting

Burn-Rate-Alerts; Sampling optimiert; automatische Anomalie-Erkennung.

5

OpenTelemetry Plattform

Vendor-agnostisch; volle Korrelation Logs/Traces/Metriken; Observability-as-Product.

Terraform Checks

waf-ops-030.tf.aws.cloudwatch-log-group-retention

Prüft: CloudWatch Log Groups haben eine Retention-Policy (mindestens 30 Tage).

Compliant Non-Compliant
resource "aws_cloudwatch_log_group" "app" {
  name              = "/aws/ecs/payment-service"
  retention_in_days = 90
  tags = {
    environment = "production"
  }
}
resource "aws_cloudwatch_log_group" "app" {
  name = "/aws/ecs/payment-service"
  # Kein retention_in_days
  # Logs akkumulieren unbegrenzt
  # WAF-OPS-030 Violation
}

waf-ops-030.tf.aws.xray-tracing-enabled

Prüft: Lambda Functions haben X-Ray Tracing auf "Active" gesetzt.

# Compliant
resource "aws_lambda_function" "processor" {
  function_name = "payment-processor"
  tracing_config {
    mode = "Active"  # Nicht PassThrough
  }
}

Remediation: Alle aws_cloudwatch_log_group Ressourcen mit retention_in_days >= 30 versehen. Lambda Functions tracing_config { mode = "Active" } hinzufügen.

Evidenz

Typ Pflicht Beschreibung

Config

✅ Pflicht

Log-Group-Konfiguration mit definierten Retention-Policies in Terraform.

IaC

✅ Pflicht

Tracing-Konfiguration (X-Ray, OTel Collector) als IaC-Ressource.

Process

Optional

Dashboard-Screenshot mit RED-Metriken für kritische Services.

Config

Optional

OpenTelemetry SDK-Konfiguration im Applikationscode (Sampling-Konfiguration).