Bents Blog

 

Ein IT Blog mit Themen aus dem Windows Server Umfeld.

Datenimport ins Active-Directory mittels Excel-Vorlage und CSVDE

Sicherlich werden die meisten, heutigen IT-Admins während ihrer Berufsausbildung oder im Rahmen von Zusatzqualifikationen an dem Thema Automatisierter Import von Benutzerkonten ins Active Directory vorbeigekommen sein. Ob und wann man dieses Wissen im praktischen Alltag benötigt wird, steht allerdings auf einem anderen Blatt.  Bei mir lagen etliche Jahre dazwischen und die Informationen stammten damals noch aus Windows 2000 Server. Umso erfreuter war ich, dass die Vorgehensweise und Werkzeuge prinzipiell die Gleichen geblieben sind.

Aber wie so oft liegt auch hier der Teufel im Detail und es galt einige Besonderheiten zu beachten, die eine Dokumentation unerlässlich machen. Einer meiner Informatikdozenten (in diesem Fall sogar eine Dozentin) pflegte zu sagen „Was nicht dokumentiert ist, existiert nicht!“ und behielt damit in den meisten Fällen recht, was mich letztendlich zu diesem Artikel bewog.

Das Ziel bestand darin, aus einer leicht pflegbaren Vorlage eine für den automatisierten Import ins Active Directory konforme CSV-Datei zu erstellen. Dabei sollte natürlich der zusätzliche administrative Aufwand durch benötigte Anpassungen möglichst gering gehalten werden.

Dank zahlreicher sehr ausführlicher und nützlicher Artikel im Netz (besonders vor Nils Kaczenski’s Blog kann ich nur meinen Hut ziehen) war diese Aufgabe jedoch mit überschaubarem Aufwand zu lösen.

Bevor es ans Eingemachte geht aber noch ein Wort der Warnung vorab:

Das Active Directory bildet in vielen Umgebungen die Kernkomponente für die Benutzer- und Rechteverwaltung. Mittels automatisierten Import- oder Exportverfahren lässt sich hier in Sekundenbruchteilen sehr großer Schaden anrichten. Folglich sollte man sich zunächst nur in einer Testumgebung an das Thema wagen und wenn man genau weiß was man tut. Ich kann nicht ausschließen, dass sich in den hier verlinkten Dokumenten oder meiner Vorlage Fehler befinden und hafte nicht für diese oder den durch Fehlbedienung entstandenen Schaden.

Verwendete Quellen und Tools

Die Informationen für meine Umsetzung habe ich aus folgenden Artikeln entnommen:

Als zusätzliche Werkzeuge habe ich neben Excel und dem im Betriebssystem mitgeleiferten csvde lediglich das Tool Admod von Joeware verwendet (ADmod von Joeware.net).

Beschreibung und Verwendung der Import-Tabelle

Ein Wort vorab: Die Excel-Tabelle ist für einen spezifischen Anwendungsfall geschrieben und war nicht als generelle Vorlage gedacht.

Ich habe vor der Veröffentlichung im Artikel lediglich die implementierungsspezifischen Felder (OUs, Gruppen und CN der Domäne) durch Beispielwerte ergänzt, die natürlich vor der Verwendung wiederum manuell angepasst werden müssen. Ich habe diese angepasste Version nicht separat getestet.

Hier der Downloadlink der Vorlage: Excel-Formular-Datenimport-AD

Ohne große Überlegung fallen mir zahlreiche mögliche Anpassungen ein, um diese Vorlage noch universeller zu gestalten, wie z.B. mittels eines separaten Konfigurationsarbeitsblattes, in der entsprechende Strukturelemente der Zieldomänenstruktur angepasst werden, die dann zur Bildung der Datenfelder herangezogen werden. Da die Zeit (vor allem bei Admins) leider eine begrenzt vorhandene Ressource ist und ich dieses Formular bisher nur ein einem konkreten Anwendungsfall benötigt habe, muss ich eine weitergehende Anpassung verschieben. Sofern ich zu einem späteren Punkt Zeit finde, werde ich evtl. Funktionen ergänzen und die Vorlage dann aktualisieren.

Prinzipiell ist die Verwendung folgendermaßen gedacht:

Auf dem Arbeitsblatt Dateneingabe erfolgt die Datenerfassung in den grün hinterlegten Feldern. Eigentliche Pflichtfelder sind nur Vorname, Nachname sowie die Gruppe und das Passwort, wobei die Vergabe des Nachnamens für die Bildung der Anmeldenamen (sAMAccountName und userPrincipalName) herangezogen wird. Aus der Gruppe ergibt die die Ziel-OU (siehe folgende Erläuterung).

Auf dem Blatt AD-Import erfolgt die Datenberechnung automatisch der für den Datenimport per csvde.

Auf dem letzten Arbeitsblatt ADmod-Operationen werden benötigte Daten für zusätzliche Operationen gesammelt, in meinem Anwendungsfall sind dies Passwörter und die Gruppenmitgliedschaft.

