Wyświetlanie lub usuwanie uprawnień delegowanych w usłudze Active Directory

delegacja Active Directory (AD) jest kluczowym elementem infrastruktury IT wielu organizacji. Delegując administrację, możesz przyznać użytkownikom lub grupom tylko te uprawnienia, których potrzebują, bez dodawania użytkowników do grup uprzywilejowanych (np. Administratorzy domeny, Operatorzy kont). Najprostszym sposobem wykonania delegacji jest użycie Kreatora delegowania kontroli w przystawce Microsoft Management Console (MMC) Użytkownicy i komputery usługi Active Directory.

powiązane: Zarządzanie Active Directory za pomocą PowerShell

chociaż Kreator delegowania kontroli zapewnia łatwy sposób delegowania uprawnień, nie ma odpowiedniego kreatora do usuwania delegowanych uprawnień. Ktoś z Microsoftu musiał zauważyć tę wadę i stworzył program wiersza poleceń o nazwie Dsrevoke.exe, który może usunąć wpisy uprawnień dodane przez kreatora delegowania kontroli.

jednak Dsrevoke.program exe ma dwa ważne ograniczenia techniczne, które są udokumentowane w artykule Microsoft ” podczas korzystania z narzędzia wiersza poleceń Dsrevoke do zgłaszania uprawnień dla wszystkich jednostek organizacyjnych w domenie opartej na systemie Windows Server 2003, narzędzie może nie zwrócić wszystkich wpisów kontroli dostępu.”Te ograniczenia są:

  • Dsrevoke.exe może znaleźć tylko do 1,000 Ou w jednym wyszukiwaniu. Sugerowanym obejściem tego ograniczenia jest rozpoczęcie wyszukiwania programu w głębiej zagnieżdżonej jednostce organizacyjnej (OU) w celu zmniejszenia liczby wyników.
  • Dsrevoke.exe nie powiedzie się, jeśli jakiekolwiek ou zawierają znak ukośnika (/) w swoich nazwach. Nie ma obejścia tego ograniczenia poza zmianą nazwy obrażających ou.

podczas pracy z Dsrevoke.exe niedawno udało mi się obejść pierwszy problem, ale potem natknąłem się na drugi problem. Ze względów organizacyjnych zmiana nazwy ou na usunięcie znaku ukośnika nie wchodziła w grę. Poza tym Ukośnik jest poprawnym znakiem w nazwie OU, a Dsrevoke.exe powinien dziaĹ ‘aÄ ‡ bez wzglÄ ™ du na to, czy OU zawiera ukĹ’ adnik w swojej nazwie, czy nie. Ponadto praca wokół limitu 1000 OU w moim środowisku była czasochłonna.

z powodu tych problemów postanowiłem sprawdzić, czy istnieją jakieś wbudowane alternatywy dla Dsrevoke.exe. Począwszy od najnowszych wersji systemu Windows, Dsacls.program exe zapewnia sposób usuwania uprawnień dodanych przez kreatora delegowania kontroli. Chociaż nie zawodzi, jeśli OU zawiera ukośnik w swojej nazwie, Dsacls.exe nie może wyszukiwać podkontenerów dla uprawnień takich jak dsrevoke.exe tak.

najpierw postanowiłem napisać prosty skrypt do wyszukiwania Ou i wywoływania Dsacls.exe, aby usunąć delegowane uprawnienia z każdego OU. Kiedy jednak myślałem o tym, jak chcę zaprojektować taki skrypt, przyszło mi do głowy, że chciałbym również zobaczyć listę, której ou ma uprawnienia delegowane do konkretnego użytkownika lub grupy. Dsrevoke.exe i Dsacls.exe może stworzyć listę uprawnień, ale wyjście jest bardzo długie i techniczne. Chciałem czegoś prostszego.

ze względu na ograniczenia w Dsrevoke.exe i Dsacls.exe i moje pragnienie uzyskania krótszego wyjścia, postanowiłem napisać skrypt Windows PowerShell, aby uzyskać pożądaną funkcjonalność. Rezultatem jest Remove-dsace.ps1. Zanim jednak omówię ten skrypt, muszę podać kilka podstawowych informacji na temat tego, co dzieje się podczas korzystania z Kreatora delegowania kontroli, a także omówić kilka podstawowych koncepcji bezpieczeństwa systemu Windows.

dodawanie uprawnień delegowanych za pomocą Kreatora

