Active Directory Cookbook by
Keskustelu
Monet attribuutit Active Directoryssa koostuvat bittilipuista. Bittilippua käytetään usein kohteen ominaisuuksien koodaamiseen yhteenattribuuttiin. Esimerkiksi group
-objektien groupType
-attribuutti on bittilippu, jota käytetään ryhmän laajuuden ja tyypin määrittämiseen.
user
– ja computer
-objektien userAccountControl
-attribuutin
avulla voidaan kuvata kokonainen joukko ominaisuuksia, kuten tilitilanne (esim, käytössä tai poissa käytöstä), tilin lukitus, salasanaa ei vaadita, älykorttitodennus vaaditaan jne.
Objektien attributeSchema
searchFlags
ja systemFlags
attribuutit määrittelevät muun muassa sen, muodostetaanko attribuutti, indeksoidaanko se ja sisällytetäänkö se osaksi moniselitteisten nimien ratkaisua (Ambiguous Name Resolution, ANR).
Hakua varten tämäntyyppisistä attribuuteista on käytettävä bittihakusuodattimia. Voit käyttää kahdenlaisia bittihakusuodattimia, joista toinen edustaa loogista TAI:ta ja toinen loogista JA:ta. Tämä toteutetaan hakusuodattimessa yhdistävänä sääntönä. Täsmäytyssääntö on yksinkertaisesti tapa ilmoittaa LDAP-palvelimelle (tässä tapauksessa toimialueen ohjaimelle), että se käsittelee suodattimen osaa eri tavalla. Tässä on esimerkki siitä, miltä matching-sääntö näyttää:
(userAccountControl:1.2.840.113556.1.4.803:=514)
Muoto on(attributename
:MatchingRuleOID
:=value
).Kuten mainitsin, on olemassa kaksi bittimäistä matching-sääntöä, jotka on määritelty OID:ien avulla. Loogisen AND-täsmäyssäännön OID on1.2.840.113556.1.4.803 ja loogisen OR-täsmäyssäännön OID on1.2.840.113556.1.4.804. Nämä OID-tunnukset ohjaavat palvelinta suorittamaan suodattimen erityiskäsittelyn. Loogisen TAI-suodattimen tulos on onnistunut, jos jokin value
:n määrittelemä bitti on tallennettu attributename
:een. Vaihtoehtoisesti looginen AND-suodatin palauttaa onnistuneen tuloksen, jos kaikki value
:ssa määritetyt bitit vastaavat attributename
:n arvoa. Ehkä esimerkki auttaa selventämään tätä.
Luoaksesi normaalin käyttäjätilin, sinun on asetettavauserAccountControl
arvoksi 514. Luku 514 laskettiin lisäämällä normaalin käyttäjätilin lippu 512 ja käytöstä poistetun tilin lippu 2 (512 + 2 = 514). Jos käytät seuraavaa loogista TAI-täsmäytyssääntöä 514:n arvoa vastaan, kuten tässä näytetään:
(useraccountcontrol:1.2.840.113556.1.4.804:=514)
, kaikki normaalit käyttäjätilit (lippu 512) TAI käytöstä poistetut tilit (lippu2) palautetaan. Tämä sisältäisi aktivoidut käyttäjätilit (lipusta 512), deaktivoidut tietokonetilit (lipusta 2) ja deaktivoidut käyttäjätilit (lipusta 2). TapauksessauserAccountControl
lippu 2 voi koskea sekä käyttäjä- että tietokonetilejä, ja siksi molemmat sisältyisivät palautettuihin merkintöihin.
Yksi tapa nähdä bittikohtaisten täsmäytyssääntöjen edut on, että niiden avulla voit yhdistää joukon vertailuja yhdeksi suodattimeksi. Itse asiassa, voi olla hyödyllistä ajatella, että edellinen OR-suodatin, jonka juuri näytin, voitaisiin myös kirjoittaa käyttämällä kahta lauseketta:
(|(useraccountcontrol:1.2.840.113556.1.4.804:=2) (useraccountcontrol:1.2.840.113556.1.4.804:=512))
Aivan kuten ennenkin, tämä vastaa userAccountControl
attribuutteja, jotka sisältävät joko 2 tai 512 lippua.
Loogiseen AND:iin pätevät samanlaiset periaatteet. Sen sijaan, että mikä tahansa lipun biteistä olisi mahdollinen täsmäävä, KAIKEN lipun bittien on täsmättävä, jotta tulos olisi onnistunut. Jos muuttaisimmeuserAccountControl
esimerkkimme käyttämään loogista AND:tä, se näyttäisi seuraavalta:
(useraccountcontrol:1.2.840.113556.1.4.803:=514)
Tällöin palautettaisiin vain normaalit käyttäjätilit, jotka on myös poistettu käytöstä. Sama suodatin voitaisiin kirjoittaa uudelleen käyttämällä&
-operaattoria |
:n sijasta seuraavasti:
(&(useraccountcontrol:1.2.840.113556.1.4.803:=2) (useraccountcontrol:1.2.840.113556.1.4.803:=512))
Tärkeä vivahde on se, että kun verrataan vain yhtä bittiflagin arvoa, looginen OR- ja looginen AND-sovitussääntöpalauttavat saman tuloksen. Jos siis haluaisimme löytää kaikki normaalit käyttäjätilit, voisimme hakea yksittäisen bittilipun 512 perusteella jommallakummalla seuraavista tavoista:
(useraccountcontrol:1.2.840.113556.1.4.803:=512)(useraccountcontrol:1.2.840.113556.1.4.804:=512)
.