Skip to main content

1.8 Lösung umsetzen, Rückfallplan anwenden und Funktion verifizieren

Nachdem die Ursache ausreichend bestätigt wurde, kann eine geeignete Lösung geplant und umgesetzt werden.

Dabei gilt:

Eine Störung gilt nicht als behoben, nur weil eine Fehlermeldung verschwunden ist. Die ursprüngliche Funktion, ihre Abhängigkeiten und mögliche Nebenwirkungen müssen anschließend geprüft werden.

Jede technische Korrektur ist selbst eine Änderung und kann neue Fehler verursachen. Deshalb benötigt auch eine scheinbar einfache Maßnahme einen definierten Ausgangszustand, Erfolgskriterien und einen Rückfallplan.


Ziel dieser Seite

Nach diesem Arbeitsschritt sollten:

  • Sofortmaßnahme und dauerhafte Lösung getrennt sein,
  • Ziel und Umfang der Änderung definiert sein,
  • Risiken und Abhängigkeiten bekannt sein,
  • Konfiguration oder Ausgangszustand gesichert sein,
  • ein überprüfbarer Rückfallplan vorliegen,
  • Erfolgskriterien und Abbruchkriterien definiert sein,
  • die Änderung möglichst schrittweise erfolgen,
  • technische Funktion und Benutzerfunktion geprüft sein,
  • Monitoring und Protokolle nach der Änderung kontrolliert sein,
  • bei Fehlschlag kontrolliert zurückgefallen werden können.

1. Kennzeichnung der Befehle

KennzeichnungBedeutung
[RO]Read-only: liest Informationen aus
[TEST]Führt eine aktive Prüfung aus
[FILE]Erstellt oder überschreibt eine Datei
[PRIV]Benötigt möglicherweise Administrator- oder Root-Rechte
[CHANGE]Verändert Konfiguration oder Betriebszustand
[DISRUPTIV]Kann Benutzer oder produktive Dienste beeinträchtigen
[SENSITIV]Ausgabe kann vertrauliche Daten enthalten

2. Maßnahmenarten unterscheiden

MaßnahmenartZweckBeispiel
SofortmaßnahmeAuswirkungen schnell begrenzenfehlerhaftes Backend aus dem Load Balancer nehmen
WorkaroundFehler umgehen, ohne Ursache zu entfernenBenutzer verwendet vorübergehend anderen Server
MitigationAuswirkung oder Wahrscheinlichkeit reduzierenTraffic auf funktionierende Instanzen begrenzen
Reparaturunmittelbaren technischen Fehler beseitigenfehlerhafte Konfiguration korrigieren
Dauerhafte Lösungbestätigte Grundursache beseitigenautomatische Konfigurationsvalidierung einführen
PräventionsmaßnahmeWiederholung oder Auswirkung verhindernCanary-Rollout und Monitoring ergänzen
Rollbackvorherigen bekannten Zustand wiederherstellenvorherige Anwendungsversion aktivieren
Roll-forwardFehler durch eine neue Korrektur behebenkorrigierte Folgeversion bereitstellen

Ein Workaround kann den Betrieb wiederherstellen, ohne die eigentliche Ursache zu beseitigen. Er muss deshalb als temporär gekennzeichnet und nachverfolgt werden.


3. Wiederherstellung und Ursachenbehebung unterscheiden

Wiederherstellung

Ziel ist, die betroffene Funktion möglichst schnell wieder bereitzustellen.

Beispiele:

  • Dienst neu starten,
  • fehlerhaftes Backend deaktivieren,
  • Failover auslösen,
  • vorherige Konfiguration wiederherstellen,
  • Ersatzgerät verwenden,
  • Benutzer auf ein anderes System umleiten.

Ursachenbehebung

Ziel ist, das erneute Auftreten zu verhindern.

Beispiele:

  • Konfigurationsvalidierung ergänzen,
  • Speicherleck durch Softwarekorrektur beseitigen,
  • Monitoring erweitern,
  • fehlerhafte Automatisierung korrigieren,
  • Redundanz verbessern,
  • unklare Berechtigungsstruktur bereinigen.

Eine Störung kann bereits wiederhergestellt sein, während die dauerhafte Ursachenbehebung noch offen ist.


4. Vor jeder Änderung zu klärende Fragen

  • Was genau soll verändert werden?
  • Welche bestätigte Ursache wird damit behandelt?
  • Welches System und welche Komponente sind betroffen?
  • Welche Benutzer oder Dienste können beeinträchtigt werden?
  • Welche Abhängigkeiten bestehen?
  • Ist die Änderung dokumentiert und freigegeben?
  • Ist der aktuelle Zustand gesichert?
  • Existiert ein getesteter Rückfallweg?
  • Welche Erfolgskriterien gelten?
  • Welche Abbruchkriterien gelten?
  • Wie lange darf die Änderung dauern?
  • Wer führt die Änderung durch?
  • Wer beobachtet Monitoring und Protokolle?
  • Wer entscheidet über einen Rollback?
  • Wie werden betroffene Personen informiert?

5. Änderungsumfang möglichst klein halten

Eine Korrektur sollte nur die Komponente verändern, die für die bestätigte Ursache relevant ist.