In meinem Anwendungsfall wird von folgenden Gegebenheiten ausgegangen, die entsprechend im Formular anzupassen bzw. vorzubereiten sind:

  1. Die Anmeldenamen werden nach dem Schema Vorname.Nachname(@Domäne) gebildet, wobei zunächst der userPrincipalName in Spalte H und daraus der einfach auf 20 Zeichen gekürzte sAMAccountName in Spalte I auf dem Arbeitsblatt Dateneingabe gebildet wird. Sofern eine Kürzung des Anmeldenamens erfolgt, wird der entsprechende Eintrag in Spalte I rot hinterlegt. In jedem Fall ist der Domänenname und ggf. die Bildungsregel in der Formel in Spalte H anzupassen.
  2. Der Domänenname lautet contoso.local und alle durch das Formular angelegten Benutzer und Gruppen befinden sich unterhalb der OU „Container“, diese Objekte sind in den Formeln der Spalte A des Arbeitsblattes AD-Import sowie Spalte E des Arbeitsblattes ADmod-Operationen anzupassen.
  3. Alle Gruppenobjekte befinden sich mit innerhalb der im ersten Schritt definierten OU. Bei Bedarf ist der DN der Gruppe in Spalte E des Arbeitsblattes ADmod-Operationen zu bearbeiten.
  4. Jedes Benutzerobjekt befindet sich innerhalb einer eigenen, gleichnamigen OU unterhalb der im ersten Schritt definierten. Der Name wird jeweils direkt aus dem Dropdown-Eingabefeld übernommen. Die entsprechenden Gruppen werden in der Spalte K; Zeilen 4-7 des Arbeitsblattes Dateneingabe. Wenn hier weitere Felder ergänzt werden sollen, muss der Wertebereich in Excel über Daten, Datenüberprüfung erweitert werden.
  5. Es werden keine Gruppenobjekte oder OUs angelegt, diese müssen vorher manuell eingepflegt werden.
  6. In der Vorlage sind nur die Zeilen bis 200 (Dateneingabe) bzw. 198 (AD-Import und ADmod-Operationen) mit Formeln gefüllt. Leider kenne ich keine Möglichkeit, Formeln zur Laufzeit bei Bedarf einzufügen.

Ablauf des Datenimportes

Der Datenimport muss mehrstufig erfolgen, da sich einige Datenfelder nicht einfach per csvde importieren lassen, sondern nachträglich gesetzt werden müssen.

Bei den von mir benutzten Feldern betrifft das die Gruppenmitgliedschaften und die Passwörter für die Benutzer. Ausgehend von einer ordnungsgemäß aufgefüllten Tabelle sind folgende Schritte durchzuführen:

  1. Anlegen der benötigten Gruppen und OUs
  2. Export der Tabelle AD-Import in eine konforme CSV mittels des CSV-Export Plugins (Tastenkonbination Strg+Shift+X, folgend Angabe des Zieldateinamens)
  3. Da mit Formeln hinterlegte Zellen leider mit exportiert werden, müssen in der CSV-Datei die Zeilen ohne Daten entfernt werden. Löschen von aller Zeilen ohne Daten am Ende des Dokumentes.
  4. Import der CSV per Kommando: csvde -i -f *CSV-Datei* -j *Logpfad* als berechtigter Benutzer. Als Logpfad darf keine Datei angegeben werden, diese wird automatisch erstellt.
  5. Setzen der Passwörter durch Kopieren und Ausführen der Ergebnisse der Spalte F (ohne Überschrift) aus dem Arbeitsblatt ADmod-Operationen in eine Batchdatei.
  6. Hinzufügen der Benutzer zu einer Zielgruppe durch Kopieren und Ausführen der Spalte G (ohne Überschrift) aus dem Arbeitsblatt ADmod-Operationen in eine Batchdatei.

Sofern alle Felder korrekt ausgefüllt sind und keine Fehler durch doppelte Anmeldenamen o.ä. auftreten (welche im Log von csvde nachverfolgt werden können), ist der Import an dieser Stelle abgeschlossen. Der Import per csvde dauerte auf meinen Testsystemen auch bei ca. 2000 Benutzern nur wenige Sekunden. Da die Admod-Operationen jeweils als einzelne Aufrufe geschehen, dauern diese erheblich länger (ca. 2 Vorgänge pro Sekunde). Bei den Gruppen ließe sich das hinzufügen auch durch einen einzelnen Aufruf von Admod erledigen, sofern sich die entsprechenden Benutzer filtern lassen (z.B. alle Objekte innerhalb einer OU). Für die Vergabe der Passwörter gäbe es die Alternative, diese beim Import leer zu lassen und bei der ersten Benutzeranmeldung mittels des Flags Passwort beim nächsten Anmelden ändern direkt durch die Benutzer bei der ersten Anmeldung setzen zu lassen. Dazu müsste lediglich der Eintrag in der Spalte C auf dem Arbeitsblatt AD-Import von 512 auf 544 (entspricht 512+32) geändert werden.

Bei Fragen, Problemen und Anmerkungen (oder Erfolgsmeldungen) würde ich mich über entsprechende Kommentare freuen.

Einen Blog am Leben zu erhalten kostet Zeit und Geld. Da ich auf meiner Seite weder Werbung einbinde, noch andersweitige Zuwendungen erhalte, freue ich mich über jede kleine Spende. Einfach und unkompliziert geht das über PayPalMe. Du unterstützt damit diesen Blog. Vielen Dank.

Kommentare für “Datenimport ins Active-Directory mittels Excel-Vorlage und CSVDE”

  • Bent Schrader

    Auf Grund der am 25. Mai 2018 in Kraft tretenden europäischen Datenschutz-Grundverordnung wurden alle Kommentare abgeschaltet und gelöscht. Damit wird die Erhebung personenbezogener Daten vermieden. Das DSGVO wurde von Professor Thomas Hoeren zu "einem der schlechtesten Gesetze des 21. Jahrhunderts" gekürt, mit der Bemerkung, dass überbordene Werk sei "hirnlos". Ich bedaure sehr, das damit die Möglichkeit zum Austausch von Informationen von Gleichgesinnten verhindert wird.