Weboldal keresés

Az Active Directory változásainak nyomon követése WMI-eseményekkel


Az Active Directory számos szervezet kritikus összetevője. Az is elsöprő lehet, hogy több százezer objektumot tartalmaz folyamatosan, amelyek folyamatosan változnak. Szerencsére némi PowerShell-szakértelemmel és egy kis idővel nyomon követheti az Active Directory változásait.

Ebben az oktatóanyagban megtudhatja, hogyan használhatja a WMI-eseményeket az Active Directory változásainak nyomon követésére, és folyamatosan tájékozott az Active Directory-objektumokkal kapcsolatos eseményekről!

Előfeltételek

Ez a cikk egy gyakorlati oktatóanyag lesz. Ha követni szeretné, győződjön meg arról, hogy rendelkezik az alábbiakkal:

  • Active Directory tartomány - Ez az oktatóanyag a Windows Server 2019 rendszert fogja használni 2019-re beállított Active Directory és erdő működési szintjével, de a Windows 2008 R2 vagy újabb rendszert futtató tartományvezérlőknek (DC) működniük kell. Az oktatóanyag a test.local nevű tartományt fogja használni, két DC-vel, DC01 és DC02.
  • Egy tartományhoz csatlakoztatott Windows PC, amelyen PowerShell van telepítve. Ez az oktatóanyag a Windows 10 rendszert használja a Windows PowerShell v5.1 vagy a PowerShell 7 rendszerrel.
  • PowerShell Active Directory modul.
  • Felhasználói fiók a tartományban a Domain Admins csoportok tagjaként.

Active Directory csoportok keresése WMI segítségével

Mielőtt értesítést kaphat egy objektum változásáról az Active Directoryban, először ismernie kell a WMI-osztályt, amelyben a WMI-esemény megjelenik, és le kell kérdeznie a csoport tagjait. Ehhez DC-n:

1. Nyissa meg a PowerShellt.

2. Futtassa a Get-CimClass parancsot, hogy csatlakozzon a névtérhez, és megkeresse az összes elérhető osztályt a névtérben. A CimClassName oszlopban egy ds_group látható. Ez az osztály felsorolja az Active Directory összes csoportját és attribútumait.

Get-CimClass -Namespace 'ROOT\Directory\LDAP'

3. Most futtassa a Get-CimInstance parancsot, hogy megkeresse a ds_group osztály összes példányát, amely minden csoport cn tulajdonságát adja vissza.

Get-CimInstance -Namespace 'root\directory\ldap' -ClassName ds_group | Select-Object -Property DS_cn

WMI esemény előfizetés létrehozása

Most, hogy tudja, hol találja meg a csoportokat a WMI-ben, a következő lépés egy WMI-esemény-előfizetés beállítása, amely „meghallgatja” a WMI-példányok változásait. Egy adott esemény (például egy Active Directory-csoport változásának) figyeléséhez elő kell fizetnie a WMI-eseményre.

Számos különböző típusú WMI-eseményre feliratkozhat a létrehozástól, eltávolításig és módosításig. Ebben az esetben tudnia kell, hogy egy CIM-példány (AD-csoport) mikor módosul. Ebben az esetben a CIM_InstModification nevű osztályt használja. A CIM_InstModification osztály minden CIM-példányt figyel a módosítások szempontjából.

A WQL lekérdezés fejlesztése

A WMI-esemény-előfizetés beállításához először ki kell fejlesztenie egy WQL-lekérdezést. A WQL egy egyszerű WMI-nyelv, amely lehetővé teszi a WMI-példányok SQL-szerű szintaxisban történő megtalálását. Ebben a példában a keresett lekérdezés az alábbi példához hasonlóan néz ki.

Az alábbi WQL-lekérdezés minden olyan eseményt keres, amely módosítja a DS_group nevének megfelelő példányokat. Észre fogja venni a in belül operátort is. Ez az operátor a lekérdezési intervallum, amely arra utasítja a Windowst, hogy 10 másodpercenként ellenőrizze az új eseményeket.

Select * from CIM_InstModification within 10 where TargetInstance ISA 'DS_group'

