Printout Header
RSS Feed

Die Active Directory Datenbank: Struktur, Zugriff und Tools


Dieser Abschnitt des SelfADSI Tutorials beschreibt den technischen Aufbau der Active Directory Datenbank und den Zugriff auf diese. Folgende Themen stehen zur Verfügung:

Struktur der Active Directory Datenbank : Partitionen / Naming Contexts
LDAP Zugriff auf AD
Grafik-Tools für den AD Zugriff : ADSIEdit, LDP and LEX
Kommandos für den AD Zugriff: LDIFDE, CSVDE und die DS-Kommandos
Technik, Dateien und Speicherort der AD Datenbank
Datenbank Maintenance

Struktur der AD Datenbank: Partitionen / Naming Contexts


Die Active Directory Datenbank ist grundsätzlich in mehrere Abschnitte unterteilt. Allgemein spricht man hier von Partitionen oder von Naming Contextes oder auch Name Contextes. Die Domänen-Controller sind dann sozusagen diejenigen Server, auf denen einzelne Instanzen dieser Partitionen gespeichert werden.

Es gibt drei Arten von Standard-Partitionen:


Bulletpoint

Schema Partition

Im Schema wird der Aufbau der Active Directory Datenbank selbst festgelegt. Es handelt sich um Definitionen von Objektklassen (z.B. user, contact, group usw.) und deren Attribute (z.B. displayName, streetAddress, mailNickName usw.). Diese Definitionen können für zusätzliche Aufgaben angepasst werden: Man spricht dann von Schema-Erweiterung. Es gibt in jedem Active Directory Forest genau eine Schema Partition. Diese muss auf allen DCs des gesamten Forests identisch sein. Sie wird also durch die Active Directory Synchronisation an alle DCs des Forests verteilt.

Der LDAP-Pfadname der Schema-Partition in einem Active Directory lautet stets so:

cn=Schema,cn=Configuration,dc=<Root-Domäne des Forests>,dc=<Toplevel Domäne der Root>

Bulletpoint

Configuration Partition

Dieser Datenbankteil enthält wichtige Informationen über die Struktur des AD Forests selbst. Hier werden z.B. die Active Directory Sites und deren Site-Links festgelegt. Andere Systeme wie z.B. Exchange oder PKI legen hier ebenfalls ihre Konfigurations-Informationen ab. Es gibt in jedem Active Directory Forest genau eine Configuration Partition. Diese muss auf allen DCs des gesamten Forests identisch sein. Sie wird auf alle DCs des gesamten Forests verteilt.

Der LDAP-Pfadname der Schema-Partition in einem Active Directory lautet stets so:

cn=Configuration,dc=<Root-Domäne des Forests>,dc=<Toplevel Domäne der Root>

Bulletpoint

Domain Name Context

Hier werden die "normalen" Objekte einer Domäne gespeichert, z.B: User, Kontakte, Gruppen, Drucker-Objekte, Organisational Units usw.

