Informationen aus dem ActiveDirectory über SQL-Server ermitteln

Wussten Sie, dass man Informationen aus dem ActiveDirectory direkt über den SQL-Server ermitteln kann? Es ist ganz einfach!
Zuerst einmal benötigt man eine Verbindung zur (proprietären) ActiveDirectory-Datenbank. Den dazu notwendigen Treiber (OLE DB Provider for Microsoft Directory Services) bekommt man schon bei der Installation des SQL-Server frei Haus mitgeliefert. Über diesen Treiber muss nur eine Verbindung zum ActiveDirectory hergestellt werden. Dazu geht man wie folgt vor:

1. Im SQL-Server Management Studio unter Serverobjekte – Verbindungsserver mit einem Rechtsklick das Kontextmenü öffnen und “Neuer Verbindungsserver…” auswählen

Neuer Verbindungsserver

2. Im Dialogfenster unter “Allgemein” die folgenden Einstellungen vornehmen

  • Verbindungsserver: Einen Namen, über den Sie das Verbindungsserver-Objekt ansprechen möchten (z.B. ADSI)
  • Anbieter: OLE DB Provider for Microsoft Directory Services
  • Produktname: Servername und Port des ActiveDirectory-Servers (z.B. bc-ldap:50000)

Neuer Verbindungsserver

3. Unter “Sicherheit” den Punkt “Im aktuellen Sicherheitskontext der Anmeldung” auswählen

Neuer Verbindungsserver

Sind diese Einstellungen vorgenommen, steht einer ersten Abfrage des ActiveDirectory-Inhalts nichts mehr entgegen. Probieren wir es aus – eine Liste aller User, die im ActiveDirectory eingetragen sind:

Wie viele Zeilen haben Sie zurückbekommen? Es gibt eine Standard-Einschränkung im AD um DoS-Angriffe abzuwehren: Als Ergebnis einer Abfrage werden maximal 1.000 Zeilen zurück gegeben. Das ist natürlich eine harte Einschränkung und lässt auf den ersten Blick einen sinnvollen Einsatz dieser Abfragemethode als nicht möglich erscheinen. Aber es gibt einen Weg, diese Einschränkung “auszuhebeln”.
Mehr dazu im nächsten Teil…