| Ustawienia domyślne | |
| Okresowe odświeżanie | |
| Przetwarzanie CSE | |
| Asynchroniczne stosowanie GPO | |
| Śladami GPO | |
| Przeczytaj pozostałe części tego artykułu |
Domyślnie wykonanie ustawień zawartych w GPO inicjowane jest zawsze po stronie klienta (nie serwera!). Gdy konieczne z jakiś powodów jest zaingerowanie w ten domyślny mechanizm, niezbędne jest nieco więcej dodatkowych działań, takich jak np. http://support.microsoft.com/default.aspx?scid=kb;en-us;556027&sd=rss&spid=3198. Dlatego tak ważne jest, by klient mógł się do tego GPO dostać, w czym na pewno okaże się pomocne otwarcie od strony serwera na ewentualnej zaporze sieciowej odpowiednich portów, związanych z następującymi protokołami:
| • | ICMP |
| • | RPC |
| • | LDAP |
| • | SMB |
W przypadku systemu klienckiego Vista jest tu pewien wyjątek od reguły. Ponieważ system ten w celu wykrywania wolnego łącza nie bazuje już na protokole ICMP, tylko na mechanizmie o nazwie NLA (ang. Network Local Awareness) ICMP nie jest już wymagane. W każdym jednakże systemie należy jeszcze pamiętać o tym, by obecna struktura DNS była poprawnie skonfigurowana. Najpopularniejszym błędem popełnianym na tym polu w domenie, jest bez wątpienia brak ustawionego adresu IP kontrolera w konfiguracji DNS klienta.
Proces przetwarzania GPO może być zapoczątkowany:
| • | w przypadku GPO dotyczących komputera poprzez restart komputera, |
| • | w przypadku GPO dotyczących użytkownika poprzez zalogowanie się użytkownika, |
| • | w obu przypadkach poprzez wydanie komendy gpupdate. |
Istnieje również cykl tzw. okresowego odświeżania GPO w określonych odstępach czasu (określony domyślnie dla kontrolerów domeny co 5 minut i dla pozostałych stacji co 90 minut, plus losowo określony przedział czasu z zakresu 0-30 minut). Vista dzięki wspomnianemu powyżej mechanizmowi NLA potrafi odpowiednio zareagować w sytuacji, gdy przyszedł czas odświeżenia GPO, lecz kontroler domeny w tym momencie nie był dostępny dla klienta. W takim przypadku, gdy NLA określi, że przywrócono połączenie, nastąpi odświeżenie GPO. Lecz jak już zostało wspomniane, nastąpi to tylko wtedy, gdy dany cykl odświeżania GPO został pominięty.
By opisane mechanizmy odświeżania mogły jednakże mieć miejsce, musi istnieć coś, co wyzwala te procesy. W Vista dzieje się to za pośrednictwem dedykowanej usługi o nazwie Group Policy Client. Usługa ta zastąpiła w tym zakresie wcześniej wykorzystywany proces Winlogon.
Usługa ta koordynuje cały proces przekazując następnie resztę działań w ręce wspomnianych już wcześniej tzw. CSE. CSE, czyli Client Side Extensions, które są dynamicznymi bibliotekami odpowiedzialnymi za realizacje ustawień zawartych w konkretnych grupach GPO. Każda z nich jest powiązana z klasami ID przyporządkowanymi do poszczególnych grup ustawień. Dostępne CSE w Vista przedstawia tabelka poniżej.
| Tabela 1. CSE dostępne w systemie Windows Vista | ||
| ID klasy | Nazwa ustawień | Biblioteka dll |
25537BA6-77A8-11D2-9B6C-0000F8080861 | Folder Redirection | fdeploy.dll |
35378EAC-683F-11D2-A89A-00C04FBBCFA2 | Administrative Templates Extension | userenv.dll |
3610EDA5-77EF-11D2-8DC5-00C04FA31A66 | Disk Quotas | dskquota.dll |
426031C0-0B47-4852-B0CA-AC3D37BFCB39 | QoS Packet Scheduler | gptext.dll |
42B5FAAE-6536-11D2-AE5A-0000F87571E3 | Scripts | gptext.dll |
827D319E-6EAC-11D2-A4EA-00C04F79F83A | Security | scecli.dll |
A2E30F80-D7DE-11d2-BBDE-00C04F86AE3B | Internet Explorer branding | iedkcs32.dll |
B1BE8D72-6EAC-11D2-A4EA-00C04F79F83A | EFS Recovery | scecli.dll |
C6DC5466-785A-11D2-84D0-00C04FB169F7 | Software Installation | appmgmts.dll |
E437BC1C-AA7D-11D2-A382-00C04F991E27 | IP Security | gptext.dll |
C631DF4C-088F-4156-B058-4375F0853CD8 | Offline files | cscobj.dll |
8A28E2C5-8D06-49A4-A08C-632DAA493E17 | Deployed printer connections | gpprnext.dll |
B587E2B1-4D59-4e7e-AED9-22B9DF11D053 | 802.3 Group policy | dot3gpclnt.dll |
0ACDD40C-75AC-47ab-BAA0-BF6DE7E7FE63 | Wireless Group Policy | wlgpclnt.dll |
4CFB60C1-FAA6-47f1-89AA-0B18730C9FD3 | Internet Explorer Zonemapping | iedkcs32.dll |
FB2CA36D-0B40-4307-821B-A13B252DE56C | Enterprise Qos | gptext.dll |
Wszystkie one mają swoje odwołania w kluczu rejestru klienta HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon\GPExtensions. Każde z nich jest reprezentowane za pomocą odpowiedniego numeru GUID.
To, jakie CSE zostanie wywołane, uzależnione jest od określonych w części GPC wartości atrybutów gpcMachineExtensionName oraz gpcUserExtensionName, o których wspomniano już wcześniej. Określone w ten sposób CSE przetwarzają w sposób sekwencyjny podległe im ustawienia GPO według kolejności:
1. | CSE odpowiedzialne za szablony administracyjne; |
2. | pozostałe CSE w kolejności określonej w gałęzi rejestru HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions. |
Kolejność ta powoduje, że to, co zostanie ustawione przez szablony administracyjne może być nadpisane np. przez działanie skryptów.
Przetwarzanie danych CSE może też ulec zmianie przy wykryciu tzw. wolnego łącza (ang. slow link), czyli domyślnie łącza poniżej 500 Kb/s. W takiej sytuacji niektóre CSE są domyślnie wykluczone z przetwarzania w celu zmniejszenia ilości przesyłanych danych. Zawsze natomiast, bez względu na prędkość łącza, są przetwarzane następujące ustawienia:
| • | szablony administracyjne |
| • | ustawienia zabezpieczeń |
| • | restrykcje ograniczeń oprogramowania |
| • | zasady zabezpieczeń IPSec |
| • | ustawienia odzyskiwania EFS. |
Jeśli chcemy dokładnie prześledzić wykorzystane CSE w powiązaniu z GPO, których dotyczyły, należy się przyjrzeć dwóm gałęziom w rejestrze:
| • | HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Group Policy\History |
| • | HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy\History |
W każdej z tych gałęzi znajdziemy klucze określające CSE. Pod danym CSE natomiast znajdziemy klucze o numerach definiujących kolejność wykonywania, wynikającą z kolejności stosowanych GPO (na poniższym rysunku są to numery 0 i 1, reprezentujące dwie zasady GPO). Zobaczmy to dokładnie na przykładzie przedstawionym na rysunku poniżej.

