PowerShell Remoting i gMSA
W naszej firmie staramy się (na ile to możliwe) eliminować konta serwisowe, zastępując je kontami gMSA (Group Managed Service Account). Co prawda nadal istnieje wiele rozwiązań (w tym rozwiązań Microsoft), gdzie korzystanie z takich kont nie jest możliwe, ale i tak udało nam się znaleźć wiele miejsc, gdzie sprawdzają się one bardzo dobrze. Jest tylko jeden problem z kontami tego typu: ciężko przetestować ich działanie. Jest jeden wygodny sposób, który wymaga korzystania z PowerShella w wersji 5.1 – dedykowane końcówki PowerShell Remoting.
Dlaczego właśnie ta wersja? We wersjach wcześniejszych nie możemy skorzystać z kont innych niż tradycyjne, gdyż konfigurując końcówkę musimy podać hasło (którego nikt przy zdrowych zmysłach w przypadku kont gMSA nie próbuje wpisywać). Od wersji 5.1 możemy pominąć hasło, korzystając z konstruktora klasy SecureString:
$runAsCred = [pscredential]::new( | |
'Domena\gMSA$', | |
[securestring]::new() | |
) | |
Register-PSSessionConfiguration -RunAsCredential $runAsCred -Name końcówkaGmsa |
Końcówkę taką skonfigurować możemy na kilka sposobów. W przypadku zwykłych testów oczywiście nie ma sensu przesadzać: udostępniamy końcówkę z pełnym zestawem poleceń:
Aby połączyć się z naszą „specjalną” końcówką musimy skorzystać z parametru ConfigurationName na jednym z poleceń umożliwiających połączenie (New-PSSession/ Enter-PSSession). W pierwszej kolejności możemy sprawdzić, czy istotnie działamy z poświadczeniami konta serwisowego:
Mamy już pewność, że dalsze operacje wykonywać będziemy z poświadczeniami naszego konta gMSA. Możemy więc przejść do prawdziwych testów. Uruchomić polecenia, zarówno te wbudowane, jak i te zdefiniowane przez nas i sprawdzić, jak zachowają się one w innych sytuacjach. Czy będzie to zaplanowane zadanie, uruchamiane z poświadczeniami konta serwisowego. Czy będzie to specjalnie przygotowany monitor w ramach SCOM-a. Każde z takich poleceń możemy uruchomić mając pewność, że pracujemy w środowisku pokrywającym się z tym, które „zastanie” konto gMSA wtedy, gdy „nie będziemy patrzeć mu na ręce”:
W praktyce końcówka, która zawsze działa z poświadczeniami innego użytkownika, powinna być końcówką ograniczoną jedynie do poleceń, które będą nam niezbędne. W takiej sytuacji mamy dwie możliwości: możemy sami przygotować odpowiedni plik startowy, bądź skorzystać z rozwiązania JEA. W obu przypadkach istotne jest to, że wszystkie polecenia, które zaoferujemy łączącym się z końcówką użytkownikom, będą wykonywane z uprawnieniami konta serwisowego. W naszej firmie korzystamy z plików generowanych przez specjalnie przez nas przygotowane zasoby DSC. Ale możliwości jest zdecydowanie więcej.