jak już wcześniej wspomniałem, Kreator delegowania kontroli zapewnia łatwy sposób delegowania uprawnień. Załóżmy na przykład, że chcesz, aby członkowie grupy resetowania hasła mogli resetować hasła dla użytkowników w jednostce wszystkich użytkowników w domenie reklamowej. Aby to zrobić, musisz wykonać następujące kroki:

  1. Otwórz konsolę Użytkownicy i komputery usługi Active Directory.
  2. kliknij prawym przyciskiem myszy na wszystkich użytkowników i wybierz opcję deleguj kontrolę, jak pokazano na rysunku 1. Kliknij przycisk Dalej, aby przejść obok strony powitalnej kreatora.

Rysunek 1: Uruchamianie Kreatora delegowania kontroli

  1. na stronie użytkownicy lub grupy kreatora kliknij przycisk Dodaj.
  2. w Wybierz użytkowników, komputery lub grupy w oknie dialogowym wprowadź nazwę grupy (Reset hasła), kliknij Sprawdź nazwy przycisk, aby upewnić się, że nazwa grupy jest poprawna, i kliknij OK, jak pokazano na rysunku 2.
Rysunek 2: wprowadzanie nazwy grupy
Rysunek 2: wprowadzanie nazwy grupy
  1. po upewnieniu się, że nazwa grupy jest wymieniona na stronie użytkownicy lub grupy, kliknij przycisk Dalej, Jak pokazano na rysunku 3.
Rysunek 3: upewnianie się, że nazwa grupy jest wymieniona
Rysunek 3: Upewnienie się, że nazwa grupy jest wymieniona
  1. na stronie zadania do delegowania wybierz Zresetuj hasła użytkowników i Wymuś zmianę hasła przy następnym logowaniu i kliknij Dalej, Jak pokazano na rysunku 4.
Rysunek 4: Wybór zadań do delegowania
Rysunek 4: Wybór zadań do delegowania
  1. zweryfikuj informacje na ostatniej stronie kreatora i kliknij przycisk Zakończ.

po kliknięciu przycisku Zakończ, Kreator delegowania kontroli dodaje żądane uprawnienia do wszystkich użytkowników. Możesz wyświetlić efekty delegacji, klikając prawym przyciskiem myszy jednostkę wszyscy użytkownicy, wybierając Właściwości i wybierając kartę Zabezpieczenia. (Jeśli karta zabezpieczenia nie jest widoczna, włącz opcję Funkcje zaawansowane w menu Widok konsoli Użytkownicy i komputery usługi Active Directory.) Aby uzyskać szczegółowy widok, możesz kliknąć przycisk Zaawansowane. Rysunek 5 pokazuje okno dialogowe Zaawansowane ustawienia zabezpieczeń.

Rysunek 5: recenzowanie DACL dla wszystkich użytkowników OU
Rysunek 5: recenzowanie DACL dla wszystkich użytkowników OU

ACL, Asy i powiernicy—O rany!

aby zrozumieć informacje dostarczane w oknie dialogowym Zaawansowane ustawienia zabezpieczeń, musisz wiedzieć o następujących koncepcjach zabezpieczeń systemu Windows: lista kontroli dostępu (ACL), wpis kontroli dostępu (Ace), powiernik i dziedziczenie. Musisz również zrozumieć te pojęcia, aby użyć Remove-dsace. ps1.