Ungeeignet

  • mehrere Firewall-Regeln gleichzeitig ändern,
  • Anwendung und Betriebssystem gleichzeitig aktualisieren,
  • Dienstkonto und Berechtigungen gleichzeitig verändern,
  • mehrere Backends gleichzeitig neu konfigurieren,
  • gleichzeitig DNS, Proxy und Routing anpassen.

Besser

  1. eine klar definierte Änderung,
  2. definierter Funktionstest,
  3. Beobachtung,
  4. nächste Änderung nur bei Bedarf.

Kleine Änderungen lassen sich leichter:

  • überprüfen,
  • zuordnen,
  • zurücknehmen,
  • dokumentieren,
  • auf Nebenwirkungen untersuchen.

6. Risiko der Änderung bewerten

RisikofaktorNiedriges RisikoHohes Risiko
Umfangeinzelner Testclientgesamte Produktion
Reversibilitäteinfache Konfigurationsrücknahmeirreversible Datenmigration
Verfügbarkeitredundantes Systemeinzelner kritischer Server
Erfahrungdokumentierte Standardänderungerstmalige unbekannte Änderung
Abhängigkeitenwenige bekannte Abhängigkeitenviele unbekannte Abhängigkeiten
Datenkeine DatenänderungSchema- oder Datenänderung
Zuganglokaler Konsolenzugangnur entfernte Verbindung
Testbarkeitfunktionierende Testumgebungnur Produktion verfügbar
Beobachtungvollständiges Monitoringkaum Messwerte vorhanden
Zeitdruckgeplantes Wartungsfensterungeplanter kritischer Ausfall

7. Änderungsplan erstellen

FeldEintrag
Ticket- oder Change-Nummer
bestätigte Ursache
geplante Änderung
technisches Ziel
betroffene Systeme
betroffene Benutzer
Abhängigkeiten
erwartete Unterbrechung
RisikoNiedrig / Mittel / Hoch
ausführende Person
beobachtende Person
Wartungsfenster
Sicherung des Ausgangszustands
Erfolgskriterien
Abbruchkriterien
Rückfallplan
Rückfallentscheidung durch
Kommunikationsweg
Beobachtungsdauer

8. Backup und Rollback unterscheiden

BegriffBedeutung
BackupSicherung von Daten oder Konfiguration
RestoreWiederherstellung aus einem Backup
RollbackRückkehr zum vorherigen bekannten Betriebszustand
SnapshotMomentaufnahme eines bestimmten Systems oder Datenträgers
ExportSicherung einer Konfiguration in einem unterstützten Format
Roll-forwardKorrektur durch eine nachfolgende Version oder Änderung

Ein vorhandenes Backup ist noch kein vollständiger Rückfallplan.

Ein Rückfallplan beantwortet zusätzlich:

  • Welche Sicherung wird verwendet?
  • Wie wird sie zurückgespielt?
  • Welche Dienste müssen vorher beendet werden?
  • Welche Abhängigkeiten sind betroffen?
  • Wie lange dauert die Wiederherstellung?
  • Wie wird der Erfolg des Rollbacks geprüft?
  • Was geschieht mit Daten, die nach der Änderung entstanden sind?
  • Wer darf den Rollback freigeben?
  • Was geschieht, wenn auch der Rollback fehlschlägt?

9. Grenzen von Snapshots beachten

Ein Snapshot ersetzt kein reguläres Backup und ist nicht für jede Anwendung als Rückfallmethode geeignet.

Besondere Vorsicht gilt unter anderem bei:

  • Datenbanken,
  • Active Directory,
  • verteilten Dateisystemen,
  • Clustern,
  • Replikationssystemen,
  • Transaktionssystemen,
  • verschlüsselten Volumes,
  • Anwendungen mit externen Abhängigkeiten.

Vor der Nutzung eines Snapshots muss geprüft werden:

  • Unterstützt der Hersteller diese Wiederherstellung?
  • Ist der Snapshot anwendungskonsistent?
  • Welche externen Systeme wurden seitdem verändert?
  • Entstehen Replikations- oder Transaktionsprobleme?
  • Gehen nach dem Snapshot erzeugte Daten verloren?
  • Existiert zusätzlich ein unabhängiges Backup?

10. Ausgangskonfiguration sichern

Für produktive Systeme sollte möglichst die vom Hersteller vorgesehene Export-, Backup- oder Versionsverwaltungsfunktion verwendet werden.

Einfache Dateikopien sind nur für einzelne Konfigurationsdateien geeignet, wenn Berechtigungen, Besitzer, ACLs, erweiterte Attribute und Anwendungsanforderungen berücksichtigt werden.


Windows-Beispiel für eine einzelne Konfigurationsdatei

$backupFile = Join-Path "<Zielpfad>" "config-$(Get-Date -Format 'yyyyMMdd-HHmmss').bak"

Copy-Item "<Konfigurationsdatei>" $backupFile

Get-FileHash -Path "<Konfigurationsdatei>", $backupFile -Algorithm SHA256

Kennzeichnung:

  • Copy-Item: [FILE]
  • Get-FileHash: [RO]

Die Prüfsummen sollten bei einer unveränderten Kopie identisch sein.


Linux-Beispiel für eine einzelne Konfigurationsdatei

