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:
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. |
|
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: |
|
Domain Name Context |
|
Hier werden die "normalen" Objekte einer Domäne
gespeichert, z.B: User, Kontakte, Gruppen, Drucker-Objekte, Organisational
Units usw. |
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.
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:
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").
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:
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:
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.
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 :)
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.
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.
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:
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:
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:
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.