Für jede Domäne im Forest existiert jeweils ein getrennter Domain Name Context, wobei jeder DC normalerweise nur den Domain Name Context seiner eigenen Domäne speichert (eine Ausnahme bilden hier nur die Global Catalog Server (GC).



Zusätzlich dazu gibt es ab Windows 2003 frei definierbare "Application Naming Contexts" (auch "Application Partitions" genannt). Hier lassen sich LDAP-Inhalte speichern, die mit dem Active Directory selbst nichts zu tun haben, sondern z.B. für den Betrieb einer speziellen Applikation benötigt werden (z.B. für DNS-Daten, Meta-Directories, Telefon-Verzeichnisse, Adressbücher etc.).

Diese Datenbank-Teile werden von Windows und Active Directory selbst nicht verwendet, können aber von der bewährten Speichertechnik und Multimaster-Replikation auf den Verzeichnis-Servern profitieren. Wenn man also Daten dezentral und repliziert speichern will, die durch das LDAP-Protokoll zugegriffen werden sollen, dann kann man beliebig zusätzliche Partitionen erzeugen.

Der Clou dabei: Man kann frei bestimmen, welche Server die einzelnen Application Naming Contexts speichern und einander replizieren. So kann man die Daten genau dort wo man sie braucht zur Verfügung stellen - und dabei die Infrastruktur der Active Directory Replikation ausnutzen. Die Application Naming Contexts werden dabei entweder als zusätzliche Partitionen auf normalen Domänen Controllern gespeichert, oder es wird auf einem Windows-Server die Komponente Active Directory Application Mode (ADAM) installiert, dadurch wird dieser zum dedizierten Server für Application Naming Contexts.

Auf diesen Servern muss dafür das Microsoft-Dienstmodul Active Directors Application Mode (ADAM) installiert werden. Ab Windows Server 2008 wird ADAM unter der Bezeichnung Active Directory Ligthweight Directory Services (ADLDS) weitergeführt.



AD Datenbankaufbau


LDAP Zugriff auf Active Directory


Sowohl der lokale als auch der Netzwerk-Zugriff auf die Active Directory Datenbank läuft über das LDAP-Protokoll (Lightweight Directory Access Protocol) ab. Hierfür stellt auf einem Active Directory Domänencontroller der lokale LSASS-Prozess einen LDAP-Server zur Verfügung. Dieser unterstützt die LDAP-Version v3 nach RFC 2251. Dem Thema LDAP ist im SelfADSI Tutorial ein eigener Abschnitt gewidmet: LDAP - Das Lightweight Directory Access Protocol.


Das LSASS (Local Security Authority SubSystem) liefert übrigens auch andere wichtige Funktionalitäten für das Active Directory, unter anderem die Kerberos für die Authentifizierung.

Grafik-Tools für den Active Directory Zugriff


Es stehen verschiedene Tools zum Zugriff auf die Active Directory Datenbank zur Verfügung, auf grafischer Ebene wären da vor allem die in den Windows Support Tools enthaltenen Programme ADSIEdit und LDP. ADSI-Edit bietet die bequemere Oberfläche, wohingegen LDP einen direkten Einblick in die LDAP-Kommunikation erlaubt und außerdem für beliebige LDAP-Verzeichnisse eingesetzt werden kann.

Noch bequemer als ADSIEdit und noch schneller als LDP ist "LEX - The LDAP Explorer", das kommerzielle LDAP Browser- und Admin-Tool, das vom Author dieses Tutorials entwickelt wird.

Neben ADSIEdit, LDP und LEX wären noch Tools von anderen Herstellern zu nennen:

LUMA (OpenSource)
Softerra LDAP Administrator
LDAPAdmin (OpenSource)
LDAP Browser / Editor (OpenSource)



LEX - The LDAP Explorer


LEX - The LDAP Explorer kann beliebige LDAP-Verzeichnisse anzeigen, durchsuchen und editieren, wobei die Darstellung und das Handling an den Windows Datei-Explorer angelehnt ist. Das Tool kann beliebige Attributwerte direkt in Listenspalten anzeigen und danach sortieren - dies klappt auch mit komplexeren oder konstruierten Datentypen wie z.B. Active Directory 64Bit-Timestamps (z.B. "lastLogon").


LEX Screenshot

ADSIEdit


ADSI-Edit ist ein MMC-SnapIn Tool aus den Windows Support Tools (kostenloser Zusatz auf der Windows Server CDROM im Verzeichnis \Support\Tools). ADSIEdit ist speziell für den Zugriff auf Active Directory Verzeichnisse konzipiert. Um das Tool aufzurufen, müssen Sie nach der Installation der Support Tools die Microsoft Management Console (MMC.EXE) aufrufen und dann ADSIEdit aus der Liste der verfügbaren Snap-Ins laden.

Öffnen Sie hier zunächst das Kontextmenü des ADSI Edit-Tools und wählen Sie die Option "Connect to...". Dann kann man im Punkt "Select a well known Naming Context" die Domänen-, Configuration oder Schema-Partition auswählen:


ADSIEdit Screenshot

Außer den drei Active Directory Partitionen können Sie natürlich auch Application Partitions öffnen oder den RootDSE-Eintrag auslesen. Im Menü "Advanced" könnten Sie noch spezielle Anmeldedaten übergeben oder auswählen, an welchem LDAP-Port Sie sich verbinden. Wahlweise ist auch ein Connect zum Global Catalog möglich. Später haben Sie alle Objekte und deren Attribute (über das Kontextmenü -> Eigenschaften oder mit einem Klick auf Alt-Enter) im Zugriff:


ADSIEdit Screenshot

LDP


LDP ist ein LDAP-Browser Tool aus den Windows Support Tools (kostenloser Zusatz auf der Windows Server CDROM im Verzeichnis \Support\Tools). Mit LDP können Sie auf beliebige LDAP-Verzeichnisse zugreifen. Um das Tool aufzurufen, müssen Sie nach der Installation der Support Tools das Programm LDP.EXE direkt aufrufen.


Zuerst muss man sich hier mit einem LDAP-Server verbinden. Dazu verwenden Sie die Option "Connection -> Connect...". Hier kann man außerdem noch einen speziellen LDAP-Port angeben (z.B. 3268 für den Global Catalog) und die Art der Verbindung angeben. Die Standardwerte ermöglichen in den meisten Fällen eine problemlose Verbindung zu einem AD Domänen-Controller.


LDP Screenshot

Hinweis: In der LDP-Version auf einem Server mit deutschsprachigen Windows Server 2008 (oder höher) sind die Menübefehle falsch übersetzt worden. "Connection" wird zu "Remotdesktopverbindung", und "Bind" wird zu "Gebunden".... No Comment :)

