Searching for delegated rights in AD
Scopul scriptului care il voi prezenta mai jos este de a cauta in Active Directory dupa delegarile facute la nivel de Organizational Unit-uri. Intr-un domeniu in care facem delegari pentru alti admini, daca acestea nu sunt documentate si sunt facute folosind useri si nu de grupuri, in timp sunt uitate iar userul va avea acces in continuare la resursele delegate chiar daca nu face parte din grupurile de administratori.
Scriptul arata cam asa:
‘Script created by Andrei Ungureanu
‘www.winadmin.roOn error resume next
Const ADS_SCOPE_SUBTREE = 2
Const ADS_ACEFLAG_INHERITED_ACE = &H10Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"Set objCOmmand.ActiveConnection = objConnection
objCommand.CommandText = _
"Select Name, distinguishedName from ‘LDAP://DC=itboard,DC=local’ " _
& "Where objectClass=’organizationalUnit’"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirstDo Until objRecordSet.EOF
strOU = objRecordSet.Fields("distinguishedName")
Set ObjUser = GetObject("LDAP://" & strOU)
Set objsd = objUser.Get("ntSecurityDescriptor")
Set dacl = objsd.DiscretionaryAclFor Each ace In dacl
If ace.Trustee = "ITBOARD\andreiu" Then
iAceFlags = ace.AceFlagsIf(iAceFlags And ADS_ACEFLAG_INHERITED_ACE)Then
Exit For
End Ifwscript.echo strOU
Exit For
End If
nextobjRecordSet.MoveNext
Loop
E nevoie sa inlocuiti in script ITBOARD\andreiu cu userul pe care il cautati si la fel numele domeniului din dc=itboard,dc=local in numele domeniului pe care rulati scriptul. Scriptul va verifica toata ierarhia de OU-uri si va afisa doar locatiile in care userul are permisiuni (daca exista deja permisiuni mostenite de la un OU parinte nu va mai verifica alte permisiuni pe acel OU).
Atentie ca numele userului si domeniul sunt case sensitive. Acestea trebuie puse in script exact asa cum apar in proprietatile userului:
Scriptul nu este bullet proof si e posibila sa existe cazuri in care sa nu detecteze tot. Pentru a-i imbunatati viteza am decis sa fac skip la OU-urile unde exista deja drepturi mostenite pentru acel user.
PS: Atentie ca scripturile postate aici sunt modificate de wordpress si anumite caractere trebuie modificate de mana cand faceti copy/paste la script.