Active Directory Cookbook by

Dyskusja

Wiele atrybutów w Active Directory składa się z flag bitowych. Flaga bitowa jest często używana do kodowania właściwości o obiekcie w pojedynczym atrybucie. Na przykład atrybut groupType na obiektachgroup jest flagą bitową, która jest używana do określenia zakresu i typu grupy.

Atrybut userAccountControl na obiektachuser i computer jest używany do opisania całej serii właściwości, w tym accountstatus (tzn, włączone lub wyłączone), blokada konta, niewymagane hasło, wymagane uwierzytelnienie za pomocą karty inteligentnej itp.

Atrybuty searchFlags i systemFlags na obiektach attributeSchema definiują między innymi, czy atrybut jest konstruowany, indeksowany i włączany jako część Rozdzielczości Nazw Niejednoznacznych (ANR).

Aby wyszukiwać w tego typu atrybutach, musisz użyć filtrów wyszukiwania bitowego. Istnieją dwa typy filtrów wyszukiwania bitowego, których można użyć, jeden, który reprezentuje logiczne OR i jeden, który reprezentuje logiczneAND. Jest to zaimplementowane w filtrze wyszukiwania jako reguła dopasowania. Reguła dopasowania jest po prostu sposobem informowania serwera LDAP (w tym przypadku kontrolera domeny), aby traktował część filtru w inny sposób. Oto przykład tego, jak wygląda reguła dopasowania:

(userAccountControl:1.2.840.113556.1.4.803:=514)

Format jest następujący(attributename:MatchingRuleOID:=value).Jak już wspomniałem, istnieją dwie bitowe reguły dopasowania, które są zdefiniowane przez OID. Logiczna reguła dopasowania AND OID to1.2.840.113556.1.4.803, a logiczna reguła dopasowania OR OID to1.2.840.113556.1.4.804. Te OID instruują serwer do wykonania specjalnego przetwarzania na filtrze. Filtr logicznego OR zwróci sukces, jeśli jakikolwiek bit określony przez value, jest przechowywany w attributename. Alternatywnie, filtr logiczny AND zwróci sukces, jeśli wszystkie bity określone przez value, pasują do wartościattributename. Być może przykład pomoże to wyjaśnić.

Aby utworzyć normalne konto użytkownika, musisz ustawićuserAccountControl na 514. Liczba 514 została obliczona przez dodanie flagi normalnego konta użytkownika o wartości 512 wraz z flagą konta niepełnosprawnego o wartości 2 (512 + 2 = 514). Jeśli użyjesz następującej logicznej reguły dopasowania OR względem wartości 514, jak pokazano tutaj:

(useraccountcontrol:1.2.840.113556.1.4.804:=514)

to zwrócone zostaną wszystkie normalne konta użytkowników (flaga 512) LUB konta wyłączone (flaga2). Obejmowałoby to włączone konta użytkowników (z flagi 512), wyłączone konta komputerów (z flagi 2) i wyłączone konta użytkowników (z flagi 2). W przypadkuuserAccountControl, flaga 2 może odnosić się zarówno do kont użytkowników jak i komputerów, a zatem dlaczego oba te konta byłyby zawarte w zwróconych wpisach.

Jednym ze sposobów dostrzeżenia korzyści płynących z reguł dopasowywania bitowego jest to, że pozwalają one na połączenie kilku porównań w jeden filtr. W istocie, może pomóc myśl, że poprzedni filtr OR, który właśnie pokazałem, może być również napisany przy użyciu dwóch wyrażeń:

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

Tak jak poprzednio, to dopasuje userAccountControlatrybuty, które zawierają albo flagi 2 albo 512.

Dla logicznego AND, stosuje się podobne zasady. Zamiast każdego z bitów we fladze jako możliwego dopasowania, WSZYSTKIE bity we fladze muszą być dopasowane, aby zwrócić sukces. Gdybyśmy zmienili nasz przykładuserAccountControl na logiczne AND, wyglądałby on następująco:

(useraccountcontrol:1.2.840.113556.1.4.803:=514)

W tym przypadku zwrócone zostałyby tylko normalne konta użytkowników, które są również wyłączone. Ten sam filtr może być przepisany przy użyciu operatora& zamiast |, jak w poniższym przykładzie:

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

Ważną subtelnością, którą należy zauważyć jest to, że kiedy porównujemy tylko jedną wartość bitową flagi, logiczne OR i logiczne AND zwrócą ten sam wynik. Tak więc, jeśli chcielibyśmy znaleźć wszystkie normalne konta użytkowników, moglibyśmy szukać na pojedynczym bicie flagi 512 używając jednego z poniższych sposobów:

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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.