LDP Screenshot

Beim Aufbau der Connection wird übrigens der Inhalt des RootDSE-Objektes im Datenfenster auf der rechten Seite ausgegeben. Nach dem Connect muss sich ein LDAP-Client authentifizieren, dieser Vorgang wird auch Bind genannt und geschieht unter dem Menüpunt "Connection -> Bind...". Falls es sich um einen Nicht-AD-Domänencontroller handelt, dann sollte man die Option "Domain" deaktivieren. Ohne Bind ist man lediglich ein anynonymer User ohne Berechtigungen.


LDP Screenshot

Hier sollte bei einer fehlerfreien Anmeldung die Ausgabe "Authenticated as" im Datenfenster erscheinen. Nun sollte noch die Suchbasis (der SearchDN) für die anzuzeigenden Objekte festgelegt werden, und zwar unter "View->Tree". Hier muss dann der LDAP-Pfadname der jeweiligen Partition eingetragen werden.


LDP Screenshot

Danach sehen Sie die hierarchische Struktur der gewählten Partition im linken Fenster. Sie können hier auf alle Objekte und deren Attribute (sichtbar im rechten Fenster) zugreifen. Eventuell auftretende Fehler im LDAP-Protokoll werden im rechten Fenster direkt ausgegeben.



Kommandos für den AD Zugriff - LDIFDE


LDIFDE
ist die Abkürzung für LDIF Directory Exchange. Mit diesem Kommando lassen sich Objekte und Ihre Eigenschaften in eine ASCII-Datei exportieren. Diese Datei ist nach dem übergreifenden format LDIF (LDAP Data Interchange Format) aufgebaut. Dieses Format wird in RFC 2849 festgelegt. Hier werden die Objekte durch Leerzeilen getrennt aufgeführt, die Attribute der Objekte werden jeweils in einer eigenen Zeile aufgeführt in der Form "<AttributName>:<Wert>". Ein Beispiel:


dn: CN=Philipp Foeckeler,OU=Consultants,OU=Mitarbeiter,DC=cerrotorre,DC=de
objectClass: user
sn: Foeckeler
givenName: Philipp
distinguishedName: CN=Philipp Foeckeler,OU=Consultants,OU=Mitarbeiter,DC=cerrotorre,DC=de
proxyAddresses: SMTP:pfoeckel@cerrotorre.de
sAMAccountName: pfoeckel
... usw.

