vizualizați sau eliminați permisiunile delegate Active Directory
delegarea Active Directory (AD) este o parte critică a infrastructurii IT a multor organizații. Prin delegarea administrației, puteți acorda utilizatorilor sau grupurilor doar permisiunile de care au nevoie fără a adăuga utilizatori la grupuri privilegiate (de exemplu, Administratori de domenii, operatori de cont). Cel mai simplu mod de a realiza delegarea este folosind delegarea expertului de Control în Microsoft Management Console (MMC) Active Directory Users and Computers snap-in.
Related: gestionarea Active Directory cu PowerShell
deși delegarea expertului de Control oferă o modalitate ușoară de a delega permisiunile, nu există un expert corespunzător pentru eliminarea permisiunilor delegate. Cineva de la Microsoft trebuie să fi observat acest neajuns și a creat un program de linie de comandă numit Dsrevoke.exe care poate elimina intrările de permisiune adăugate de delegarea expertului de Control.
cu toate acestea, Dsrevoke.programul exe are două limitări tehnice importante, care sunt documentate în articolul Microsoft ” când utilizați instrumentul de linie de comandă Dsrevoke pentru a raporta permisiunile pentru toate unitățile organizaționale dintr-un domeniu bazat pe Windows Server 2003, este posibil ca instrumentul să nu returneze toate intrările de control al accesului.”Aceste limitări sunt:
- Dsrevoke.exe poate găsi doar până la 1.000 de unități într-o singură căutare. Soluția sugerată pentru această limitare este de a începe căutarea programului într-o unitate organizațională mai profund imbricată (OU) pentru a reduce numărul de rezultate.
- Dsrevoke.exe eșuează dacă orice OUs conține un caracter slash (/) înainte în numele lor. Nu există nici o soluție pentru această limitare, altele decât pentru a redenumi OUs ofensatoare.
când lucrați cu Dsrevoke.exe recent, am reușit să rezolv prima problemă, dar apoi am intrat în a doua problemă. Din motive organizaționale, redenumirea OUs pentru a elimina caracterul slash nu a fost o opțiune. În plus, slash este un caracter valid într-un nume OU, și Dsrevoke.exe ar trebui să funcționeze indiferent dacă un OU conține o bară oblică în numele său sau nu. De asemenea, lucrul în jurul limitei de 1.000 de OU în mediul meu a fost consumator de timp.
din cauza acestor probleme, am decis să văd dacă există alternative încorporate la Dsrevoke.exe. Începând cu versiunile recente de Windows, Dsacls.programul exe oferă o modalitate de a elimina permisiunile adăugate de delegarea expertului de Control. Deși nu eșuează dacă un OU conține o bară oblică în numele său, Dsacls.exe nu poate căuta subcontainere pentru permisiuni precum Dsrevoke.exe face.
am decis mai întâi să scriu doar un script simplu pentru a căuta OUs și a apela Dsacls.exe pentru a elimina permisiunile delegate din fiecare OU. Cu toate acestea, pe măsură ce m-am gândit la modul în care am vrut să proiectez un astfel de script, mi-a trecut prin minte că aș dori, de asemenea, să văd o listă cu care OUs avea permisiuni delegate unui anumit utilizator sau grup. Dsrevoke.exe și Dsacls.exe poate produce o listă de permisiuni, dar ieșirea este foarte lungă și tehnică. Am vrut ceva mai simplu.
datorită limitărilor din Dsrevoke.exe și Dsacls.exe, și dorința mea de a obține o ieșire mai scurtă, am decis să scriu un script Windows PowerShell pentru a obține funcționalitatea dorită. Rezultatul este Remove-DSACE. ps1. Înainte de a discuta acest script, deși, am nevoie pentru a oferi unele informații de fond despre ceea ce se întâmplă atunci când utilizați delegarea de Control Wizard, precum și acoperă unele concepte de bază de securitate Windows.
adăugarea permisiunilor delegate cu expertul
așa cum am menționat anterior, delegarea expertului de Control oferă o modalitate ușoară de a delega permisiunile. De exemplu, să presupunem că doriți ca membrii grupului de resetare a parolei să poată reseta parolele pentru utilizatorii din All Users OU din domeniul dvs. publicitar. Pentru a face acest lucru, trebuie să efectuați acești pași:
- deschideți consola Utilizatori și computere Active Directory.
- faceți clic dreapta pe butonul All Users OU și alegeți Delegate Control, așa cum se arată în Figura 1. Faceți clic pe butonul Următorul pentru a avansa dincolo de pagina de întâmpinare a expertului.
- în pagina Utilizatori sau grupuri a expertului, faceți clic pe butonul Adăugare.
- în caseta de dialog Selectare utilizatori, computere sau grupuri, introduceți numele grupului (Resetare parolă), faceți clic pe butonul Verificare nume pentru a vă asigura că numele grupului este corect și faceți clic pe OK, așa cum se arată în Figura 2.
- după ce vă asigurați că numele grupului este listat în pagina Utilizatori sau grupuri, faceți clic pe Următorul, așa cum se arată în Figura 3.
- pe pagina activități de Delegat, selectați resetați parolele utilizatorului și forțați schimbarea parolei la următoarea conectare și faceți clic pe Următorul, așa cum se arată în Figura 4.
- verificați informațiile din pagina finală a expertului și faceți clic pe Finalizare.
când faceți clic pe butonul Terminare, delegarea expertului de Control adaugă permisiunile solicitate la toți utilizatorii OU. Puteți vizualiza efectele delegării făcând clic dreapta pe toți utilizatorii OU, alegând proprietăți și selectând fila Securitate. (Dacă fila Securitate nu este vizibilă, activați opțiunea caracteristici avansate din meniul Vizualizare al consolei Active Directory Users and Computers.) Pentru o vizualizare detaliată, puteți face clic pe butonul Avansat. Figura 5 arată caseta de dialog Setări avansate de securitate care apare.
ACL—uri, ași și administratori-Oh!
pentru a înțelege informațiile furnizate în caseta de dialog Setări avansate de securitate, trebuie să știți despre următoarele concepte de securitate Windows: listă de control acces (ACL), intrare control acces (ACE), administrator și moștenire. De asemenea, trebuie să înțelegeți aceste concepte pentru a utiliza Remove-DSACE.ps1.
ACL. Există două tipuri de ACL-uri: ACL-uri discreționare (dacl) și ACL-uri de sistem (SACL). Un DACL identifică conturile care sunt permise sau refuzate accesul la un obiect. Un SACL descrie modul în care un administrator dorește să înregistreze încercările de a accesa un obiect (adică audit).
as. Un ACL este compus din Ași. Fiecare AS identifică un mandatar și specifică accesul mandatarului (permiteți, refuzați sau auditați) pentru obiect. Delegarea expertului de Control adaugă Ași la DACL-ul unui container publicitar. Figura 5 prezintă DACL pentru toți utilizatorii OU. În această figură, termenul de intrare a permisiunii este sinonim cu ACE.
administrator. Un administrator este entitatea (un utilizator, un grup de securitate sau o sesiune de conectare) căreia i se aplică un ACE. Fiecare As se aplică unui singur mandatar. În Figura 5, termenul Principal este sinonim cu mandatar. Figura 5 arată că există doi ași alocați grupului de resetare a parolei. Cu alte cuvinte, grupul de resetare a parolei este mandatarul (principalul) pentru acești doi ași.
moștenire. Un As poate fi aplicat direct unui obiect sau poate fi moștenit de la obiectul părinte al resursei. În Figura 5, cei doi Ași pentru toți utilizatorii OU care conțin grupul de resetare a parolei ca administrator nu sunt moșteniți din containerul părinte (adică, coloana moștenit de la nu citește niciunul) deoarece delegarea expertului de Control le-a adăugat direct la DACL. Figura 6 prezintă DACL pentru ou Contabilitate. DACL-ul contabilității OU conține doi Ași pentru grupul de resetare a parolei, dar acești ași sunt moșteniți de la toți utilizatorii OU (adică, coloana moștenită din citește OU=toți utilizatorii,DC=fabrikam,DC=local).
introducerea Remove-DSACE. ps1
am scris Remove-DSACE. ps1 (prescurtare pentru remove Directory Service ACEs) pentru a realiza următoarele obiective:
- găsiți ou care conțin ași non-moștenite care conțin un mandatar.
- se repetă în sub-uu, dacă se solicită.
- eliminați Ași care nu sunt moșteniți care conțin un mandatar.
- Produce ieșire concis.
sintaxa scriptului este după cum urmează:
Remove-DSACE path
parametrul-Report sau-Remove determină dacă scriptul va lista sau elimina Ași care nu sunt moșteniți. Dacă specificați-raport, scriptul găsește Ași care nu sunt moșteniți care conțin administratori, dar nu le elimină. Dacă specificați-Remove, scriptul elimină Așii care nu sunt moșteniți. Este foarte important să înțelegeți că scriptul va elimina toți Așii care nu sunt moșteniți pentru mandatar, nu doar Așii adăugați de delegarea expertului de Control. Acest lucru se datorează faptului că nu există nici o modalitate de a determina modul în care au fost adăugate ași non-moștenite.
parametrii-Report și-Remove sunt opționali, dar scriptul presupune parametrul-Report în mod implicit. Scriptul va arunca o eroare dacă specificați ambii parametri în același timp.
utilizați parametrul-Path pentru a specifica unul sau mai multe nume distincte (DNS) ale AD OUs. Numele parametrului-Path este opțional și acceptă intrarea conductei. Deși puteți specifica mai multe DNs, nu puteți utiliza metacaractere.
parametrul-Trustee numește trustee pentru a găsi în Ași. Scriptul examinează DACL-ul fiecărui OU pentru Ași care nu sunt moșteniți care conțin mandatarul numit. Puteți specifica mai mulți administratori utilizând o listă delimitată prin virgulă sau o matrice, dar nu puteți utiliza metacaractere. Puteți specifica numele mandatarului utilizând oricare dintre formatele de nume enumerate în tabelul 1.
Format | Exemplu |
---|---|
formatul de denumire Windows NT 4.0 (NT4) | FABRIKAM \ KenDyer |
DN | CN = Ken Dyer,CN=utilizatori, DC = fabrikam, DC = com |
numele canonic al obiectului | fabrikam.com/Users/Ken Dyer |
numele principal al utilizatorului obiectului (UPN) |
includeți parametrul-Recurse dacă doriți să căutați OUs sub ou specificat. Dacă doriți să vă conectați la un anumit controler de domeniu (DC), puteți specifica numele serverului cu parametrul
-ServerName. Atât parametrii-Recurse, cât și-ServerName sunt opționali.
scriptul acceptă acreditări alternative. Parametrul-Credential utilizează un obiect PSCredential care conține numele de utilizator și parola pe care scriptul ar trebui să le utilizeze pentru a se conecta la domeniu.
scriptul acceptă, de asemenea, parametrul-Confirm. Parametrul-Confirm este semnificativ numai în combinație cu parametrul-Remove. Parametrul-Confirm este activat în mod implicit, cu excepția cazului în care îl dezactivați specificând-Confirm:$FALSE sau setând variabila $ConfirmPreference la niciuna. Ar trebui să dezactivați parametrul-Confirm numai atunci când sunteți absolut sigur că eliminați Așii corecți.
scriptul produce obiecte de ieșire care conțin proprietățile enumerate în tabelul 2.
proprietate | descriere |
---|---|
calea | DN-ul OU-ului |
mandatar | numele mandatarului în format nume domeniu |
ACEs | numărul de Ași care nu sunt moșteniți în ACL-ul OU |
rezultat * | cuvântul “eliminat” sau un mesaj de eroare |
*proprietatea rezultat există numai atunci când se utilizează parametrul-Remove. |
script-ul include numai ou cu ași non-moștenite care conțin un mandatar. Ași moștenite pentru un mandatar nu sunt incluse în ieșire. Figura 7 prezintă două exemple. Prima comandă din Figura 7 nu produce nicio ieșire, deoarece DACL-ul pentru ou-ul contabil nu conține Ași care nu sunt moșteniți pentru grupul de resetare a parolei. (Ou contabilitate are doi Ași pentru grupul de resetare a parolei, dar aceste ași sunt moștenite de la toți utilizatorii OU, așa cum se arată în Figura 6.) A doua comandă din Figura 7 produce ieșire. Există doi Ași care nu sunt moșteniți pentru grupul de resetare a parolei în All Users OU (așa cum se vede în Figura 5).
exemplu din lumea reală
să ne uităm la modul în care s-ar putea utiliza Remove-DSACE.ps1 în lumea reală. Să presupunem că un administrator în fabrikam.domeniul local a folosit delegarea expertului de Control pentru a delega permisiunile grupului de personal de secretariat în toți utilizatorii OU și o parte din ou sub el, dar nu-și amintește care ou. Trebuie să eliminați aceste permisiuni delegate, astfel încât să puteți delega permisiunile către alte grupuri.
în primul rând, aveți nevoie pentru a vedea o listă ou care au ași non-moștenite care conțin grupul de personal de secretariat. Pentru a face acest lucru, puteți utiliza comanda:
Remove-DSACE -Report ` -Path "OU=All Users,DC=fabrikam,DC=local" ` -Trustee "FABRIKAM\Secretarial_Staff" ` -Recurse | Format-List
această comandă și ieșirea acesteia sunt prezentate în Figura 8.
din această ieșire, puteți vedea că există trei ou care au Ași care nu sunt moșteniți și care conțin grupul personalului de secretariat. După ce ați verificat că puteți elimina acești ași, puteți înlocui parametrul-Report cu parametrul-Remove și repetați comanda, așa cum se arată în Figura 9. După cum am menționat mai devreme, dacă grupului de personal de secretariat i s-au atribuit alte permisiuni în afara delegării expertului de Control, acestea vor fi eliminate și ele.
preia controlul de Delegare AD
delegarea de Control Wizard este un instrument foarte util, dar nu există nici o modalitate ușoară de a vizualiza rapid sau inversa efectele sale. Deși puteți utiliza Dsrevoke.exe și Dsacls.exe pentru a îndeplini aceste sarcini, aceste instrumente au unele limitări. Dacă utilizați în schimb scriptul Remove-DSACE.ps1, veți avea un control mai bun asupra permisiunilor delegate în AD. Puteți descărca acest script făcând clic pe butonul Descărcați codul din partea de sus a paginii.
videoclipuri similare de la Brian Desmond (doar acces VIP):
Sesiunea 1: stăpânirea permisiunilor Active Directory Delegația
Sesiunea 2: stăpânirea permisiunilor de securitate Active Directory Delegația
Leave a Reply