backup_file="<Zielpfad>/config-$(date +%Y%m%d-%H%M%S).bak"

cp --preserve=all -- "<Konfigurationsdatei>" "$backup_file"

sha256sum "<Konfigurationsdatei>" "$backup_file"

cp --preserve=all ist eine GNU-Option und steht nicht auf jedem Unix-System zur Verfügung.


macOS-Beispiel für eine einzelne Konfigurationsdatei

backup_file="<Zielpfad>/config-$(date +%Y%m%d-%H%M%S).bak"

cp -p "<Konfigurationsdatei>" "$backup_file"

shasum -a 256 "<Konfigurationsdatei>" "$backup_file"

cp -p erhält wichtige Dateiattribute, garantiert aber nicht für jede Anwendung die vollständige Sicherung aller Metadaten. Für komplexe Anwendungen muss die vorgesehene Backupfunktion verwendet werden.


11. Konfiguration vor der Aktivierung validieren

Eine Konfigurationsdatei sollte möglichst vor einem Reload oder Neustart geprüft werden.

JSON unter Windows PowerShell prüfen

[TEST] Get-Content "<Datei.json>" -Raw | ConvertFrom-Json | Out-Null

Bei ungültigem JSON erzeugt PowerShell eine Fehlermeldung.

JSON unter Linux oder macOS mit Python prüfen

[TEST] python3 -m json.tool "<Datei.json>" > /dev/null

JSON mit jq prüfen, sofern installiert

[TEST] jq empty "<Datei.json>"

macOS-Property-List prüfen

[TEST] plutil -lint "<Datei.plist>"

systemd-Unit-Datei prüfen

[TEST] systemd-analyze verify "<Datei.service>"

NGINX-Konfiguration prüfen

[TEST][PRIV] nginx -t

Apache-Konfiguration prüfen

[TEST][PRIV] apachectl configtest

OpenSSH-Serverkonfiguration prüfen

[TEST][PRIV] sshd -t

Die Werkzeuge prüfen unterschiedliche Aspekte. Ein erfolgreicher Syntax-Test bestätigt nicht automatisch, dass Netzwerkziele, Zugangsdaten, Zertifikate und abhängige Dienste funktionieren.


12. PowerShell-Änderung mit WhatIf vorprüfen

Einige PowerShell-Cmdlets unterstützen den allgemeinen Parameter -WhatIf.

Beispiel

[TEST] Restart-Service -Name <Dienstname> -WhatIf

PowerShell zeigt, welche Aktion vorgesehen ist, führt den Neustart aber nicht aus.

Wichtige Einschränkung

-WhatIf:

  • simuliert nicht die Anwendung selbst,
  • prüft nicht die spätere Funktionsfähigkeit,
  • erkennt nicht jede Abhängigkeit,
  • prüft nicht automatisch den Rückfallplan,
  • funktioniert nur bei Befehlen, die -WhatIf unterstützen.

13. Dienständerungen unter Windows

Aktuellen Zustand prüfen

[RO] Get-Service -Name <Dienstname>

Abhängige Dienste prüfen

[RO] Get-Service -Name <Dienstname> -DependentServices

Benötigte Dienste prüfen

[RO] Get-Service -Name <Dienstname> -RequiredServices

Dienstkonfiguration prüfen

[RO][SENSITIV] Get-CimInstance Win32_Service -Filter "Name='<Dienstname>'" | Select-Object Name, State, StartMode, StartName, PathName, ProcessId

Neustart zunächst anzeigen

[TEST] Restart-Service -Name <Dienstname> -WhatIf

Dienst mit Bestätigungsabfrage neu starten

[CHANGE][DISRUPTIV][PRIV] Restart-Service -Name <Dienstname> -Confirm

Gestoppten Dienst starten

[CHANGE][PRIV] Start-Service -Name <Dienstname> -Confirm

Zustand danach prüfen

[RO] Get-Service -Name <Dienstname>

Restart-Service sendet eine Stopp- und anschließend eine Startanforderung. War der Dienst bereits gestoppt, versucht das Cmdlet ihn zu starten. Vorher müssen abhängige Dienste und Auswirkungen geprüft werden.


14. Dienständerungen unter Linux

Aktuellen Zustand prüfen

[RO] systemctl status <Dienstname>.service --no-pager

Zustand kompakt prüfen

[RO] systemctl is-active <Dienstname>.service

Reload-Fähigkeit prüfen

[RO] systemctl show <Dienstname>.service -p CanReload -p ActiveState -p SubState -p MainPID

Konfiguration neu laden

[CHANGE][PRIV] sudo systemctl reload <Dienstname>.service

Ein Reload funktioniert nur, wenn der Dienst diese Funktion unterstützt.

Dienst neu starten

[CHANGE][DISRUPTIV][PRIV] sudo systemctl restart <Dienstname>.service

Nur dann neu starten, wenn der Dienst bereits läuft

[CHANGE][DISRUPTIV][PRIV] sudo systemctl try-restart <Dienstname>.service

Zustand danach prüfen

[RO] systemctl status <Dienstname>.service --no-pager

Neue Protokolle anzeigen

[RO] journalctl -u <Dienstname>.service --since "5 minutes ago" --no-pager