dn: CN=Michael Sandt,OU=Consultants,OU=Mitarbeiter,DC=cerrotorre,DC=de
objectClass: user
sn: Sandt
givenName: Michael
distinguishedName: CN=Michael Sandt,OU=Consultants,OU=Mitarbeiter,DC=cerrotorre,DC=de
proxyAddresses: SMTP:msandt@cerrotorre.de
sAMAccountName: msandt
... usw.

Nach genau diesem Format kann man auch Objekte im Active Directory neu erzeugen oder Attribute verändern. Hierzu muss dann noch das Meta-Attribut "changetype" in der LDIF-Import-Datei verwendet werden, z.B. so:


dn: CN=Sandra Biermann,OU=Consultants,OU=Mitarbeiter,DC=cerrotorre,DC=de
changetype: add

objectclass: user
samAccountName: sbiermann
... usw.

Beispiele für die Benutzung von LDIFDE aus der Microsoft Knowledge Base:

Q555636: LDIFDE - Export / Import data from Active Directory - LDIFDE commands

Q555637: LDIFDE - Export / Import data from Active Directory - LDIFDE commands 2


Kommandos für den AD Zugriff - CSVDE


Die Verwendung und die Parameter sind hier prinzipiell die gleichen wie bei LDIFDE, nur wird für die Im- und Export-Dateien das CSV-Format verwendet: Jedes Objekt wird in eine einzige Zeile geschrieben, die einzelnen Attribute werden durch Semikolon getrennt.


Kommandos für den AD Zugriff - Die DS-Kommandos


DSADD

Fügt neue Verzeichnis-Objekte hinzu. Dabei ist man jedoch auf die Standard-Objektklassen "user", "contact", "group", "computer", "quota" beschränkt.


DSMOVE

Verschiebt Objekte innerhalb des Verzeichnisses. Wird auch zur Umbennen von Objekten verwendet. Das Tool beherrscht jedoch nur die oben genannten Objektklassen.


DSMOD

Modifiziert Attribute von Verzeichnis-Objekten. Das Tool beherrscht jedoch nur die oben genannten Objekt-Klassen.


DSGET

Liest Attribute von Verzeichnisobjekten aus und zeigt diese an. Das Tool beherrscht jedoch nur die oben genannten Objekt-Klassen und auch hier nur einen begrenzten Satz an Standard-Attributen.


DSRM

Löscht Verzeichnis-Objekte.


DSQUERY

Fragt das Verzeichnis nach diversen Objekt-Typen ab. Ausgegeben werden nur Objekte, keine Attribute. Interessant: Es werden LDAP Distinguished Names zurückgegeben. Über Pipe-Umleitungen können diese sofort von den anderen DS-Befehlen weiterverwendet werden. Beispiel:


c:\dsquery computer -inactive 4 | dsrm

Dies löscht alle Computer-Konten, die mehr als vier Wochen nicht aktiv waren.


Technik, Dateien und Speicherort der Active Directory Datenbank


Die Active Directory Datenbank wird auf einem Windows Domänen-Controller im Format der Extensible Storage Engine (ESE) gespeichert. Dieses Format wird z.B. auch für die Mail-Datenbanken von Exchange-Servern verwendet. Neben der eigentlichen Datenbank spielen auch Dateien für das Transaktionsprotokoll eine Rolle. Mit diesem soll ein konsistenter Zustand der Datenbank auch bei Systemausfällen sichergestellt werden.

Der Standard-Speicherpfad der Active Directory Datenbank ist %SYSTEMROOT%\NTDS. In diesem Verzeichnis befinden sich neben mehreren Transaktions-Protokolldateien auch die eigentliche Datenbank-Datei: NTDS.DIT. "DIT" ist hierbei die Abkürzung für Directory Information Tree.


Datenbank Maintenance


Zur Pflege der Active Directory Datenbank gehören Aufgaben wie das Verschieben der DB-Dateien oder die Offline-Komprimierung. Dies geschieht mit dem Kommando NTDSUtil.