Настройка удаленного доступа через PowerShell Remoting (WinRM) по умолчанию требует прав администратора на целевом компьютере. Однако с помощью локальной группы Remote Management Users, групповой политики (GPO) или изменения дескриптора безопасности сессии PowerShell можно предоставить доступ обычным пользователям без повышения их привилегий. В этой статье мы подробно разберем, как реализовать удаленное управление через WinRM для пользователей без административных прав, включая настройку для управления Hyper-V.
Проблема доступа к WinRM для обычных пользователей
При попытке установить удаленную сессию PowerShell с помощью команды Enter-PSSession
Enter-PSSession msk-server1
Под учетной записью без прав администратора возникает ошибка:
Enter-PSSession : Connecting to remote server msk-server1 failed with the following error message : Access is denied.
Это происходит, так как доступ к WinRM по умолчанию предоставлен только группам Администраторы и Remote Management Users. Мы рассмотрим, как предоставить доступ обычным пользователям, используя несколько методов.
Метод 1. Использование группы Remote Management Users
Локальная группа безопасности Remote Management Users, доступная начиная с PowerShell 4.0 (Windows 8 / Windows Server 2012 и выше), позволяет предоставить доступ к WinRM и ресурсам WMI через протоколы управления, такие как WS-Management.
Проверка текущих разрешений
Чтобы проверить, какие группы имеют доступ к сессии PowerShell, выполните команду:
(Get-PSSessionConfiguration -Name Microsoft.PowerShell).Permission
Результат покажет, что доступ разрешен для:
— BUILTIN\Administrators — AccessAllowed
— BUILTIN\Remote Management Users — AccessAllowed
Добавление пользователя в группу
Чтобы предоставить пользователю доступ к WinRM, добавьте его в группу Remote Management Users:
1. Откройте оснастку Управление компьютером (compmgmt.msc).
2. Перейдите в Локальные пользователи и группы -> Группы.
3. Найдите группу Remote Management Users и добавьте нужного пользователя (например, aapetrov2).
Альтернативно, используйте команду:
net localgroup "Remote Management Users" /add aapetrov2
После добавления пользователь сможет подключаться через Enter-PSSession или выполнять команды с помощью Invoke-Command. Права в сессии будут ограничены его стандартными разрешениями на машине.
Масштабирование с помощью групповой политики
Для предоставления доступа на множестве компьютеров используйте GPO:
1. Откройте Редактор управления групповыми политиками (gpedit.msc или gpmc.msc).
2. Создайте или отредактируйте GPO, применяемую к нужным компьютерам.
3. Перейдите в раздел Конфигурация компьютера -> Конфигурация Windows -> Параметры безопасности -> Ограниченные группы.
4. Добавьте группу Remote Management Users и укажите пользователей или группы, которым нужен доступ к WinRM.
5. Примените политику и дождитесь ее обновления на целевых машинах, или выполните:
gpupdate /force
Проверьте подключение с помощью:
Enter-PSSession <имя_сервера>
Метод 2. Изменение дескриптора безопасности сессии PowerShell
Если добавление в группу Remote Management Users невозможно или требуется временный доступ, можно изменить дескриптор безопасности сессии Microsoft.PowerShell. Этот метод предоставляет доступ без изменения членства в группах, но изменения действуют до перезагрузки системы.
Ручное изменение через графический интерфейс
1. Выполните команду для открытия окна управления разрешениями:
Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUI
2. В диалоговом окне добавьте пользователя или группу.
3. Установите разрешение Выполнить (Invoke).
4. Сохраните изменения и подтвердите перезапуск службы WinRM при запросе.
Автоматизация с помощью SDDL
Для автоматизации изменения дескриптора безопасности используйте SDDL (Security Descriptor Definition Language):
1. Получите текущий дескриптор безопасности:
(Get-PSSessionConfiguration -Name Microsoft.PowerShell).SecurityDescriptorSDDL
Пример вывода:
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)
2. Сохраните SDDL строку и примените ее на другом сервере:
$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 без прав администратора
В Windows 10 и Windows Server 2016 и выше для управления Hyper-V через Hyper-V Manager также используется PowerShell Remoting. Без прав администратора пользователи сталкиваются с ошибкой:
An error occurred while attempting to connect to server “server1”. Check that the Virtual Machine Management service is running and that you are authorized to connect to the server.
Чтобы предоставить доступ:
1. Добавьте пользователя в группу Remote Management Users на сервере Hyper-V (см. Метод 1).
2. Убедитесь, что служба Диспетчер виртуальных машин Hyper-V (vmms) запущена:
Get-Service vmms
3. Проверьте подключение через Hyper-V Manager.
Рекомендации по безопасности и устранению неполадок
— Используйте Remote Management Users вместо предоставления административных прав для минимизации рисков.
— При использовании GPO регулярно проверяйте применение политик с помощью:
gpresult /r
— Если доступ не работает, проверьте состояние службы WinRM:
Get-Service WinRM
— Убедитесь, что PowerShell Remoting включен на целевом компьютере:
Enable-PSRemoting -Force
— Проверьте наличие ошибок в Просмотре событий (eventvwr.msc) в разделе Windows Logs -> System или Applications and Services Logs -> Microsoft -> Windows -> Windows Remote Management.
— При изменении SDDL сохраняйте исходный дескриптор для возможности отката.
Настройка удаленного доступа к WinRM для пользователей без прав администратора упрощает управление серверами и Hyper-V, сохраняя безопасность системы. Используйте Remote Management Users для постоянного доступа или SDDL для временных изменений.