Managed Service Account (MSA) to specjalny typ konta Active Directory, którego można używać do bezpiecznego uruchamiania usług, aplikacji i zaplanowanych zadań.
Konta tego typu zostały wprowadzone w Windows Server 2008 R2 (typ obiektu msDS-ManagedServiceAccount). Ich głównym ograniczeniem jest to, że takie konto może być używane tylko na jednym serwerze (nie można ich używać w klastrach i usługach NLB). Dlatego w Windows Server 2012 wprowadzono Group Managed Service Accounts/gMSA (typ msDS-GroupManagedServiceAccount).
Konta usług zarządzane grupowo (gMSA)
Konta te mogą być używane jednocześnie na wielu hostach. Zazwyczaj konta użytkowników, używane jako konta usług, rzadko mają zmieniane hasło. Rozwiązanie typu Group Managed Service Accounts (gMSA) zapewniają lepsze i bezpieczniejsze podejście (począwszy od systemu Windows 2012). Hasło jest zarządzane przez AD i automatycznie zmieniane.
Do uwierzytelniania używany jest tylko protokół Kerberos, wyłączone jest logowanie interaktywne, a hasło jest niejawnie tylko przechowywane w systemie lokalnym. Dzięki temu nie można wyodrębnić hasła z procesu systemowego LSASS za pomocą mimikatz lub podobnego narzędzia.
Typowym przykładem zastosowania gMSA jest wszelkie uruchamianie usług, aplikacji i zaplanowanych zadań. Automatycznie generowane hasło o długości 240 bajtów, które zmienia się co 30 dni, zapewnia odpowiednie bezpieczeństwo. Obecnie gMSA jest obsługiwany przez takie systemy jak SQL Server, IIS, AD LDS, Exchange.
Tworzenie konta
Aby stworzyć konto usługowe MSA/gMSA, najpierw musimy wygenerować klucz główny. Do tworzenia haseł i innych informacji na kontrolerach domeny służy Key Distribution Services (KDS). Taki klucz generuje się tylko raz na daną domenę.
Aby utworzyć klucz KDS, w Powershell wpisz poniższą komendę, z tym że klucz będzie dostępny dopiero po 10 godzinach w momencie, gdy zostanie wykonana replikacja AD.
Add-KdsRootKey –EffectiveImmediately
Jak utworzyć zarządzane konto MSA w Active Directory (konto używane tylko na jednym hoście AD)
Jak utworzyć zarządzane konto MSA w Active Directory (konto używane tylko na jednym hoście AD)
Aby utworzyć nowe konto zarządzane MSA w AD, należy użyć polecenia
New-ADServiceAccount -Name msaKapitanHack -RestrictToSingleComputer.
Domyślnie konta tworzone są w kontenerze CN=Managed Service Accounts
Połącz konto usługi MSA z komputerem docelowym:
$Identity = Get-ADComputer -identity comp
Add-ADComputerServiceAccount -Identity $identity -ServiceAccount msaKapitanHack
Tworzenie konta usługi zarządzanej grupowo (gMSA) w Active Directory
Przed utworzeniem konta gMSA należy utworzyć grupę domenową i dodać do niej serwery, które będą mogły używać hasła do tego konta. Najprostszym sposobem utworzenia i dodania serwerów do grupy jest użycie poniższej komendy PowerShell:
New-ADGroup grGMSA01 -path ‘OU=Groups,OU=Lab,dc=kapitanhack,DC=lab’ -GroupScope Global -PassThru -Verbose
Add-AdGroupMember -Identity grGMSA01 -Members comp$, comp01$
Aby utworzyć konto usługi gMSA
New-ADServiceAccount -name gmsaKH-SQL -DNSHostName SQL.kapitanhack.lab -PrincipalsAllowedToRetrieveManagedPassword grGMSA01 –verbose
Następnie sprawdzamy, czy konto zostało poprawnie utworzone
Instalowanie konta usługi zarządzanego grupowo w systemie Windows
Aby korzystać z kont usług MSA / gMSA na docelowych serwerach lub stacjach roboczych, należy najpierw zainstalować moduł Active Directory PowerShell:
Add-WindowsFeature RSAT-AD-PowerShell
Instalowanie konta usługi MSA (gMSA) na serwerze:
Install-ADServiceAccount -Identity gmsaKH-SQL
W celu weryfikacji czy konto zostało zainstalowane poprawnie:
Test-ADServiceAccount gmsaKH-SQL
Jeśli polecenie zwróci wartość True, oznacza to, że wszystko zostało poprawnie skonfigurowane. Jeśli polecenie wróci False, najprawdopodobniej konto MSA nie jest zainstalowane na serwerze lub ten komputer nie ma uprawnień do korzystania z niego
Jak uruchomić usługę systemu Windows korzystając z MSA/gMSA?
1. Otwórz konsolę zarządzania usługami (services.msc)
2. Otwórz właściwości usługi i przejdź do Log On
3. Wybierz This account i wprowadź nazwę konta MSA. Pamiętaj, aby dodać $ symbol na końcu nazwy konta (nie podajemy hasła do konta)
4. Konto usługi MSA zostanie przyznane automatycznie Log On As a Service
5. Po zapisaniu zmian należy ponownie uruchomić usługę.
Uruchamianie zaplanowanych zadań na zarządzanym koncie usługi/gMSA
Skonfigurowanie Harmonogramu Zadań Windows tak, aby zadania były uruchamiane za pośrednictwem usługi gMSA jest bardzo wygodne, ponieważ haseł do konta gMSA nie trzeba szyfrować ani chronić. Gdy hasło się zmieni, nie trzeba też ponownie konfigurować zadania.
Można utworzyć zaplanowane zadanie z żądanymi ustawieniami za pomocą PowerShell lub graficznego interfejsu użytkownika taskschd.msc. W drugim przypadku, po stworzeniu danego zadania można je skonfigurować za pomocą narzędzia schtasks.exe, aby było uruchamiane za pośrednictwem konta usługowego.
schtasks /Change /TN TestTaks /RU “kapitanhack\gmsaKH-SQL$” /RP “”
Zarządzanie kontami usług poprzez GUI
Jako ciekawostkę przedstawimy jeszcze narzędzie stworzone przez użytkownika o nazwie CJWDEV, jest to prosta aplikacja pozwalająca na tworzenie, zarządzanie i usuwanie kont serwisowych w AD.
Nadal trzeba pamiętać o wygenerowaniu klucza KDS oraz późniejszej instalacji kont serwisowych na poszczególnych maszynach, jednak z pewnością dla wielu będzie to przydatna i wygodna opcja na zarządzanie kontami.
Podsumowanie
- Komputery, na których znajdują się konta usługi MSA/gMSA, odpytują Active Directory o aktualne hasło.
- MSA może pracować tylko na jednym hoście i nie można go używać w klastrach czy usługach NLB
- Podstawowo hasło zmieniane jest co 30 dni.
- MSA można wykorzystać między innymi do usług, aplikacji i zaplanowanych zadań
- Obecnie gMSA jest obsługiwany przez takie systemy jak SQL Server, IIS, AD LDS, Exchange.
- gMSA potrzebuje grupy domenowej w której będą znajdowały się serwery, na których usługa może zostać uruchomiona.