Rys. 1. Klucze CSE.
Jako najważniejsze dostępne tu elementy można wymienić klucze:
| • | GPOLink – określa obiekt podłączenia GPO:
| ||||||||
| • | GPOName – określa GUID GPO; | ||||||||
| • | Version – wersja ostatnio użytego GPO wykorzystywana też w celu określenia, czy coś w GPO sie zmieniło; | ||||||||
| • | DSPath – wskazanie do części GPC danego GPO; | ||||||||
| • | FileSysPath – wskazanie do części GPT danego GPO; | ||||||||
| • | DisplayName – przyjazna nazwa GPO. |
Widzimy tu, iż dla części GPO użytkownika wywołane zostało CSE o numerze {25537BA6-77A8-11D2-9B6C-0000F8080861} czyli odpowiedzialne za przekierowanie folderów. Klucze 0 i 1 opisują już konkretne GPO. Pierwsze wykonywane GPO posiada numer 0, drugie numer 1 (w tym przypadku to GPO nosi nazwę marketing i jego właśnie szczegółowe ustawienia widzimy). Zwróćmy tu uwagę na numer wersji. W pierwszej chwili może się wydawać, że jest to ten sam numer, który umieszczono w pliku gpt.ini i odpowiednim atrybucie GPC. Tak jednak nie jest. Numer ten jak widzimy to 131074, ale akurat nas nie tyle będzie interesować jego reprezentacja dziesiętna, co heksadecymalna, czyli 0x00020002. Jeśli podzielimy ją na dwie części, otrzymamy dwie liczby, 0002 czyli pominąwszy zera dwie 2. Pierwsza z nich wskazuje na liczbę zmian odzwierciedlonych dla danej gałęzi użytkownika lub też komputera w pliku GPT.ini (tu akurat rozpatrujemy część użytkownika – stąd liczba zmian dotycząca ustawień użytkownika), druga liczba nawiązuje do analogicznej wartości powiązanej z GPC (wartości utrzymywanej w atrybucie versionNumber). Przypomnijmy sobie wcześniejszy przykład, czyli:
numer wersji=65536*2+8=131080
We wzorze to właśnie liczba 2, czyli nastąpiły dwie zmiany ustawień po stronie użytkownika.
Patrząc na liczbę 0x00020002 możemy określić, czy obie części: GPC i GPT były ze sobą zsynchronizowane podczas ostatniego przetwarzania GPO. Tu tak było, gdyż obie połówki liczby są te same, czyli w tym wypadku 0002.
Na podstawie tych wartości, znajdujących się w rejestrze klienta po dokonaniu porównania z numerami wersji GPO, znajdującymi się na serwerze następuje również sprawdzenie, czy dane GPO uległo zmianie od czasu ostatniego przetwarzania. Jeśli numery okażą się zgodne, GPO nie zostanie ponownie ściągnięte i przetworzone, bo i po co, skoro teoretycznie nic się nie zmieniło. Teoretycznie, bo takie zachowanie w pewnych przypadkach może być jednak niebezpieczne. Przypuśćmy, że na systemie klienckim użytkownik ma prawa administracyjne. GPO ustawia pewną wartość w rejestrze, użytkownik będący administratorem ją usuwa, bo ma takie prawa. Dopóki w GPO nie zajdzie zmiana, która tym samym nie wpłynie na zmianę numeru wersji GPO, to przez nawet miesiące nie mamy wpływu na to, co użytkownik zmienił. By zapobiec takim sytuacjom wprowadzono dwie modyfikacje. Po pierwsze: ustawienia zabezpieczeń wykonywane są bez względu na to, czy zaszły zmiany czy nie, i domyślnie dzieje się to co 16 godzin. Po drugie, by wymusić zawsze stosowanie GPO można włączyć mandatoryjne przetwarzanie GPO poprzez włączenie opcji „Process even if the Group Policy object have not changed”. Analogicznie w danej chwili możemy szybko wymusić przetwarzanie zasad GPO, bez względu na zmiany, dzięki wydaniu komendy gpupdate z parametrem /force, co często stosuje się chociażby w sytuacjach diagnostycznych. Zaznaczam jednak, że nie należy również wpadać w zbytnią paranoję i ustawiać każdorazowe przetwarzanie, a tylko w przypadkach, gdy jest to uzasadnione (zwykle względami bezpieczeństwa). Albowiem tak zaprojektowany mechanizm zabezpiecza również przed nadmiernym ruchem w sieci i dlatego należy go modyfikować, gdy jest to naprawdę celowe.
Tak w zarysie wygląda podstawowa idea działania całego mechanizmu. To jednak nie wszystko. By uzyskać pełniejszy obraz tego, co się dzieje należy również wziąć pod uwagę system i sytuację, w jakiej odbywa się aplikowanie GPO. Podobnie jak Windows XP tak i Vista opiera się na asynchronicznym stosowaniu GPO. Asynchroniczne wykonanie (czy też w tle) oznacza, że nie ma oczekiwania na zastosowanie zasad, a GPO jest stosowane niejako równolegle na przykład z procesem logowania użytkownika, czy też startem komputera.
Nie wszystkie jednak ustawienia GPO potrafią działać w takim trybie. Tym, które nie potrafią, dedykowano drugi restart/logowanie.
Przy następnym restarcie czy też logowaniu GPO ten jeden raz wykonane zostanie w trybie synchronicznym. Stworzy to możliwość zastosowania ściśle synchronicznych ustawień, takich jak chociażby zasady przekierowania folderów.
Istnieje jeszcze jeden wyjątek, kiedy Vista wchodzi od razu w tryb synchroniczny. Tryb taki używany jest przy pierwszym logowaniu użytkownika, czy też starcie komputera po przyłączeniu do domeny.
W celu ustalenia w Vista na stałe podobnego domyślnego zachowania, jak dla systemów Windows 2000 czy Windows 2003, czyli procesu synchronicznego należy włączyć w GPO następujące ustawienie: “Computer Configuration\Administrative Templates\System\Logon\Always wait for the network at computer startup and logon".
Klucz „History” to jednak nie jedyne miejsce, gdzie możemy się doszukiwać historii działania GPO. Każde przetworzenie GPO jest również rejestrowane w bazie WMI. Wynikowy Zestaw Zasad (ang. Resultant Set of Policies) to narzędzie graficzne pozwalające wydobyć z bazy te informacje. Jego działanie opiera się na dwóch trybach: logowania i planowania.
Group Policy Loging Mode pozwala sprawdzić wyniki zastosowania ostatniego GPO. Można to zrobić zdalnie, ale w takim przypadku warunkiem powodzenia jest by komputer był włączony i oczywiście otwarte były odpowiednie porty. W przypadku, gdy w ten sposób chcemy sprawdzić zastosowane ustawienia użytkownika, użytkownik ten musi być wcześniej (choć raz) zalogowany. Tryb ten dostępny jest tylko w systemie Windows XP i późniejszych.
Group Policy Modeling natomiast symuluje użycie danego GPO. Miejscem gdzie to się odbywa jest kontroler domeny. Rezultaty tego działania trafiają do bazy WMI na kontrolerze domeny, by stamtąd GPMC mogło wydobyć zasymulowane w ten sposób wyniki. Odpowiednikiem tego narzędzia z linii komend jest najpopularniejsze chyba obecnie narzędzie diagnostyczne GPO- gpresult.
W Vista jednak, mimo wszystko dziennik zdarzeń to podstawowe miejsce, gdzie należy szukać wskazówek, w jaki sposób zostało przetworzone GPO - poprawnie czy też może coś poszło nie tak. Ujednolicono bowiem diagnostykę GPO przenosząc informacje diagnostyczne dotąd rozdzielone na kilka plików w jedno miejsce, którym to stał się dziennik zdarzeń a dokładnie gałąź „Applications and Services Logs->Microsoft->Windows->Group Policy”. Nadal jednak, by móc te wyniki odpowiednio zinterpretować, często niezbędne staje się poznanie zasad, na jakich GPO opiera swoje działanie. Mam nadzieję, że ten artykuł, choć w małej części w tym pomoże.
| • |
![]() | Barbara Wróbel |