Managed Service Accounts

W dzisiejszej odsłonie zaprezentuję możliwości jednej z klas obiektów AD, a konkretnie msDS-ManagedServiceAccount. Nie jest to żadna nowość, gdyż pojawiła się wraz z nadejściem systemu Windows Server 2008 R2, ale i tak klasa ta zasługuje na poświęcenie jej nieco uwagi.

Przybliżmy nieco sedno problemu. Mianowicie, usługi pracujące w systemie zazwyczaj wykorzystują dedykowane poświadczenia jak chociażby LocalSystem. Dla większości przypadków zmiana tych poświadczeń nie jest konieczna, jednakże podejście to ma pewne ograniczenia. Problemy zaczynają się w przypadku, gdy któraś z kluczowych dla nas usług musi pracować z uprawnieniami konta usługi Active Directory. Oczywiście można wykorzystać do tego celu zwykłe konto użytkownika, ale niesie to ze sobą wiele niebezpiecznych następstw. W tym celu stworzony został nowy rodzaj obiektu, a mianowicie – msDS-ManagedServiceAccount.

Aby możliwe było skorzystanie z omawianej funkcjonalności konieczne jest wykonanie kilku zasadniczych kroków. Pierwszym z nich jest utworzenie samego obiektu bazującego na w/w klasie, do tego celu najlepiej wykorzystać cmdlet Windows PowerShell modułu ActiveDirectory.

New-ADServiceAccount TestServiceAccount -Enabled $true

Konta te domyślnie tworzone są w dedykowanym kontenerze o charakterystycznej nazwie: Managed Service Accounts.

Następnie możemy przejść do powiązania wcześniej utworzonego konta usługi z serwerem członkowskim, na którym będzie pracowała interesująca nas usługa.

Add-ADComputerServiceAccount -Identity TestServer -ServiceAccount TestServiceAccount

W ramach wskazanego konta komputera, operacja ta doprowadzi do uzupełnienia, atrybutu msDS-HostServiceAccount odwołaniem do obiektu konta usługi.

Kolejnym krokiem jest “instalacja” konta usługi na docelowej maszynie. Proces ten jest niczym innym jak wstępnym skonfigurowaniem stacji, tak aby mogła wykorzystywać wcześniej utworzone konto w ramach pracy usługi. Niniejszej operacji można dokonać wykorzystując na docelowej maszynie polecenie Install-ADServiceAccount ze wskazaniem nazwy konta serwisowego.

Install-ADServiceAccount -Identity TestServiceAccount

W przypadku maszyn klienckich, konieczne jest zainstalowanie pakietu RSAT, tak aby dostępny był moduł ActiveDirectory dla konsoli Windows PowerShell

Dla tak skonfigurowanej stacji możliwa jest podmiana poświadczeń wykorzystywanych do uruchamiania usługi. Można tego dokonać chociażby wykorzystując instancję WMI konkretnej usługi. Należy pamiętać, iż nazwa konta usługi powinna być zakończona charakterystycznym znakiem $.

$ServiceName = 'WSearch'
$ServiceAccount = 'CONTOSO\TestServiceAccount$'
$Service=Get-Wmiobject win32_service -filter "name='$ServiceName'"
$InParams = $Service.psbase.getMethodParameters("Change")
$InParams["StartName"] = $ServiceAccount
$InParams["StartPassword"] = $null
$Service.invokeMethod("Change",$InParams,$null)

Należy tutaj zwrócić uwagę, iż dla przypisanego konta nie podajemy hasła.

Ostatecznie konieczny jest restart usługi. Niestety, nie zawsze udaje się ponownie uruchomić modyfikowaną usługę. Mianowicie, najczęstszą przyczyną jest zbyt mały poziom uprawnień konta serwisowego, a objawia się to następującym komunikatem błędu:

Uprawnienie wymagane do prawidłowego działania usługi nie istnieje w konfiguracji konta usługi. Aby wyświetlić konfigurację usługi i konfigurację konta, można użyć przystawki Usługi programu Microsoft Management Console (MMC) (services.msc) i przystawki Ustawienia zabezpieczeń lokalnych programu MMC (secpol.msc).

W przypadku kont użytkownika dostępny poziom uprawnień, możemy sprawdzić chociażby poleceniem:

whoami /priv

Natomiast, aby zobaczyć listę uprawnień jakie są wymagane dla uruchomienia konkretnej usługi możemy posłużyć się rejestrem systemu Windows. W tym celu konieczne jest przejście do gałęzi:

HKLM\System\CurrentControlSet\Services\

i zweryfikowanie stanu wartości RequiredPrivileges:

Get-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\WSearch |
Select-Object –ExpandProperty RequiredPrivileges

Powyższe polecenie zwróci listę wymaganych uprawnień, jakie koniczne są do uruchomienia usługi. Niestety dla osób niewtajemniczonych nazywa te mogą być nieco enigmatyczne, dlatego polecam zapoznanie się z dokumentacją uprawnień w bazie wiedzy MSDN.

Ostatecznie wystarczy, aby docelowe uprawnienia skonfigurować w konsoli SecPol.msc w ramach gałęzi:

Ustawienia zabezpieczeń – Zasady Lokalne – Przypisywanie praw użytkownika

…przydzielając dla poszczególnych uprawnień wcześniej przygotowane konto usługi. Gdy wymagane uprawnienia są poprawnie zdefiniowane, problem powinien ustąpić.

Źródła:
http://technet.microsoft.com/en-us/library/dd548356(v=ws.10).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/bb530716(v=vs.85).aspx

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s