WAF++ WAF++

WAF-SOV-070 – Break-Glass Process & Logging

Beschreibung

Ein formal dokumentiertes Break-Glass-Verfahren MUSS existieren, das Auslösekriterien, Genehmigungsworkflow, Aktivierungsschritte und Post-Incident-Review-Anforderungen definiert. Alle Break-Glass-Aktionen MÜSSEN vollständig via CloudTrail (oder äquivalent) mit Log-File-Validation protokolliert werden.

Root-Account- und Notfalladmin-Aktivitäten MÜSSEN Echtzeit-Alerts auslösen. Post-Incident-Reviews MÜSSEN dokumentiert und mit dem Aktivierungsereignis verknüpft werden.

Rationale

Break-Glass-Zugriff stellt das höchste Risikoereignis in einer Cloud-Umgebung dar: Notfallnutzung hochprivilegierter Credentials, die normale Zugriffskontrollen umgehen. Ohne definierten Prozess, Logging und Review-Zyklus wird Break-Glass zu einer permanenten Hintertür.

Aus Souveränitätsperspektive kann unprotokollierter privilegierter Zugriff Region-Constraints modifizieren, Audit-Logging deaktivieren, Key-Policies ändern oder Daten exfiltrieren – und damit die gesamte Sovereignty-Posture in einem einzigen Vorfall zerstören.

Bedrohungskontext

Risiko Beschreibung

Break-Glass als permanente Backdoor

Notfallzugang nach Incident nicht außer Betrieb genommen; wird zur dauerhaften Hintertür.

Root-Nutzung für Routinetasks

Root-Account-Credentials für reguläre Aufgaben ohne Logging oder Review verwendet.

Kein Audit-Trail bei Break-Glass

Aktivierung ohne Logging ermöglicht plausible Abstreitbarkeit bei Missbrauch.

Nicht rotierte Notfall-Credentials

Kompromittierte Emergency-Credentials nach Incident-Abschluss nicht rotiert.

CloudTrail während "Maintenance" deaktiviert

Logging-Deaktivierung verhindert forensische Rekonstruktion bei Datenpanne.

Regulatorisches Mapping

Framework Controls

DSGVO

Art. 32 – Sicherheit der Verarbeitung; Art. 33 – Meldung von Datenschutzverletzungen

BSI C5:2020

IAM-03 – Privileged Access Management; LOG-01 – Protokollierung; BCM-02 – Incident Management

EUCS (ENISA)

IAM-03 – Emergency Access; LOG-01 – Audit Logging

ISO 27001:2022

A.5.26 – Reaktion auf Informationssicherheitsvorfälle; A.8.15 – Protokollierung; A.8.16 – Überwachungsaktivitäten

SOC 2

CC7.4 – Security Incident Response

Anforderung

  • Ein Break-Glass-Runbook MUSS existieren: Auslösekriterien, Berechtigte, Genehmigungskette, Schritte, Dekommissionierung und Review

  • CloudTrail MUSS Multi-Region mit is_multi_region_trail = true und enable_log_file_validation = true konfiguriert sein

  • Der CloudTrail-S3-Bucket MUSS Public Access Block vollständig aktiviert haben

  • CloudWatch-Alarme MÜSSEN für Root-Account-API-Calls und IAM-Policy-Änderungen konfiguriert sein

  • Break-Glass-Credentials MÜSSEN nach jeder Verwendung sofort rotiert werden

  • Post-Incident-Review MUSS innerhalb von 5 Werktagen dokumentiert und mit CloudTrail-Event-IDs verknüpft werden

  • Break-Glass-Prozess MUSS mindestens jährlich in einer Non-Produktionsumgebung getestet werden

Implementierungsanleitung

  1. Break-Glass-Runbook dokumentieren: Auslösekriterien, Berechtigte, Genehmigungskette, Schritt-für-Schritt-Verfahren, Dekommissionierung und Review.

  2. Credentials sicher speichern: Break-Glass-Credentials in einem dediziert und unabhängig auditierten Secret Store (nicht im Haupt-Vault).

  3. CloudTrail vollständig konfigurieren: Multi-Region, Log-File-Validation, Global-Service-Events, CloudWatch-Integration.

  4. CloudWatch-Alarme einrichten: Root-Account-API-Calls, Console-Anmeldungen ohne MFA, IAM-Policy-Änderungen.

  5. Credentials sofort rotieren: Nach jeder Nutzung; niemals für Routinetasks verwenden.

  6. Post-Incident-Review erzwingen: Innerhalb 5 Werktagen nach Aktivierung; verknüpft mit CloudTrail-Event-IDs.

  7. Drill durchführen: Jährlicher Test des Break-Glass-Prozesses in Non-Produktion.

  8. S3-Bucket sichern: CloudTrail-Bucket nie öffentlich; Object Lock für Logs erwägen.

Reifegrad-Abstufung

Level Bezeichnung Kriterien

1

Break-Glass existiert, aber undokumentiert

Notfallzugangs-Credentials vorhanden; kein formaler Prozess dokumentiert.

2

Prozess dokumentiert, Basis-Logging