15. Dienständerungen unter macOS

macOS verwendet launchd. Für die Befehle muss der richtige Dienstkontext bekannt sein.

Systemdienst prüfen

[RO][PRIV] launchctl print system/<Dienstlabel>

Benutzerdienst prüfen

[RO] launchctl print gui/$(id -u)/<Dienstlabel>

Systemdienst beenden und neu starten

[CHANGE][DISRUPTIV][PRIV] sudo launchctl kickstart -k system/<Dienstlabel>

Benutzerdienst beenden und neu starten

[CHANGE][DISRUPTIV] launchctl kickstart -k gui/$(id -u)/<Dienstlabel>

Die Option -k beendet eine bereits laufende Instanz, bevor sie neu gestartet wird.

Protokolle danach prüfen

[RO] log show --last 5m --predicate 'process == "<Prozessname>"' --style compact

Vor dem Einsatz muss die lokale Dokumentation mit man launchctl geprüft werden. System-, Benutzer- und GUI-Dienste verwenden unterschiedliche Domains. Ein falscher Dienstkontext kann dazu führen, dass nicht der erwartete Dienst angesprochen wird.


16. Reload, Restart und Reboot unterscheiden

MaßnahmeWirkungTypisches Risiko
ReloadKonfiguration wird im laufenden Prozess neu geladenNiedrig bis mittel
RestartProzess wird beendet und neu gestartetMittel bis hoch
Rebootgesamtes Betriebssystem wird neu gestartetHoch
FailoverBetrieb wechselt auf anderes SystemMittel bis hoch
Rollbackvorheriger Zustand wird wiederhergestelltAbhängig von Daten und Anwendung

Sinnvolle Reihenfolge

  1. anwendungseigene Konfigurationsprüfung,
  2. Reload, wenn unterstützt,
  3. gezielter Dienstneustart,
  4. Failover oder Rollback,
  5. vollständiger Systemneustart nur mit technischer Begründung.

Ein vollständiger Neustart sollte nicht als Standardlösung verwendet werden, wenn ein einzelner Dienst gezielt behandelt werden kann.


17. Änderungen schrittweise ausrollen

VerfahrenBeschreibung
Einzelner TestclientÄnderung zunächst auf einem ausgewählten Client
Einzelne InstanzÄnderung auf einem Server innerhalb einer redundanten Gruppe
Canarykleiner Anteil produktiver Systeme oder Anfragen
Rolling DeploymentInstanzen werden nacheinander geändert
Blue-Greenneue und alte Umgebung existieren parallel
Staged RolloutÄnderung wird in definierten Stufen erweitert
Wartungsgruppeausgewählte Benutzer oder Systeme werden zuerst umgestellt

Beispiel für einen stufenweisen Rollout

  1. Testumgebung,
  2. einzelne produktionsnahe Instanz,
  3. ausgewählte Benutzer,
  4. kleiner Produktionsanteil,
  5. Monitoring auswerten,
  6. weitere Instanzen,
  7. vollständiger Rollout.

Nach jeder Stufe muss ein Entscheidungspunkt bestehen:

  • fortsetzen,
  • beobachten,
  • stoppen,
  • zurückfallen.

18. Canary und Kontrollgruppe vergleichen

MesswertKontrollgruppeCanaryBewertung
Fehlerrate0,5 %0,6 %ähnlich
Antwortzeit220 ms225 msähnlich
CPU-Auslastung42 %44 %ähnlich
HTTP 50023beobachten
erfolgreiche Anmeldungen99,5 %99,4 %ähnlich
neue Protokollfehler00unauffällig

Die Bewertung darf nicht nur auf dem Gesamtsystem erfolgen. Ein kleiner Canary kann in aggregierten Messwerten unsichtbar bleiben. Canary und Kontrollgruppe müssen getrennt ausgewertet werden.


19. Abbruchkriterien vor dem Rollout festlegen

Mögliche Abbruchkriterien:

  • Dienst startet nicht,
  • Health Check schlägt fehl,
  • Benutzerfunktion funktioniert nicht,
  • Fehlerquote steigt über den freigegebenen Grenzwert,
  • Antwortzeit verschlechtert sich erheblich,
  • Datenintegritätsfehler tritt auf,
  • unerwartete Systeme sind betroffen,
  • Administrationszugang geht verloren,
  • Monitoring meldet kritische Fehler,
  • Rückfallmöglichkeit ist nicht mehr gewährleistet,
  • Wartungsfenster wird überschritten.

Schwellenwerte müssen aus SLA, SLO, Monitoring-Baseline oder dokumentierten Anforderungen stammen und dürfen nicht frei erfunden werden.


20. Technische Verifikation in mehreren Ebenen

EbeneZu prüfende Frage
ProzessLäuft der erwartete Prozess?
DienstMeldet der Dienst einen gesunden Zustand?
ListenerLauscht der erwartete Port?
NetzwerkIst das Ziel vom vorgesehenen Client erreichbar?
TLSFunktionieren Zertifikat und Handshake?
ProtokollLiefert der Dienst eine gültige Antwort?
AuthentifizierungKann sich der Benutzer anmelden?
AutorisierungDarf der Benutzer die vorgesehene Funktion verwenden?
AnwendungFunktioniert die konkrete Aktion?
DatenWerden Daten korrekt gelesen und geschrieben?
AbhängigkeitenFunktionieren Datenbank, Storage, DNS und APIs?
MonitoringWird das System korrekt als gesund erkannt?
ProtokolleEntstehen keine neuen relevanten Fehler?
RedundanzSind verbleibende Instanzen und Failover weiterhin verfügbar?

