По умолчанию для удаленного подключения к компьютеру с помощью PowerShell (PowerShell Remoting) нужны права администратора. В этой статье мы покажем, как с помощью группы безопасности, групповой политики и изменения дескриптора сессии PoSh, предоставить права на подключение через PowerShell Remoting (WinRM) для рядовых пользователей без прав администратора.
При попытке создать сессию PowerShell с удаленным компьютером из-под обычного пользователя (Enter-PSSession msk-server1) появляется ошибка доступа:
Удаленный доступ к WinRM и группа Remote Management Users
Проверим стандартные разрешения для сессии PoSh:
(Get-PSSessionConfiguration -Name Microsoft.PowerShell).Permission
Как мы видим, доступ разрешен для следующих встроенных групп:
- BUILTIN\Administrators — AccessAllowed,
- BUILTIN\Remote Management Users — AccessAllowed
Таким образом, чтобы пользователь мог удаленно подключаться через WinRM, ему достаточно состоять во встроенной локальной группе безопасности администраторов или Remote Management Users (группа создается в системе, начиная с версии PowerShell 4.0, имеющегося по умолчанию в Windows 8 / Windows Server 2012 и выше). Данная группа также предоставляется доступ к ресурсам WMI через управляющие протоколы (например, WS-Management)
Нужного пользователя можно включить в группу через оснастку управления компьютером:
или с помощью команды:
net localgroup "Remote Management Users" /add aapetrov2
В том случае, если подобный доступ нужно предоставить на множестве компьютеров, можно воспользоваться групповой политикой. Для этого назначьте GPO на нужные компьютеры, и политике Computer Configuration -> Windows Settings -> Security Settings -> Restricted Groups добавьте новую группу Remote Management Users и включим в нее учетные записи или группы, которым нужно предоставить доступ к WinRM.
После включения пользователя в группу Remote Management Users, он сможет создавать удаленную сессию PowerShell с помощью Enter-PSSession или запускать команды с помощью Invoke-Command. Права пользователя в данной сессии будут ограничены его правами на машине.
Проверьте, заработало ли удаленное подключение.
Дескриптор безопасности сессии PowerShell
Еще один способ быстро дать пользователю права на использование PowerShell Remoting без включения его в локальную группу безопасности Remote Management Users заключается в модификации дескриптора безопасности текущей сессии Microsoft.PowerShell на локальном компьютере. Этот способ позволит быстро временно (до следующей перезагрузки) предоставить отдельному пользователю права на удаленное подключение через PowerShell.
Следующая команда открывает лист текущих разрешений:
Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI
В данном диалоговом окне нужно добавить пользователя или группу и предоставить ему права Execute (Invoke).
После сохранения изменений система запросит подтверждение на перезапуск службы WinRM.
В том случае, если нужно изменить дескриптор безопасности автоматизировано (без GUI), придется сначала внести изменения вручную, а потом получить текущий дескриптор доступа в формате SDDL.
(Get-PSSessionConfiguration -Name "Microsoft.PowerShell").SecurityDescriptorSDDL
В нашем примере, команда вернула дескриптор
Затем можно использовать данную SDDL строку для предоставления доступа к PowerShell на любом другом сервере.
$SDDL = “O:NSG:BAD:P(A;;GA;;;BA)(A;;GXGR;;;S-1-5-21-2373142251-3438396318-2932294317-23761992)(A;;GA;;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)”
Set-PSSessionConfiguration -Name Microsoft.PowerShell -SecurityDescriptorSddl $SDDL
Удаленное управление Hyper-V также требует прав WinRM
В Windows 10 /Windows Server 2016 для удаленного подключения к серверу Hyper-V с помощью Hyper-V Manager стал использоваться протокол PowerShell Remoting. Таким образом, по умолчанию удаленные пользователи без прав администратор не смогут управлять сервером Hyper-V, даже при наличии разрешений в Hyper-V.
При попытке подключиться к серверу Hyper-V с компьютера Windows 10 под обычным пользователем появится ошибка.
Чтобы разрешить удаленное подключение к консоли достаточно аналогично добавить пользователя Hyper-V в локальную группу Remote Management Users.