ACL. Istnieją dwa rodzaje ACLs: dyskrecjonalne ACLs (DACLs) i systemowe ACLs (SACLs). DACL identyfikuje konta, które są dozwolone lub nie mają dostępu do obiektu. SACL opisuje, w jaki sposób administrator chce rejestrować próby dostępu do obiektu (np.

ACE. ACL składa się z asów. Każdy ACE identyfikuje powiernika i określa dostęp powiernika (Zezwalaj, odmawiaj lub kontroluj) do obiektu. Kreator delegowania kontroli dodaje asy do DACL kontenera reklamowego. Rysunek 5 pokazuje DACL dla wszystkich użytkowników OU. Na tym rysunku termin permission entry jest synonimem ACE.

Powiernik to jednostka (użytkownik, grupa zabezpieczeń lub sesja logowania), do której odnosi się ACE. Każdy as odnosi się do jednego powiernika. Na rysunku 5, termin główny jest synonimem powiernika. Rysunek 5 pokazuje, że do grupy resetowania hasła przypisane są dwa Asy. Innymi słowy, Grupa resetowania hasła jest powiernikiem (głównym) dla tych dwóch asów.

dziedziczenie. ACE może być stosowany bezpośrednio do obiektu lub może być dziedziczony z obiektu nadrzędnego zasobu. Na rysunku 5, dwa Asy dla wszystkich użytkowników, które zawierają grupę resetowania hasła jako powiernik, nie są dziedziczone z nadrzędnego kontenera (tj. odziedziczona z kolumny czyta Brak), ponieważ Kreator delegowania kontroli dodał je bezpośrednio do DACL. Rysunek 6 przedstawia DACL dla jednostki rozliczeniowej. Accounting OU ‘ s DACL zawiera dwa Asy dla grupy resetowania hasła, ale te asy są dziedziczone od OU wszystkich użytkowników (tzn. dziedziczona z kolumny czyta OU=All Users,DC=fabrikam,DC=local).

Rysunek 6: przeglądanie DACL dla Biura Rachunkowego
Rysunek 6: przeglądanie DACL dla Biura Rachunkowego

wprowadzenie Remove-dsace.ps1

napisałem Remove-dsace. ps1 (skrót od remove directory service Aces), aby osiągnąć następujące cele:

  • Znajdź ou zawierające nie dziedziczone Asy zawierające powiernika.
  • Rekursuj do podrzędnych jednostek ou, jeśli jest to wymagane.
  • Usuń Nie dziedziczone Asy zawierające powiernika.
  • twórz zwięzłe dane wyjściowe.

składnia skryptu wygląda następująco:

Remove-DSACE path 

parametr-Report or-Remove określa, czy skrypt wyświetli lub usunie Nie dziedziczone Asy. Jeśli podasz -Report, skrypt znajdzie Nie dziedziczone Asy zawierające powierników, ale ich nie usunie. Jeśli podasz -Remove, skrypt usunie Nie dziedziczone Asy. Bardzo ważne jest, aby zrozumieć, że skrypt usunie wszystkie Nie dziedziczone Asy dla powiernika, a nie tylko asy dodane przez kreatora delegowania kontroli. Dzieje się tak dlatego, że nie ma sposobu, aby określić, w jaki sposób nie dziedziczone Asy zostały dodane.

parametry-Report I-Remove są opcjonalne, ale skrypt domyślnie przyjmuje parametr-Report. Skrypt wyrzuci błąd, jeśli podasz oba parametry w tym samym czasie.

parametr-Path służy do określenia co najmniej jednej wyróżnionej nazwy (DNS) Ad ou. Nazwa parametru-Path jest opcjonalna i akceptuje wejście potoku. Chociaż można określić wiele DNs, nie można używać symboli wieloznacznych.

parametr-Trustee nazywa powiernika, który ma znaleźć w asach. Skrypt bada DACL każdej JEDNOSTKIUŁU pod kątem Nie dziedziczonych asów zawierających nazwanego powiernika. Możesz określić wielu powierników za pomocą listy rozdzielanej przecinkami lub tablicy, ale nie możesz używać symboli wieloznacznych. Nazwy powierników można określić przy użyciu dowolnego z formatów nazw wymienionych w tabeli 1.

Format Przykład
Tabela 1: Formaty nazw dla parametru-Trustee
Windows NT 4.0 naming format (NT4)
DN obiektu CN = Ken, CN = Users, DC=fabrikam, DC = com
nazwa kanoniczna obiektu fabrikam.com/Users/Ken Dyer
główna nazwa użytkownika obiektu (UPN)

jeśli chcesz wyszukać ou pod podanym OU, dołączasz parametr-Recurse. Jeśli chcesz połączyć się z określonym kontrolerem domeny (DC), możesz określić nazwę serwera za pomocą parametru
-ServerName. Zarówno parametry-Recurse, jak i-ServerName są opcjonalne.

skrypt obsługuje alternatywne poświadczenia. Parametr-Credential używa obiektu PSCredential, który zawiera nazwę użytkownika i hasło, których skrypt powinien użyć do połączenia się z domeną.

skrypt obsługuje również parametr-Confirm. Parametr-Confirm ma znaczenie tylko w połączeniu z parametrem-Remove. Parametr-Confirm jest domyślnie włączony, chyba że zostanie wyłączony przez podanie-Confirm:$FALSE lub przez ustawienie zmiennej $ConfirmPreference na None. Powinieneś wyłączyć parametr-Confirm tylko wtedy, gdy jesteś absolutnie pewien, że usuwasz poprawne Asy.

skrypt wytwarza obiekty wyjściowe zawierające właściwości wymienione w tabeli 2.

Nieruchomości opis
Tabela 2: wyjściowe Właściwości obiektu dla Remove-DSACE.ps1
ścieżka OU ‘s DN
Powiernik nazwa powiernika w formacie domeny\nazwa
Asy liczba Nie dziedziczonych asów w ACL OU
wynik * słowo “usunięte” lub komunikat o błędzie
*właściwość Result istnieje tylko przy użyciu parametru-Remove.

skrypt zawiera tylko ou z nie-dziedzicznymi Asami zawierającymi powiernika. Dziedziczone Asy powiernika nie są uwzględniane w wyniku. Rysunek 7 przedstawia dwa przykłady. Pierwsze polecenie na rysunku 7 nie daje żadnego wyniku, ponieważ DACL dla Accounting OU nie zawiera żadnych Nie dziedziczonych asów dla grupy resetowania hasła. (Jednostka rozliczeniowa ma dwa Asy dla grupy resetowania hasła, ale te asy są dziedziczone od wszystkich użytkowników, jak pokazano na rysunku 6.) Drugie polecenie na rysunku 7 daje wynik. Istnieją dwa nie dziedziczone Asy dla grupy resetowania hasła w OU wszystkich użytkowników (jak widać na rysunku 5).

Rysunek 7: porównanie wyjścia z dwóch komend
Rysunek 7: Porównując dane wyjściowe z dwóch poleceń

przykład ze świata rzeczywistego

przyjrzyjmy się, jak można użyć Remove-dsace.ps1 w świecie rzeczywistym. Załóżmy, że administrator w fabrikam.lokalna domena użyła Kreatora delegowania kontroli do delegowania uprawnień do grupy personelu Sekretarskiego w OU wszystkich użytkowników i niektórych ou pod nią, ale nie pamięta, które ou. Musisz usunąć te delegowane uprawnienia, aby móc delegować uprawnienia do innych grup.

najpierw musisz zobaczyć listę ou, które mają nie dziedziczone Asy zawierające grupę personelu Sekretarskiego. Aby to zrobić, możesz użyć polecenia:

Remove-DSACE -Report ` -Path "OU=All Users,DC=fabrikam,DC=local" ` -Trustee "FABRIKAM\Secretarial_Staff" ` -Recurse | Format-List

polecenie to i jego wynik pokazano na rysunku 8.

Rysunek 8: lista jednostek ou, które mają Nie dziedziczone Asy zawierające grupę personelu Sekretariatu
Rysunek 8: lista jednostek ou, które mają Nie dziedziczone Asy zawierające grupę personelu Sekretariatu

z tego wyniku można zobaczyć, że istnieją trzy jednostki ou, które mają Nie dziedziczone Asy zawierające grupę personelu Sekretariatu. Po zweryfikowaniu, że możesz usunąć te Asy, możesz zastąpić parametr-Report parametrem-Remove i powtórzyć polecenie, jak pokazano na rysunku 9. Jak wspomniałem wcześniej, jeśli grupie personelu Sekretarskiego przypisano jakiekolwiek inne uprawnienia poza kreatorem delegowania kontroli, te również zostaną usunięte.

Rysunek 9: usunięcie ou, które mają Nie dziedziczone Asy zawierające grupę personelu Sekretarskiego
Rysunek 9: Usuwanie ou, które nie mają dziedziczonych asów zawierających grupę pracowników sekretariatu

Przejmij kontrolę nad delegowaniem AD

Kreator delegowania kontroli jest bardzo pomocnym narzędziem, ale nie ma łatwego sposobu na szybkie przeglądanie lub odwracanie jego efektów. Chociaż możesz użyć Dsrevoke.exe i Dsacls.exe aby wykonać te zadania, narzędzia te mają pewne ograniczenia. Jeśli zamiast tego użyjesz skryptu Remove-dsace.ps1, będziesz miał lepszą kontrolę nad delegowanymi uprawnieniami w reklamie. Możesz pobrać ten skrypt, klikając przycisk Pobierz kod u góry strony.

powiązane filmy Briana Desmonda (tylko dostęp VIP):
Sesja 1: Mastering delegacji uprawnień Active Directory
Sesja 2: Mastering delegacji uprawnień zabezpieczeń Active Directory

Leave a Reply