Active Directory: Role FSMO. Jak przenieść role FSMO na inny kontroler?

Czym są role FSMO w Active Directory? Jakie mamy role FSMO. Jak przenieść jedną lub więcej ról FSMO na inny kontroler domeny? Jak wykonać transfer rół FSMO z użyciem PowerShell? W jaki sposób przechwycić rolę FSMO?

Flexible Single Master Operation są to funkcje związane bezpośrednio z architekturą usługi Active Directory. Są one niezbędne do jej poprawnego działania, najcześciej nazywamy je rolami FSMO. Kontrolery domeny mogą pełnić jedną lub więcej ról FSMO. W środowiskach gdzie kontrolerów jest więcej mogą też nie pełnić żadnej z nich.

W usłudze Active Directory większość standardowych operacji (takich jak tworzenie nowych użytkowników, tworzenie grup zabezpieczeń, dodawanie komputera do domeny) można wykonywać na dowolnym kontrolerze domeny. Usługa replikacji Active Direcotry jest odpowiedzialna za propagowanie tych zmian w katalogu na pozostałe kontrolery. Różne konflikty np jednoczesna zmiana nazwy użytkownika na kilku kontrolerach domeny są rozwiązywane według prostej zasady: kto ostatni, ma rację.

Istnieje jednak szereg operacji, w których konflikt jest niedopuszczalny np podczas tworzenia nowej domeny, lasu podrzędnego, zmiany schematu Active Directory.
Do wykonywania operacji wymagających obowiązkowej unikalności potrzebne są kontrolery domeny z rolami FSMO i to właśnie podstawowym celem tych ról jest zapobieganie tego rodzaju konfliktom.

Role FSMO są podzielone na takie które są unikalne dla lasu Active Directory oraz takie które są unikalne dla każdej domeny w lesie. Istnieją dwie role FSMO dla danego lasu i trzy role FSMO dla samej domeny.


Schema Master – zarządza pełną wersją schematu usługi katalogowej, definiującego wszystkie przechowywane w niej atrybuty. Każdy kontroler domeny w lesie przechowuje co prawda kopię tego schematu, ale to właśnie serwer z rolą Schema Master utrzymuje jej kopie wzorcową.
Jeżeli rola Schema Master (kontroler który ją posiada) jest nie dostępny, stracimy możliwość edytowania schematu, na szczęście Schemat domeny zmieniany jest tylko w wypadku zmiany poziomu lasu/domeny, dodawania nowych pól do struktury katalogu czy instalacji aplikacji wprowadzających zmiany w AD (Microsoft Exchange, Skype For Business). Rola Schema Master nie jest krytyczna do ciągłego jej działania. Jest rolą unikalną w skali lasu AD.

Domain Naming Master – rola FSMO odpowiedzialna za nazewnictwo domen w lasie. Dzięki niej w żadnym lesie nie będzie dwóch domen o tej samej nazwie. Operacje dodawania nowych domen do lasu nie są wykonywane często, rola ta nie jest krytyczna dla działania usługi Active Directory. Może funkcjonować na jednym serwerze wraz z innymi rolami.
W przypadku braku dostępności FSMO Domain Naming Master utracimy możliwość tworzenia nowych domen, ich modyfikowania i usuwania w lesie.
Ponieważ ta rola jest również unikalna w skali całego lasu Active Directory, zaleca się jej przypisanie do kontrolera z Schema Master

PDC Emulator – jest to kluczowa rola FSMO w każdej domenie. Odpowiada za poprawne działanie usługi Active Directory czyli emulacja podstawowego kontrolera domeny Windows NT 4.0, synchronizację haseł pomiedzy kontrolerami, zarządza politykami grup, pełni funkcje serwera czasu dla domenu.
Brak dostępności PDC Emulatora prowadzi do problemów z logowaniem, zmianą haseł (brak synchronizacji tej zmiany pomiędzy kontrolerami). Active Directory opiera się w znacznym stopniu na znacznikach czasu i niestety brak serwera czasu wpływa na jej poprawne działanie.

RID Master – przydziela identyfikatory bezpieczeństwa w usłudze Active Directory. Każdy obiekt w katalogu uzyskuje swój identyfikator (SID) wląśnie z użyciem tej roli. Dla przykładu poniżej SID:

