Active Directory Cookbook von

Diskussion

Viele Attribute in Active Directory sind aus Bitflags zusammengesetzt. Ein Bitflag wird oft verwendet, um Eigenschaften eines Objekts in einem einzigen Attribut zu kodieren. So ist beispielsweise das Attribut groupType beigroup-Objekten ein Bit-Flag, das zur Bestimmung des Gruppenumfangs und -typs verwendet wird.

Das Attribut userAccountControl beiuser– und computer-Objekten wird zur Beschreibung einer ganzen Reihe von Eigenschaften verwendet, einschließlich Kontostatus (d. h.,

Die searchFlags und systemFlagsAttribute auf attributeSchemaObjekten definieren unter anderem, ob ein Attribut konstruiert, indiziert und als Teil der Ambiguous Name Resolution (ANR) einbezogen wird.

Um nach diesen Arten von Attributen zu suchen, müssen Sie bitweise Suchfilter verwenden. Es gibt zwei Arten von bitweisen Suchfiltern, die Sie verwenden können: einen, der ein logisches ODER darstellt, und einen, der ein logisches UND darstellt. Dies wird innerhalb eines Suchfilters als Abgleichsregel implementiert. Eine Anpassungsregel ist einfach eine Möglichkeit, den LDAP-Server (in diesem Fall einen Domänencontroller) zu informieren, einen Teil des Filters anders zu behandeln. Hier ein Beispiel, wie eine Matching-Regel aussieht:

(userAccountControl:1.2.840.113556.1.4.803:=514)

Das Format ist(attributename:MatchingRuleOID:=value).Wie bereits erwähnt, gibt es zwei bitweise Matching-Regeln, die durch OIDs definiert sind. Die OID für die logische UND-Verknüpfung lautet1.2.840.113556.1.4.803 und die OID für die logische ODER-Verknüpfung lautet1.2.840.113556.1.4.804. Diese OIDs weisen den Server an, eine spezielle Verarbeitung des Filters durchzuführen. Ein logischer ODER-Filter gibt einen Erfolg zurück, wenn ein durch value angegebenes Bit in attributename gespeichert ist. Ein logischer UND-Filter ist dagegen erfolgreich, wenn alle durch value angegebenen Bits mit dem Wert von attributename übereinstimmen. Vielleicht hilft ein Beispiel, dies zu verdeutlichen.

Um ein normales Benutzerkonto zu erstellen, müssen SieuserAccountControl auf 514 setzen. Die Zahl 514 wurde errechnet, indem das Kennzeichen für ein normales Benutzerkonto von 512 mit dem Kennzeichen für ein deaktiviertes Konto von 2 addiert wurde (512 + 2 = 514). Wenn Sie die folgende logische ODER-Verknüpfungsregel mit dem Wert 514 verwenden, wie hier gezeigt:

(useraccountcontrol:1.2.840.113556.1.4.804:=514)

dann würden alle normalen Benutzerkonten (Kennzeichen 512) ODER deaktivierte Konten (Kennzeichen 2) zurückgegeben. Dies würde aktivierte Benutzerkonten (ab Flag 512), deaktivierte Computerkonten (ab Flag 2) und deaktivierte Benutzerkonten (ab Flag 2) umfassen. Im Fall vonuserAccountControl kann Flag 2 sowohl auf Benutzer- als auch auf Computerkonten zutreffen, weshalb beide in den zurückgegebenen Einträgen enthalten wären.

Eine Möglichkeit, die Vorteile bitweiser Abgleichsregeln zu erkennen, besteht darin, dass sie es Ihnen ermöglichen, eine Reihe von Vergleichen in einem einzigen Filter zu kombinieren. Es könnte sogar hilfreich sein, sich vorzustellen, dass der zuvor gezeigte ODER-Filter auch mit zwei Ausdrücken geschrieben werden könnte:

(|(useraccountcontrol:1.2.840.113556.1.4.804:=2) (useraccountcontrol:1.2.840.113556.1.4.804:=512))

Wie zuvor werden auch hier userAccountControlAttribute gefunden, die entweder das 2 oder das 512-Flag enthalten.

Für das logische UND gelten ähnliche Prinzipien. Anstatt dass jedes der Bits im Flag eine mögliche Übereinstimmung ist, müssen ALLE Bits im Flag übereinstimmen, damit es einen Erfolg gibt. Wenn wir unseruserAccountControl-Beispiel ändern, um logisches UND zu verwenden, würde es wie folgt aussehen:

(useraccountcontrol:1.2.840.113556.1.4.803:=514)

In diesem Fall würden nur normale Benutzerkonten, die auch deaktiviert sind, zurückgegeben werden. Derselbe Filter könnte unter Verwendung des Operators & anstelle von | wie folgt umgeschrieben werden:

(&(useraccountcontrol:1.2.840.113556.1.4.803:=2) (useraccountcontrol:1.2.840.113556.1.4.803:=512))

Ein wichtiges Detail ist zu beachten, dass die logische ODER- und die logische UND-Vergleichsregel dasselbe Ergebnis liefern, wenn Sie nur einen einzigen Bit-Flag-Wert vergleichen. Wenn wir also alle normalen Benutzerkonten finden wollten, könnten wir nach dem einzelnen Bit-Flag von 512 suchen, indem wir eine der folgenden Möglichkeiten verwenden:

(useraccountcontrol:1.2.840.113556.1.4.803:=512)(useraccountcontrol:1.2.840.113556.1.4.804:=512)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.