21. Windows-Verifikation

Dienststatus

[RO] Get-Service -Name <Dienstname>

Prozess-ID des Dienstes

[RO] Get-CimInstance Win32_Service -Filter "Name='<Dienstname>'" | Select-Object Name, State, ProcessId

TCP-Listener

[RO][PRIV] Get-NetTCPConnection -State Listen -LocalPort <Port>

Remote-Porttest

[TEST] Test-NetConnection <Servername> -Port <Port> -InformationLevel Detailed

HTTP- oder HTTPS-Test

[TEST] curl.exe -sS -o NUL -w "HTTP=%{http_code} Ziel=%{remote_ip} Gesamt=%{time_total}\n" --connect-timeout 5 --max-time 15 https://<Servername>/

Neue Systemereignisse

[RO] Get-WinEvent -FilterHashtable @{LogName="System"; StartTime=(Get-Date).AddMinutes(-10)} | Select-Object TimeCreated, Id, ProviderName, LevelDisplayName, Message

Neue Anwendungsereignisse

[RO] Get-WinEvent -FilterHashtable @{LogName="Application"; StartTime=(Get-Date).AddMinutes(-10)} | Select-Object TimeCreated, Id, ProviderName, LevelDisplayName, Message


22. Linux-Verifikation

Dienststatus

[RO] systemctl status <Dienstname>.service --no-pager

Nur aktiven Zustand abfragen

[RO] systemctl is-active <Dienstname>.service

Hauptprozess-ID

[RO] systemctl show <Dienstname>.service -p MainPID

TCP-Listener

[RO][PRIV] ss -lntp | grep ":<Port>"

Remote-Porttest

[TEST] nc -vz -w 3 <Servername> <Port>

HTTP- oder HTTPS-Test

[TEST] curl -sS -o /dev/null -w "HTTP=%{http_code} Ziel=%{remote_ip} Gesamt=%{time_total}\n" --connect-timeout 5 --max-time 15 https://<Servername>/

Neue Dienstprotokolle

[RO] journalctl -u <Dienstname>.service --since "10 minutes ago" --no-pager

Neue Fehler des Systems

[RO] journalctl --since "10 minutes ago" -p err --no-pager


23. macOS-Verifikation

Systemdienststatus

[RO][PRIV] launchctl print system/<Dienstlabel>

Benutzerdienststatus

[RO] launchctl print gui/$(id -u)/<Dienstlabel>

TCP-Listener

[RO][PRIV] lsof -nP -iTCP:<Port> -sTCP:LISTEN

Remote-Porttest

[TEST] nc -vz -w 3 <Servername> <Port>

HTTP- oder HTTPS-Test

[TEST] curl -sS -o /dev/null -w "HTTP=%{http_code} Ziel=%{remote_ip} Gesamt=%{time_total}\n" --connect-timeout 5 --max-time 15 https://<Servername>/

Neue Prozessprotokolle

[RO] log show --last 10m --predicate 'process == "<Prozessname>"' --style compact

Neue Fehler und Faults

[RO] log show --last 10m --predicate 'messageType == error OR messageType == fault' --style compact


24. Ursprüngliche Benutzerfunktion prüfen

Eine technische Verifikation reicht nicht aus. Abschließend muss die ursprünglich gestörte Funktion getestet werden.

Beispiele

  • Benutzer kann sich anmelden,
  • Datei kann geöffnet werden,
  • Datei kann gespeichert werden,
  • E-Mail kann gesendet und empfangen werden,
  • Druckauftrag wird vollständig ausgegeben,
  • VPN-Verbindung wird aufgebaut,
  • Anwendung kann Datenbankdaten lesen,
  • Anwendung kann Daten speichern,
  • Backupjob endet erfolgreich,
  • Client erhält korrekte DHCP-Optionen,
  • Gruppenrichtlinie wird angewendet,
  • API liefert erwartete Daten.

Der Test sollte möglichst:

  • vom ursprünglichen Quellsystem,
  • mit dem ursprünglichen Benutzerkontext,
  • über denselben Netzwerkpfad,
  • mit derselben Zieladresse,
  • mit derselben Aktion

durchgeführt werden.


25. Positive und negative Tests durchführen

Positiver Test

Prüft, ob eine erlaubte Funktion erfolgreich ist.

Beispiel:

Ein berechtigter Benutzer kann eine Datei lesen.

Negativer Test

Prüft, ob eine nicht erlaubte Funktion weiterhin verhindert wird.

Beispiel:

Ein unberechtigter Benutzer kann die Datei weiterhin nicht lesen.

Weitere negative Tests

  • geschlossener Port bleibt geschlossen,
  • nicht autorisierter Benutzer bleibt abgewiesen,
  • deaktiviertes Konto kann sich nicht anmelden,
  • abgelaufenes Token wird nicht akzeptiert,
  • unerlaubtes VLAN erhält keinen Zugriff,
  • alte verwundbare Schnittstelle bleibt deaktiviert.