Jest on tworzony na podstawie nazwy domeny i jest unikalny. Tylko ostatnia cześć SID czyli w naszym przykładzie 500 jest tworzony na podstawie przydzielonego przez RID Master zakresu.

Kontrolery w domenie otrzymują od niego zakres identyfikatorów do wykożystania (domyślnie 500szt.) aby uniknąć duplikatów podczas tworzenia obiektów.
Z tego powodu niedostępność tej roli FSMO nie jest odrazu zauważalna w małych środowiskach. Brak FSMO RID Master blokuje tworzenie nowych obiektów.

Infrastrukture Master – rola ta odpowiada za translacje identyfiaktorów SID, GUID i DN pomiędzy domenami w lesie.
Brak dostępności tej roli FSMO prowadzi do problemów w komunikacji pomiędzy domenami (zamiast nazw zobaczymy identyfikatory)

Skoro wiemy już jakie role FSM pojawiają się w Active Directory, czas abyśmy to zweryfikowali. Sprawdźmy która z maszyn w naszym środowisku posiada określone role, na początek użyjemy dwóch poleceń PowerShell:

# FSMO roles --> forest
Get-ADForest | Select-Object DomainNamingMaster, SchemaMaster

# FSMO roles --> domain
Get-ADDomain | Select-Object InfrastructureMaster, RIDMaster, PDCEmulator

Tyle teorii? Jak wykonać ich transfer np na nowy kontroler?

Zacznijmy od sprawdzenia który z kontrolerów ma je obecnie. Nie będziemy używać Get-ADforest i Get-ADDomain jak powyżej kiedy przypominaliśmy sobie czy jest FSMO. Zrobimy to szybciej poniższym sprawdzonym onelinerem z użyciem Get-ADDomainController:

Get-ADDomainController -Filter * | Select-Object Name, OperationMasterRoles

Wiemy już która maszyna trzyma role FSMO, sprawdźmy jeszcze dla pewności szczegóły tego serwera:

Get-ADDomainController -Filter * | Select-Object Name, OperationMasterRoles

Czas na samo przeniesienie ról. Do ich transferu domeny użyjemy polecenia PowerShell Move-ADDirectoryServerOperationMasterRole. W argumencie OperationMasterRole możemy podać zarówno nazwę roli FSMO, jak i jej indeks zgodnie z poniższa tabelą:

PDCEmulator0
RIDMaster1
Infrarastructuremaster2
Schemamaster3
DomainNamingMaster4

W naszym przykładzie będziemy transferować wszystkie role na kontroler s4033, polecenie użyte do tego celu będzie wyglądać następująco:

Move-ADDirectoryServerOperationMasterRole -Identity s4033 -OperationMasterRole 0,1,2,3,4

Transfer każdej z ról musimy jeszcze potwierdzić.

UWAGA: w przypadku gdy dla ról SchemaMaster i DomainNamingMaster otrzymamy błąd Acces is denied (zrzut poniżej):

problem będzie dotyczył uprawnień użytkownika, wystarczy zweryfikować czy konto którego używacie do wykonania tego polecenia znajduje się w odpowiednich grupach: Enterprise Admins, Schema Admins:

Jeżeli operacja transferu ról zakończy się poprawnie, wywołajmy jeszcze raz polecenie które sprawdzi czy nasz kontroler ma role u siebie:

Powyższy sposób doskonale działa kiedy zarówno źródło j jak cel transferu jest dostępny. Ale co zrobić gdy utracimy jeden z kontrolerów który miał do siebie przypisane role FSMO? Co gdy tracimy kontroler z rolą FSMO bezpowrotnie? Musimy wykonać tak zwanego ich przejęcia tzw size FSMO.

W tym celu użyjemy tego samego polecenia Move-ADDirectoryServerOperationMasterRole ale z parametrem -Force

UWAGA: po przejęciu ról FSMO kontroler domeny, z którego przejęto role, nigdy nie powinien być ponownie połączony z domeną! Pamiętajcie też o usunięciu tego obiektu ze swojej domeny.

Move-ADDirectoryServerOperationMasterRole -Identity s4033 -OperationMasterRole 0,1,2 -Force