Rollback¶
Rollback ist TCM365s Fähigkeit, Tenant-Konfigurationen auf einen vorherigen bekannten Zustand wiederherzustellen. Durch Nutzung erfasster Snapshots als Referenz können Administratoren unautorisierte Änderungen zurücksetzen, Fehlkonfigurationen beheben oder fehlgeschlagene Deployments rückgängig machen -- mit vollstaendigem Audit Trail.
Übersicht¶
Das Rollback-Feature operiert über das vendor-agnostische VendorAdapter.apply()-Interface
und ermöglicht konsistentes Rollback-Verhalten über alle unterstützten Anbieter.
Jede Rollback-Operation wird in der RollbackHistory-Entity erfasst und bietet einen
vollständigen Audit Trail darueber, was wann und von wem geändert wurde.
Kernfunktionen¶
- Kontrollierter Rollback auf jede frühere Snapshot-Konfiguration
- 52 Microsoft 365 Resource Types mit Write-Back-Unterstützung
- Zscaler ZIA/ZPA Rollback mit Staging- und Direct-Modi
- Atlassian Cloud Rollback via Direct Write Methods (v2.5.0)
- Granulare Resource-Type-Auswahl (nur bestimmte Einstellungen zurücksetzen)
- Capability Matrix mit unterstützten Rollback-Operationen pro Resource Type
- Vollständige Rollback-Historie mit Vorher/Nachher-Zustandsverfolgung
- Integration mit Change Management für Genehmigungsworkflows
- Vendor-agnostisch via VendorAdapter Pattern
Rollback-Architektur¶
VendorAdapter.apply()¶
Alle Rollback-Operationen laufen über die VendorAdapter.apply()-Methode:
interface VendorAdapter {
apply(tenant: VendorTenant, config: ConfigPayload): Promise<ApplyResult>;
}
Rollback-Ablauf¶
sequenceDiagram
participant A as Administrator
participant B as TCM365 Backend
participant V as Vendor API
A->>B: POST /rollback
Note over B: Snapshot-Konfiguration laden
Note over B: Aktuellen Zustand erfassen (Pre-Rollback Snapshot)
B->>V: VendorAdapter.apply()
V-->>B: 200 OK
Note over B: In RollbackHistory erfassen
B-->>A: { status: completed, rollbackId: uuid }
Pre-Rollback-Sicherheit¶
Vor der Ausführung eines Rollbacks führt TCM365 automatisch folgende Schritte durch:
- Aktuellen Zustand erfassen -- Snapshot der aktuellen Konfiguration als Sicherheitsnetz
- Berechtigungen validieren -- Prüfung der Write Permissions der Azure AD App Registration
- Konflikte prüfen -- Identifikation laufender Operationen auf demselben Tenant
Microsoft 365 Rollback¶
Unterstützte Resource Types¶
TCM365 unterstützt Rollback für alle 52 Microsoft 365 Resource Types. Die
CapabilityMatrix-Komponente im Frontend zeigt die unterstützten Operationen
pro Resource Type an.
| Workload | Rollback-Unterstützung | Hinweise |
|---|---|---|
| Entra ID | Voll | CA Policies, Named Locations, Auth Methods, Cross-tenant Access |
| Intune | Voll | Device Configurations, Compliance Policies, App Protection |
| Defender | Voll | Anti-Phishing, Anti-Malware, Safe Attachments, Safe Links |
| Exchange | Voll | Transport Rules, Connectors, Mailbox Policies |
| Teams | Voll | Messaging Policies, Meeting Policies, App Permissions |
| SharePoint | Voll | Sharing Settings, Tenant Settings |
| Cloud PC | Voll | Provisioning Policies, User Settings |
| Purview | Teilweise | Sensitivity Labels (Read-Only Labels ausgeschlossen) |
Write App Registration (v2.2.0)¶
Ab v2.2.0 unterstützt TCM365 getrennte Read- und Write-App-Registrations für Microsoft 365. Dies ermöglicht Organisationen:
- Eine Read-Only App Registration für taegliche Snapshot-Operationen
- Write Permissions auf eine separate App Registration nur für Rollback beschränken
- Dem Prinzip der geringsten Berechtigung für API-Zugriff folgen
Die Write App Registration wird über den M365 Setup Wizard konfiguriert und
verschlüsselt im M365VendorTenant-Entity-Feld write_credentials gespeichert.
Erforderliche Permissions (Write)¶
| Permission-Kategorie | Erforderliche Permissions |
|---|---|
| Entra ID | Policy.ReadWrite.ConditionalAccess, Policy.ReadWrite.AuthenticationMethod |
| Intune | DeviceManagementConfiguration.ReadWrite.All |
| Defender | ThreatPolicy.ReadWrite.All |
| Exchange | ExchangeManagement.ReadWrite.All |
| Teams | TeamSettings.ReadWrite.All |
Zscaler Rollback¶
Rollback-Modi¶
Zscaler Rollback unterstützt zwei Modi:
| Modus | Beschreibung | Anwendungsfall |
|---|---|---|
| Staging | Schreibt Konfiguration in den Staging-Bereich zur Überprüfung vor Aktivierung | Produktionsumgebungen, vorsichtiger Rollback |
| Direct | Wendet Konfigurationsänderungen sofort an | Entwicklung, Notfall-Rollback |
ZIA Rollback¶
Der ZscalerZiaClient verarbeitet Write-Operationen für ZIA-Konfigurationen:
- URL Filtering Rules, Firewall Rules, DLP Rules
- SSL Inspection Rules, Security Policies
- Location Management, Bandwidth Control
ZIA Rate Limits
ZIA Write-Operationen sind auf 10 Anfragen pro 10 Sekunden begrenzt.
Der ZscalerRateLimiter drosselt Anfragen automatisch innerhalb der Limits.
ZPA Rollback¶
Der ZscalerZpaClient verarbeitet Write-Operationen für ZPA-Konfigurationen:
- Application Segments, Access Policies
- Server Groups, Segment Groups, Connector Groups
ZPA Rate Limits
ZPA-Operationen sind auf 15 Anfragen pro 10 Sekunden begrenzt.
Der ZscalerRateLimiter verarbeitet die Drosselung automatisch.
Rollback-API¶
Rollback ausführen¶
{
"vendorTenantId": "uuid-of-vendor-tenant",
"snapshotId": "uuid-of-target-snapshot",
"resourceTypes": [
"microsoft.entra.conditionalAccess",
"microsoft.entra.namedLocations"
],
"reason": "Unautorisierte CA Policy-Änderungen zurücksetzen, erkannt durch Drift Monitor",
"changeRequestId": "uuid-of-approved-change-request"
}
Response¶
{
"rollbackId": "uuid",
"status": "completed",
"resourcesProcessed": 2,
"resourcesSucceeded": 2,
"resourcesFailed": 0,
"preRollbackSnapshotId": "uuid-of-safety-snapshot",
"results": [
{
"resourceType": "microsoft.entra.conditionalAccess",
"status": "success",
"itemsReverted": 3,
"details": "3 Conditional Access Policies auf Baseline-Zustand zurückgesetzt"
}
]
}
API-Endpoints¶
| Methode | Endpoint | Beschreibung |
|---|---|---|
POST |
/api/v1/rollback |
Rollback-Operation ausführen |
GET |
/api/v1/rollback/history |
Rollback-Historie auflisten |
GET |
/api/v1/rollback/history/{id} |
Rollback-Details abrufen |
GET |
/api/v1/rollback/capabilities |
Capability Matrix abrufen |
POST |
/api/v1/rollback/preview |
Änderungen vor Rollback vorschauen |
RollbackHistory Entity¶
Jede Rollback-Operation wird für Audit-Zwecke erfasst:
| Feld | Typ | Beschreibung |
|---|---|---|
id |
UUID | Primärschlüssel |
vendor_tenant_id |
UUID | FK zum Vendor Tenant |
snapshot_id |
UUID | FK zum Ziel-Snapshot |
pre_rollback_snapshot_id |
UUID | FK zum Sicherheits-Snapshot vor Rollback |
resource_types |
JSONB | Resource Types, die zurückgesetzt wurden |
status |
enum | pending, in_progress, completed, failed, partial |
reason |
text | Grund für den Rollback |
change_request_id |
UUID | FK zum zugehörigen Change Request (optional) |
initiated_by |
UUID | FK zum Benutzer, der den Rollback initiiert hat |
results |
JSONB | Ergebnisse pro Resource Type |
error_details |
JSONB | Fehlerinformationen bei fehlgeschlagenen Rollbacks |
started_at |
timestamp | Rollback-Startzeit |
completed_at |
timestamp | Rollback-Abschlusszeit |
created_at |
timestamp | Record-Erstellungszeit |
Rollback-Vorschau¶
Vor der Ausführung eines Rollbacks können Administratoren vorschauen, welche Änderungen vorgenommen werden:
{
"vendorTenantId": "uuid",
"snapshotId": "uuid",
"resourceTypes": ["microsoft.entra.conditionalAccess"]
}
Die Vorschau-Response zeigt einen Diff zwischen aktuellem Zustand und dem Ziel-Snapshot, sodass Administratoren Änderungen vor dem Commit überprüfen können.
Change Management-Integration¶
Rollback-Operationen können mit Change Management-Antraegen für Compliance verknüpft werden:
- Change Request erstellen -- Rollback-Bedarf mit Begründung dokumentieren
- Genehmigung einholen -- Durch die Approval Chain leiten
- Rollback ausführen -- Genehmigte Change Request ID referenzieren
- Ergebnisse dokumentieren -- Rollback-Ergebnisse werden automatisch mit dem Change Request verknüpft
- Audit Trail -- Vollständige Kette von Drift-Erkennung über Genehmigung bis Ausführung
Fehlerbehandlung¶
Partieller Rollback¶
Wenn ein Rollback für einige Resource Types fehlschlägt aber für andere erfolgreich ist,
wird die Operation als partial markiert:
{
"status": "partial",
"resourcesProcessed": 3,
"resourcesSucceeded": 2,
"resourcesFailed": 1,
"results": [
{ "resourceType": "microsoft.entra.conditionalAccess", "status": "success" },
{ "resourceType": "microsoft.entra.namedLocations", "status": "success" },
{ "resourceType": "microsoft.intune.deviceConfigurations", "status": "failed",
"error": "Unzureichende Berechtigungen: DeviceManagementConfiguration.ReadWrite.All erforderlich" }
]
}
Rollback eines Rollbacks¶
Wenn ein Rollback unerwartete Probleme verursacht, kann der Pre-Rollback-Sicherheits-Snapshot verwendet werden, um den Zustand vor dem Rollback wiederherzustellen. Dies bietet ein doppeltes Sicherheitsnetz für die Konfigurationswiederherstellung.
Best Practices¶
- Immer zuerst vorschauen -- Vorschau-Endpoint nutzen um Änderungen vor Ausführung zu prüfen
- Change Management nutzen -- Rollbacks mit genehmigten Change Requests für Audit-Compliance verknüpfen
- Spezifische Resource Types wählen -- Nur betroffene Resource Types zurücksetzen, nicht alles
- Nach Rollback verifizieren -- Neuen Snapshot erstellen und Drift-Erkennung ausführen zur Bestätigung
- Getrennte Read/Write Apps -- Separate App Registrations (v2.2.0) verwenden um Write-Zugriff zu beschränken
- Zuerst in Nicht-Produktion testen -- Wenn möglich, Rollback in einem Entwicklungs-Tenant vor Produktion testen
- Gruende dokumentieren -- Immer einen klaren Grund für den Rollback im Request angeben
- Rate Limits beachten -- Bei grossen Rollbacks mit vielen Resource Types die Vendor API Rate Limits beachten