Eine Lösung ist fehlerhaft, wenn sie die Funktion wiederherstellt, dabei aber Sicherheitskontrollen unbeabsichtigt entfernt.


26. Regressionstests durchführen

Ein Regressionstest prüft, ob bisher funktionierende Bereiche nach der Änderung weiterhin funktionieren.

Geänderte KomponenteMögliche Regressionstests
Firewallandere erlaubte und gesperrte Verbindungen
DNSinterne und externe Namensauflösung
DHCPneue und bestehende Clients
WebserverAnmeldung, Upload, Download, API
DatenbankLesen, Schreiben, Replikation, Backup
DateiserverLesen, Schreiben, ACL, Freigaben
Active DirectoryAnmeldung, Gruppenrichtlinie, Replikation
Proxyerlaubte Seiten, Ausnahmen, Authentifizierung
ZertifikatBrowser, API, mobile Clients, alte Clients
Load Balanceralle Backends, Health Checks, Sitzungen
BackupSicherung und testweise Wiederherstellung

27. Persistenz der Lösung prüfen

Manche Korrekturen funktionieren nur bis zum nächsten:

  • Neustart,
  • Dienstneustart,
  • DHCP-Lease-Wechsel,
  • Gruppenrichtlinien-Refresh,
  • Konfigurationsdeployment,
  • Container-Neustart,
  • Failover,
  • Update,
  • Passwort- oder Zertifikatswechsel.

Zu prüfen ist:

  • Wurde die richtige permanente Konfiguration geändert?
  • Wird die Datei durch Automatisierung überschrieben?
  • Stammt die Konfiguration aus einer zentralen Quelle?
  • Ist die Änderung in Versionsverwaltung übernommen?
  • Muss ein Deploymenttemplate angepasst werden?
  • Existieren mehrere Konfigurationskopien?
  • Wird beim Neustart eine alte Konfiguration geladen?

Ein Neustart zur Persistenzprüfung darf nur geplant durchgeführt werden, wenn er technisch erforderlich und freigegeben ist.


28. Monitoring nach der Änderung

Nach einer erfolgreichen Funktionsprüfung muss das System weiter beobachtet werden.

Zu beobachtende Werte

  • Verfügbarkeit,
  • Fehlerquote,
  • Antwortzeit,
  • CPU-Auslastung,
  • Speichernutzung,
  • Datenträgerbelegung,
  • I/O-Wartezeit,
  • Netzwerkfehler,
  • Verbindungsanzahl,
  • Warteschlangen,
  • Datenbankverbindungen,
  • Replikationszustand,
  • Zertifikatsfehler,
  • Anmeldefehler,
  • Benutzerbeschwerden.

Die Beobachtungsdauer richtet sich nach dem Fehlerbild.

FehlerartGeeignete Beobachtung
dauerhafter Startfehlerunmittelbare Tests nach Start
sporadischer Fehlermehrere typische Nutzungszyklen
nächtlicher Jobmindestens nächster geplanter Lauf
DHCP-Problemmindestens ein Lease-Erneuerungszyklus
Backupfehlervollständiger Sicherungs- und Prüfzyklus
Lastproblemtypischer Lastzeitraum
Zertifikatserneuerungvollständige Kette und betroffene Clients
Replikationsproblemvorgesehener Replikationszyklus

29. Rollback-Auslöser

Ein Rollback sollte ausgelöst werden, wenn:

  • definiertes Erfolgskriterium nicht erreicht wird,
  • ursprünglicher Fehler bestehen bleibt,
  • neue kritische Fehler entstehen,
  • unerwartete Systeme betroffen sind,
  • Sicherheitskontrolle nicht mehr funktioniert,
  • Datenintegrität gefährdet ist,
  • Administrationszugang verloren zu gehen droht,
  • Abbruchkriterium erreicht wird,
  • Wartungsfenster überschritten wird,
  • weitere sichere Diagnose nicht möglich ist.

Die Entscheidung darf nicht erst improvisiert werden, nachdem ein Problem entstanden ist.


30. Kontrollierter Rollback-Ablauf

  1. weiteren Rollout stoppen,
  2. zuständige Personen informieren,
  3. aktuellen Fehlerzustand sichern,
  4. Rückfallentscheidung dokumentieren,
  5. freigegebenen Rückfallplan ausführen,
  6. Dienst- und Systemstatus prüfen,
  7. ursprüngliche Funktion testen,
  8. negative Tests durchführen,
  9. Protokolle und Monitoring kontrollieren,
  10. Ergebnis dokumentieren,
  11. weitere Untersuchung planen.

Auch ein Rollback ist eine Änderung und kann fehlschlagen.


31. Rollback oder Roll-forward wählen

