Active Directory Disaster Recovery
Artikel erschienen in Swiss IT Magazine 2004/04
Active-Directory-Datenbanken sind nun seit vielen Jahren durch die Einführung von Windows-2000- respektive Windows-2003-Domänen in den Unternehmen im praktischen Einsatz. Die Stabilität dieser auf Exchange-Technologie basierenden Datenbank ist erfreulich hoch. Dank eines ausgeklügelten automatischen Wiederherstellungsverfahrens mit Hilfe von Transaktionsprotokollen und der Verteilung der Informationen auf mehrere Domänencontroller ist ein katastrophaler Ausfall des zentralen Nervensystems eines modernen Windows-Netzwerks nahezu ausgeschlossen. Jedoch gibt es unter Windows 2000 und bei manchen Windows-2003-Domänen einen "dunklen Fleck", der die Stabilität von Unternehmensinformationen beeinträchtigen kann.
Die Technologie der Transaktionsprotokolle wurde vor vielen Jahren mit Microsoft Exchange eingeführt und hat sich als äusserst stabiles und zuverlässiges Datenbanksystem etabliert. Die sogenannte Jet-Engine-Technologie speichert jede Transaktion, die im flüchtigen Hauptspeicher (RAM) des Servers durchgeführt wird, zeitgleich in dateibasierten Transaktionslogdateien. Im Falle eines Stromausfalls kann sich ein Server dank der Protokolle selbständig reparieren und die Datenbank in einen konsistenten Zustand zurücksetzen.
In der Regel wird kein Unternehmen nur einen einzigen Domänencontroller, sondern ein redundantes System aus mindestens zwei DCs betreiben. Seit Windows 2000 sind dabei alle DCs nahezu gleichwertig, was heisst, dass jeder DC eine vollständige Kopie der Active-Directory-Datenbank hat, auf die er sowohl lesend als auch schreibend zugreifen kann. Änderungen, die an einem DC durchgeführt werden, werden über ein Benachrichtigungs- und Replikationssystem an alle anderen DCs weitergereicht. Windows 2000/2003 überträgt dabei lediglich die Änderungen auf Attributebene - wird an einem Benutzerobjekt nur die Telefonnummer geändert, so wird auch nur die neue Telefonnummer an die anderen Domänencontroller übertragen und nicht das gesamte Objekt mit all seinen Attributen. Die einzige Ausnahme von dieser Regelung betrifft einen Spezialfall, der in Windows 2000 generell vorkommt und in Windows 2003 bei Domänencontrollern, die noch nicht im Windows-2003-Interim- oder Windows-2003-Domain-Functional-Level betrieben werden: die Replikation von Gruppenmitgliedschaften.
Alle Mitglieder einer Gruppe werden im Active Directory in einem Attribut namens "Member of" gespeichert. Windows-2000-Domänencontroller behandeln dieses Attribut wie andere Attribute auch, das heisst, sobald sich bei diesem Attribut etwas ändert, wird die Versionsnummer erhöht, ein Zeitstempel gesetzt und die Replikation angestossen. Bei sehr grossen Gruppen mit mehreren Hundert Mitgliedern führt eine Änderung an der Gruppenmitgliedschaft demnach zu einer vollständigen Replikation aller Informationen dieses Attributs. Wird aus einer Gruppe mit 1600 Mitgliedern ein Benutzer entfernt, werden die Informationen von 1599 verbleibenden Mitgliedern ebenfalls an die anderen Domänencontroller repliziert.
Hier hat Microsoft mit Windows 2003 nachgebessert: Neu wird bei der Replikation von Gruppenmitgliedern die sogenannte "linked value replication"-Methode verwendet: Wird in einer Gruppenmitgliedschaft nur ein Benutzer hinzugefügt oder entfernt, so wird nicht das komplette Attribut mit all seinen Mitgliedern, sondern nur die tatsächlich durchgeführte Änderung übertragen.
Allerdings wird das hier beschriebene Verfahren nur dann eingesetzt, wenn sich eine Windows-2003-Domäne im Windows-2003- oder Windows-2003-Interim-Modus befindet. Diesen Modus allerdings kann man erst erreichen, wenn sich keine Windows-2000-Domänencontroller mehr in der Domäne befinden.
Wiederherstellung eines Active-Directory-Backups
Hat man den Windows-2003-Domain-Functional-Level noch nicht erreicht oder setzt eine rein auf Windows-2000-DC basierende Domänenumgebung ein, kann sich das im Folgenden beschriebene Problem ergeben. Ändert ein Administrator die Gruppenmitgliedschaft, wird die Versionsnummer des Attributs "Member of" erhöht. Löscht hingegen ein Administrator einen Benutzer B oder beispielsweise aus Versehen eine komplette Organisational Unit (OU), in der sich mehrere Benutzer befinden, so werden von Windows automatisch auch alle Gruppen aktualisiert, in denen der gelöschte Benutzer Mitglied war (was ja korrekt ist).
Allerdings - hier kommt der Knackpunkt - wird beim Entfernen des Benutzers aus der Liste "Member of" die Versionsnummer des Attributs nicht erhöht. Auch der Zeitstempel der letzten Änderung bleibt unverändert. Diese Vorgehensweise ist getreu dem Motto "it's not a bug - it's a feature" bewusst von Microsoft implementiert worden und stellt in der Regel kein Problem dar: Denn das Löschen eines oder mehrerer Benutzer wird auf alle Domänencontroller repliziert, und jeder DC führt aus diesem Grund lokal in seiner Active-Directory-Datenbank denselben Vorgang aus, indem er aus allen Gruppen, in denen der Benutzer Mitglied war, diesen herausnimmt (auch wieder ohne die Versionsnummer von "Member of" zu verändern).
Hat ein Administrator jedoch aus Versehen Objekte gelöscht, die er nun durch Zurückspielen eines Backups mit anschliessendem Markieren aller Objekte (im Beispiel Benutzer B) mit Hilfe eines Authoritative Restore durch Verwendung von ntdsutil.exe wiederherstellt, können korrupte Active-Directory-Datenbanken entstehen. Da die Versionsnummern bei den "Member of"-Attributen durch obige Löschaktion nicht verändert wurden, stellt der Administrator vom Band eine Gruppe mit anderen Inhalten des "Member of"-Attributs her, jedoch mit demselben Zeit- und Versionsstempel wie die vorhandenen Replikate der anderen DCs. Nach der Wiederherstellung hat der Administrator nun unterschiedliche Gruppenmitgliedschaften, je nachdem, mit welchem Domänencontroller er sich verbindet.
Die Konsistenz wird erst dann wiederhergestellt, wenn in jeder betroffenen Gruppe die Gruppenmitgliedschaft einmal "angefasst" wird, damit die Versionsnummer erhöht werden kann. Ob dabei die aktuelle oder die veraltete Version dieses "Member of"-Attributs an die anderen DCs repliziert wird, wird nahezu dem Zufall überlassen...
Sollten Sie noch eine Windows-2000-Domäne betreiben oder noch Windows-2003-Domänencontroller im Einsatz haben, die noch nicht im Windows-2003-Modus arbeiten, können Sie Ihre Domäne mit einem von der NT-Anwendergruppe bereitgestellten Werkzeug namens AnaGroup.exe darauf überprüfen, ob Sie korrupte Datenbanken im Einsatz haben, das heisst, ob die Gruppenmitgliedschaften auf verschiedenen DCs nicht identisch sind. Das Tool kann kostenfrei heruntergeladen werden. Wenn Sie Ihre Domäne dagegen bereits im Windows-2003- respektive im Windows-2003-Interim-Functional-Level betreiben, sind Sie vor dem in diesem Artikel beschriebenen Problem geschützt. Weitere Informationen finden Sie in der TechNet im Artikel Q280079 oder im TechNet-Artikel "Active Directory Disaster Recovery".
Ralf Feest ist Direktor Enterprise Services bei der AddOn (Schweiz) AG und Gründer der 12'000 Mitglieder umfassenden, kostenfreien Vereinigung von Microsoft System- und Netzwerkadministratoren. Die NT-Anwendergruppe trifft sich dreimal im Jahr zu aktuellen technischen Vorträgen und zum Erfahrungsaustausch. Der nächste Fachkongress findet am 2.3.04 in Wallisellen statt. Die Teilnahme an den Treffen ist kostenlos - Anmeldung über die Homepage der NT-AG.