Adott AD-csoportok módosításait is lekérdezheti, ha további feltételeket ad meg, például hozzáadja az AND TargetInstance.ds_cn='Enterprise Admins' kifejezést a WQL-utasítás végéhez.

Hozzon létre WMI-előfizetést a PowerShellben

Most, hogy elkészítette a WQL-lekérdezést, a következő lépés az, hogy lépjen be a PowerShellbe, és használja azt az eseményre való feliratkozáshoz. Ehhez:

1. Nyissa meg a PowerShellt a tartományvezérlőn.

2. Hozzon létre egy $query nevű változót, és rendelje hozzá értékként az éppen kitalált lekérdezést.

$query = "Select * from CIM_InstModification within 10 where TargetInstance ISA 'DS_group'"

3. Használja ezt a lekérdezést az előfizetés létrehozásához (regisztrálja az eseményt) a Register-CimIndicationEvent parancsmag segítségével. Az alábbi parancs egy GroupMonitoring nevű WMI-előfizetést regisztrál a lekérdezés segítségével, hogy az eredményeket csak a DS_Group módosítási eseményekre korlátozza a ROOT\directory\LDAP névtérben.

Register-CimIndicationEvent -Query $query -SourceIdentifier 'GroupMonitoring' -MessageData 'Group Info Changed' -Namespace 'ROOT\directory\LDAP'

A Register-CimIndicationEvent ideiglenes WMI-esemény-előfizetést hoz létre. Amikor bezárja a PowerShell-konzolt, az előfizetés többé nem lesz aktív. Használjon állandó esemény-előfizetést az AD-csoportok hosszú távú figyeléséhez.

4. Most erősítse meg, hogy sikeresen regisztrált egy előfizetést a Get-EventSubscriber futtatásával, amely az alábbihoz hasonló objektumot ad vissza.

WMI események olvasása

A Windowsnak most figyelnie kell az összes Active Directory-csoport összes módosítási eseményét. Ennek teszteléséhez adjunk hozzá egy tagot egy csoporthoz, és nézzük meg, mi történik.

Feltéve, hogy még mindig a PowerShellben van a DC-n:

1. Futtassa az Add-ADGroupMember parancsmagot, hogy hozzáadjon egy felhasználót a vállalati rendszergazdák csoporthoz. Az alábbi példa egy Felhasználó2 nevű felhasználói fiók hozzáadása.

Körülbelül 10 másodperc elteltével az eseménynek ki kellett volna indítania, hogy korábban beállítson egy előfizetést.

Add-ADGroupMember -Identity 'Enterprise Admins' -Members User2

2. Az esemény megkereséséhez futtassa a Get-Event parancsmagot az összes újonnan regisztrált esemény megkereséséhez. Ha minden jól megy, akkor az alábbi képernyőképhez hasonló kimenetet kell látnia. A képernyőképen a SourceInstance az objektum attribútum aktuális értéke. A PreviousInstance érték az objektum attribútumának előző értéke.

(Get-Event).SourceEventArgs.newevent

3. Most szűkítse le az eredményt, és csak az aktuális riasztási értékeket jelenítse meg az alábbiak szerint. Ekkor megjelenik a csoporttagok jelenlegi listája a Vállalati rendszergazdák csoportban.

(Get-Event).SourceEventArgs.newevent.SourceInstance | Select-Object -Property ds_member

Ha a változás bekövetkezte előtti értéket szeretné megkapni, nézze meg a PreviousInstance objektum DS_Member tulajdonságát az alábbiak szerint.

(Get-Event).SourceEventArgs.newevent.PreviousInstance | select DS_member

Következtetés

Most, hogy tudja, hogyan állíthat be egy WMI-esemény-előfizetést az Active Directory változásainak nyomon követésére, használhatja ezt a PowerShell-kódot, és létrehozhat belőle egy megfigyelési parancsfájlt.

Nézze meg, létrehozhat-e megfigyelő eszközt, ha esetleg naplózza ezeket az eseményeket a Windows eseménynaplójába a New-WinEvent parancsmaggal, vagy küldjön egy e-mailt a Send-MailMessage segítségével!

Kapcsolódó cikkek