SituationRollback eher geeignetRoll-forward eher geeignet
vorherige Version bekannt funktionsfähigJaMöglich
Konfiguration einfach reversibelJaMöglich
Datenbankschema bereits verändertRiskantHäufig besser
neue Daten nicht rückwärtskompatibelRiskantHäufig besser
kritische Sicherheitslücke würde wieder geöffnetEher ungeeignetBesser
Fehlerkorrektur ist klein und geprüftMöglichHäufig besser
vorheriger Zustand nicht eindeutigRiskantMöglicherweise besser
Rollback bereits getestetJaNicht zwingend
Zeit bis zur Folgekorrektur sehr langHäufig besserEher ungeeignet
Produktionsauswirkung steigt schnellschneller sicherer Weg entscheidendschneller sicherer Weg entscheidend

Ein Rollback darf keine bekannte Sicherheitslücke oder Dateninkonsistenz unbewertet wieder einführen.


32. Rollback einfacher Konfigurationsdateien

Eine Konfigurationsdatei darf nur dann direkt zurückkopiert werden, wenn:

  • die Sicherung eindeutig zugeordnet ist,
  • die Prüfsumme geprüft wurde,
  • keine neuen relevanten Änderungen verloren gehen,
  • Dateibesitzer und Berechtigungen bekannt sind,
  • keine Datenmigration betroffen ist,
  • die Anwendung dieses Verfahren unterstützt,
  • der Dienst anschließend korrekt validiert werden kann.

Windows-Beispiel

[CHANGE][PRIV] Copy-Item "<Sicherungsdatei>" "<Konfigurationsdatei>" -Force

Linux-Beispiel

[CHANGE][PRIV] sudo cp --preserve=all -- "<Sicherungsdatei>" "<Konfigurationsdatei>"

macOS-Beispiel

[CHANGE][PRIV] sudo cp -p "<Sicherungsdatei>" "<Konfigurationsdatei>"

Diese Befehle sind keine universelle Rollbacklösung. Datenbanken, Verzeichnisdienste, Cluster, Containerplattformen und komplexe Anwendungen benötigen die vom Hersteller vorgesehene Wiederherstellungsmethode.

Nach dem Zurückkopieren müssen mindestens geprüft werden:

  • Inhalt,
  • Prüfsumme,
  • Besitzer,
  • Gruppe,
  • Berechtigungen,
  • ACL,
  • Syntax,
  • Dienststart,
  • Funktion.

33. Kommunikation während der Umsetzung

ZeitpunktInformation
Vor BeginnUmfang, erwartete Auswirkung und Zeitraum
Zu BeginnÄnderung wurde gestartet
Währenddessenrelevante Abweichungen oder Verzögerungen
Bei AbbruchGrund und eingeleitete Rückfallmaßnahme
Nach ErfolgFunktion wiederhergestellt und Beobachtung läuft
Nach Rollbackvorheriger Zustand wiederhergestellt
Nach AbschlussErgebnis, offene Punkte und Präventionsmaßnahmen

Technische Kommunikation sollte sachlich sein und zwischen folgenden Zuständen unterscheiden:

  • Störung erkannt,
  • Ursache vermutet,
  • Ursache bestätigt,
  • Workaround aktiv,
  • Dienst wiederhergestellt,
  • dauerhafte Lösung umgesetzt,
  • Beobachtung läuft,
  • Störung abgeschlossen.

34. Vollständiges Praxisbeispiel

Störung

Ein Backend liefert HTTP 503, weil die Anwendung einen falschen Datenbank-Hostnamen verwendet.

Bestätigte Ursache

Die neue Konfigurationsdatei enthält db-prdo.example statt db-prod.example.

Geplante Lösung

  • Konfiguration korrigieren,
  • Syntax validieren,
  • Änderung zunächst auf einem Backend anwenden,
  • Dienst neu laden oder neu starten,
  • technische und fachliche Funktion prüfen,
  • danach weitere Instanzen ändern.

Rückfallplan

  • gesicherte vorherige Konfiguration zurückspielen,
  • Dienst erneut starten,
  • Backend aus Load-Balancer-Rotation entfernen, falls es weiterhin fehlerhaft ist.

Erfolgskriterien

  • Dienststatus aktiv,
  • TCP-Listener vorhanden,
  • Datenbankverbindung erfolgreich,
  • HTTP-Health-Check erfolgreich,
  • Anmeldung funktioniert,
  • keine neuen Fehler im Protokoll,
  • Fehlerrate entspricht der Kontrollgruppe.

Abbruchkriterien

  • Dienst startet nicht,
  • Datenbankverbindung bleibt gestört,
  • neue Fehler treten auf,
  • Antwortzeit verschlechtert sich deutlich,
  • Benutzerfunktion schlägt fehl.

Ablauf

SchrittMaßnahme
1Ausgangszustand und Protokolle sichern
2aktuelle Konfiguration sichern und Prüfsumme bilden
3korrigierte Datei in Testumgebung validieren
4ein Backend aus der Rotation nehmen
5Konfiguration auf diesem Backend ändern
6Konfigurationsprüfung ausführen
7Dienst kontrolliert neu laden oder starten
8Listener und Protokolle prüfen
9Datenbankfunktion prüfen
10HTTP- und Anmeldetest durchführen
11Backend mit Kontrollgruppe vergleichen
12Backend wieder in Rotation nehmen
13Monitoring beobachten
14Änderung schrittweise auf weitere Instanzen ausrollen

35. Verifikationsprotokoll