Break-Glass-Runbook existiert und ist versioniert; CloudTrail für den Account aktiviert.

3

Vollständiges Logging, Alarme und Post-Incident-Review

CloudTrail Multi-Region mit Log-File-Validation; Echtzeit-Alarme auf Root/Break-Glass-Aktivierung; Post-Incident-Review verpflichtend und dokumentiert.

4

Automatisierte Erkennung und Credential-Rotation

Automatische Credential-Rotation nach jeder Nutzung; Break-Glass-Aktivierungen lösen automatisch Change-Management-Ticket aus; jährlicher Non-Produktion-Drill abgeschlossen.

5

Zero-Standing-Privilege mit Just-in-Time Break-Glass

Keine dauerhaften Break-Glass-Credentials; On-Demand-Aktivierung mit Dual-Approval; vollständige forensische Evidenz-Chain automatisiert; Mean Time to Activate < 5 Minuten mit generiertem Audit-Artefakt.

Terraform Checks

waf-sov-070.tf.aws.cloudtrail-enabled-all-regions

Prüft: CloudTrail muss Multi-Region mit Log-File-Validation und Global-Service-Events sein.

Compliant Non-Compliant
resource "aws_cloudtrail" "sovereign" {
  name               = "sovereign-audit-trail"
  s3_bucket_name     = aws_s3_bucket.cloudtrail.id
  is_multi_region_trail         = true
  enable_log_file_validation    = true
  include_global_service_events = true
  cloud_watch_logs_group_arn    = "${aws_cloudwatch_log_group.ct.arn}:*"
  cloud_watch_logs_role_arn     = aws_iam_role.cloudtrail_cw.arn
}
resource "aws_cloudtrail" "trail" {
  name           = "my-trail"
  s3_bucket_name = "my-logs"
  # ❌ Defaults: single-region, kein Validation,
  #    kein CloudWatch
}

waf-sov-070.tf.aws.cloudtrail-s3-bucket-not-public

Prüft: Der CloudTrail-S3-Bucket muss vollständigen Public Access Block aktiviert haben.

Compliant Non-Compliant
resource "aws_s3_bucket_public_access_block" "cloudtrail" {
  bucket                  = aws_s3_bucket.cloudtrail.id
  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}
resource "aws_s3_bucket_public_access_block" "cloudtrail" {
  bucket            = aws_s3_bucket.cloudtrail.id
  block_public_acls = true
  # ❌ Andere Settings fehlen – Default: false
}

waf-sov-070.tf.aws.cloudwatch-alarm-root-login

Prüft: CloudWatch-Alarm für Root-Account-Aktivität muss konfiguriert sein.

# Compliant: Metric Filter + Alarm für Root-Account-Nutzung
resource "aws_cloudwatch_log_metric_filter" "root_usage" {
  name           = "root-account-usage"
  pattern        = "{$.userIdentity.type = Root && $.userIdentity.invokedBy NOT EXISTS && $.eventType != AwsServiceEvent}"
  log_group_name = aws_cloudwatch_log_group.cloudtrail.name

  metric_transformation {
    name      = "RootAccountUsageCount"
    namespace = "CloudTrailMetrics"
    value     = "1"
  }
}

resource "aws_cloudwatch_metric_alarm" "root_usage" {
  alarm_name          = "root-account-usage"
  comparison_operator = "GreaterThanOrEqualToThreshold"
  evaluation_periods  = "1"
  metric_name         = "RootAccountUsageCount"
  namespace           = "CloudTrailMetrics"
  period              = "60"
  statistic           = "Sum"
  threshold           = "1"
  alarm_actions       = [aws_sns_topic.security_alerts.arn]
}

waf-sov-070.tf.aws.cloudwatch-alarm-iam-policy-changes

Prüft: CloudWatch-Alarm für IAM-Policy-Änderungen muss konfiguriert sein.

# Compliant: Metric Filter für IAM-Policy-Änderungen
resource "aws_cloudwatch_log_metric_filter" "iam_changes" {
  name    = "iam-policy-changes"
  pattern = "{($.eventName = CreatePolicy) || ($.eventName = DeletePolicy) || ($.eventName = AttachRolePolicy) || ($.eventName = DetachRolePolicy)}"
  log_group_name = aws_cloudwatch_log_group.cloudtrail.name

  metric_transformation {
    name      = "IAMPolicyChangeCount"
    namespace = "CloudTrailMetrics"
    value     = "1"
  }
}

Evidenz

Typ Pflicht Beschreibung

Process

✅ Pflicht

Break-Glass-Runbook (versioniert, Auslöser, Genehmigung, Aktivierung, Dekommissionierung, Review abdeckend).

IaC

✅ Pflicht

CloudTrail-Ressourcen mit is_multi_region_trail=true und enable_log_file_validation=true.

IaC

✅ Pflicht

CloudWatch Metric Filters und Alarme für Root-Account-Aktivität.

Logs

Optional

Beispiel-Post-Incident-Review-Protokoll vom letzten Break-Glass-Test oder Aktivierungsereignis.

Config

Optional

Secret-Store-Konfiguration für Break-Glass-Credential-Speicherung.