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 = trueundenable_log_file_validation = truekonfiguriert 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
-
Break-Glass-Runbook dokumentieren: Auslösekriterien, Berechtigte, Genehmigungskette, Schritt-für-Schritt-Verfahren, Dekommissionierung und Review.
-
Credentials sicher speichern: Break-Glass-Credentials in einem dediziert und unabhängig auditierten Secret Store (nicht im Haupt-Vault).
-
CloudTrail vollständig konfigurieren: Multi-Region, Log-File-Validation, Global-Service-Events, CloudWatch-Integration.
-
CloudWatch-Alarme einrichten: Root-Account-API-Calls, Console-Anmeldungen ohne MFA, IAM-Policy-Änderungen.
-
Credentials sofort rotieren: Nach jeder Nutzung; niemals für Routinetasks verwenden.
-
Post-Incident-Review erzwingen: Innerhalb 5 Werktagen nach Aktivierung; verknüpft mit CloudTrail-Event-IDs.
-
Drill durchführen: Jährlicher Test des Break-Glass-Prozesses in Non-Produktion.
-
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 |
|---|---|
|
|
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 |
|---|---|
|
|
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 |
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. |