dSHeuristics

Im Configurations-Container eines Active Directories findet sich ein Attribut namens dSHeuristics, das für die unterschiedlichsten, forestweiten Funktionalitäten verantwortlich ist. Da es immer mal wieder bei einem der Artikel auftaucht, aber dort stets nur mit Blick auf die aktuelle Einstellung behandelt wird, hab ich mir mal die einzelnen Funktionen zusammengesucht.

Zuerst einmal: Wo liegt das Attribut genau? Das ist noch ganz einfach zu beantworten: Der vollständige Pfad (DN) lautet:

CN=Directory Services, CN=Windows NT,CN=Services,CN=Configuration,DC=<root domain>

Das Attribut ist vom Typ “Unicode String”, und jedes (der aktuell 18?) Zeichen in diesem String hat eine forestweite Bedeutung. Der String wird von links nach rechts gelesen, jede 10. Stelle wird durch die entsprechende 10er-Zahl ersetzt, also die 10. Stelle mit einer 1, die 20. Stelle wäre eine 2 usw. Es ist nicht erforderlich, alle Stellen anzugeben (also rechts mit Nullern aufzufüllen). Sind alle Zeichen auf “0”, und beispielsweise nur das dritte Zeichen soll auf “1” gesetzt werden, dann reicht ein “001” als String. Ist das Attribut als solches nicht gesetzt, dann sind auch keine Eigenschaften gesetzt (entspricht also “0”).

Bedeutung der Stellen:

Wie schon erwähnt wird von links nach rechts nummeriert.

  1. Regelt das Verhalten der “Ambiguous Name Resolution” (ANR) Suchfilter. Näheres hierzu auf den MSDN-Seiten zum Thema ANR. Grob gesagt bietet ANR die Möglichkeit, mit einem Suchausdruck in mehreren Attributen zu suchen, was zum Beispiel bei der Suche nach Namen hilfreich sein kann. Bei manchen Namen weiß man ja nicht unbedingt, ob es sich um den Vor- oder Nachnamen handelt… Die Stellen 1,2 und 4 sind alle für das Verhalten der Suchfilter zuständig.
  2. Auch hier die Suchfilter für ANR.
  3. Hiermit kann man vom Standard “List-Child” Modus (=”0”) auf den “List-Object” Modus (=”1”) umschalten. Auch hier nur grob gesagt ist im Standard-Fall mit dem Leserecht auf ein Container-Objekt im Active Directory auch die Sichtbarkeit darin enthaltener Objekte gegeben. Im List-Object” Modus ist das nicht selbstverständlich, sondern erfordert weitere Rechte am Child-Object. Ich hab da auch schon mal was dazu geschrieben…
  4. Ein weiteres ANR-Suchfilter-Flag.
  5. reserviert für internen Gebrauch.
  6. reserviert für internen Gebrauch.
  7. Regelt, ob anonyme LDAP-Zugriffe auf das Active Directory generell erlaubt sind (=”2”) oder nicht (<>”2”). Anonymer Zugriff auf rootDSE ist stets möglich, aber jedweder Zugriff auf Objekte unterhalb erfordert zunächst eine Authentifizierung. Man kann auch keinen anonymen Zugriff über ACLs einstellen, solange dieses 7. Zeichen nicht auf “2” gesetzt wird. Zur Klarstellung: Hiermit wird nicht der anonyme Zugriff auf das AD freigegeben, sondern lediglich die Möglichkeit geschaffen, über ACLs an Objekten auf diese anonym per LDAP zugreifen zu können. Das kann zum Beispiel interessant sein, wenn der LDAP-Client keine Authentifizierung beherrscht oder man keinen “bind”-User einrichten möchte. Auch heirzu hab ich in meinem Interop-Blog schon ausführlich was geschrieben. Ich denke übrigens, dass es Zufall ist, dass es sich um “das 7. Zeichen” handelt und Anlehnungen an die Apokalypse reine Spekulation sind Smile.
  8. reserviert für internen Gebrauch.
  9. regelt das Verhalten des User-Password Attributes. In Windows 2000 wird das User-Password-Attribut wie ein normales String-Attribut behandelt, das ganz normal gelesen und aktualisiert werden kann (natürlich steht da nicht das Klartext-Passwort drin!). Wird an diese 9. Stelle hier eine “1” gesetzt, dann behandeln Windows 2003-Server das Attribut wie ein richtiges Password-Attribut. Man benötigt also das “change password” Recht zum Ändern und es ist auch nicht lesbar. In ADAM (bzw. LDADS) ist dies sowieso der Standard. Setzt man eine “2” hier ein, dann fallen Windows 2003-Server auf das Windows 2000 Verhalten zurück. Leider war es mir bisher nicht möglich, die offensichtliche frage, was ein Windows 2003 Server bei einer “0” macht, eindeutig zu klären, ich arbeite daran.
  10. Steht immer auf “1”, wenn weiter rechts noch Einstellungen kommen.
  11. reserviert für internen Gebrauch.
  12. reserviert für internen Gebrauch.
  13. nur für ADAM (bzw. ADLDS): Wenn dieses Zeichen auf etwas anderem als “0” steht, dann sind Passwort-Operationen auch über nicht-sichere LDAP Verbindungen möglich.
  14. unbekannt
  15. unbekannt
  16. unbekannt
  17. unbekannt
  18. Setzt man hier eine „1“, dann ist das hard-coded Limit bei LDAP-Abfragen an Windows Server 2008 und R2 aufgehoben. Das ist dann interessant, wenn man ein großes AD hat mit 2008er- und 2003er-DCs, da diese unter Umständen verschiedene Ergebnisse bei DALP-Anfragen liefern (siehe hier).
  19. unbekannt
  20. Hier muss eine „2“ stehen, wenn weiter rechts noch Werte kommen.

Eigentlich sind es also nur die Stellen 3, 7, 9, 13 und eventuell 18, die interessant sein könnten, und die 3 ANR-Suchfilter-Einstellungen. Mir ist nach wie vor schleierhaft, warum man nicht einfach 6 verschiedene Attribute genommen hat…

Advertisements

Über Ralf Wigand

...arbeitet für Microsoft und war von 2008-2015 MVP für Directory Services.
Dieser Beitrag wurde unter Active Directory, Windows Server abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s