FeldVor ÄnderungNach ÄnderungNach Beobachtung
Zeitpunkt
Dienststatus
Prozess-ID
Listener
Ziel-IP
HTTP-Status
Antwortzeit
Authentifizierung
Benutzerfunktion
Datenbankverbindung
Fehler im Protokoll
Monitoringstatus
Fehlerrate
Nebenwirkungen

36. Änderungs- und Rollbackprotokoll

FeldEintrag
Ticket- oder Change-Nummer
bestätigte Ursache
umgesetzte Änderung
Beginn
Ende
ausführende Person
betroffene Systeme
Sicherungsdatei oder Backup
Prüfsumme
KonfigurationsprüfungBestanden / Nicht bestanden
Dienstneustart erforderlichJa / Nein
Erfolgskriterien erreichtJa / Nein / Teilweise
Abbruchkriterium erreichtJa / Nein
Rollback durchgeführtJa / Nein
Rollback-Ergebnis
Benutzerfunktion geprüftJa / Nein
Regressionstests durchgeführt
Beobachtungsdauer
neue Fehler
verbleibende Risiken
offene Maßnahmen

37. Häufige Fehler bei der Lösungsumsetzung

FehlerFolgeBesseres Vorgehen
Keine SicherungAusgangszustand kann nicht wiederhergestellt werdenKonfiguration oder Backup vorher sichern
Backup mit Rollback verwechseltWiederherstellung ist nicht geplantvollständigen Rückfallablauf dokumentieren
Mehrere Änderungen gleichzeitigWirkung nicht zuordenbarkleine einzelne Änderungen
Sofortiger vollständiger Rolloutgroßer möglicher AusfallCanary oder stufenweiser Rollout
Nur Dienststatus geprüftBenutzerfunktion kann weiterhin gestört seinEnde-zu-Ende-Test durchführen
Nur positiver TestSicherheitskontrolle kann unbemerkt fehlennegativen Test ergänzen
Keine Abbruchkriterienzu lange an fehlerhafter Änderung festgehaltenGrenzwerte vorher definieren
Rollback erst im Fehlerfall geplantzusätzliche AusfallzeitRollback vor Beginn vorbereiten
Snapshot als einziges BackupWiederherstellung möglicherweise ungeeignetanwendungsgerechtes Backup verwenden
Neustart als Standardlösungunnötige Unterbrechung und Informationsverlustkleinste geeignete Maßnahme wählen
Monitoring sofort beendetsporadischer Fehler bleibt unentdecktangemessene Beobachtungsdauer
Workaround als dauerhafte Lösung behandeltGrundursache bleibt bestehenFolgeaufgabe mit Verantwortlichkeit
Sicherheitsupdate zurückgenommenbekannte Schwachstelle erneut aktivSicherheitsrisiko bewerten und Roll-forward prüfen
Dokumentation erst später erstelltgenaue Schritte und Zeiten gehen verlorenwährend der Änderung dokumentieren

Kurzcheckliste

  •  Ursache ausreichend bestätigt
  •  Sofortmaßnahme und dauerhafte Lösung getrennt
  •  Änderungsumfang eindeutig definiert
  •  Auswirkungen und Abhängigkeiten geprüft
  •  Risiko bewertet
  •  Freigabe eingeholt
  •  Wartungsfenster geklärt
  •  Ausgangszustand dokumentiert
  •  Konfiguration oder Daten gesichert
  •  Prüfsummen dokumentiert
  •  Rückfallplan vorhanden
  •  Rückfallplan technisch durchführbar
  •  Erfolgskriterien festgelegt
  •  Abbruchkriterien festgelegt
  •  Monitoring vorbereitet
  •  Kommunikation vorbereitet
  •  Konfiguration vor Aktivierung validiert
  •  Änderung möglichst klein gehalten
  •  Änderung zunächst begrenzt ausgerollt
  •  Dienststatus geprüft
  •  Prozess und Listener geprüft
  •  Netzwerk- und Protokolltest durchgeführt
  •  ursprüngliche Benutzerfunktion geprüft
  •  negative Sicherheitstests durchgeführt
  •  Regressionstests durchgeführt
  •  Protokolle nach der Änderung geprüft
  •  Monitoring nach der Änderung beobachtet
  •  Persistenz der Lösung berücksichtigt
  •  Rollback bei Erreichen eines Abbruchkriteriums durchgeführt
  •  Ergebnis und offene Maßnahmen dokumentiert

Ergebnis dieses Arbeitsschrittes

Am Ende dieses Schrittes ist die bestätigte Ursache durch eine kontrollierte und dokumentierte Änderung behandelt.

Die Lösung gilt erst als erfolgreich, wenn:

  • technische Prüfungen bestanden sind,
  • die ursprüngliche Benutzerfunktion funktioniert,
  • abhängige Funktionen weiterhin funktionieren,
  • Sicherheitskontrollen weiterhin wirksam sind,
  • keine neuen relevanten Fehler auftreten,
  • Monitoring einen stabilen Zustand zeigt,
  • die Änderung dauerhaft bestehen bleibt,
  • Rückfall- oder Folgemaßnahmen dokumentiert sind.

Nächste Seite:
1.9 Störung dokumentieren, abschließen und Wiederholung verhindern


Offizielle Hersteller-, Standard- und Projektdokumentation