PowerShell: Запретить подписывать скрипты

На рабочей станции могут быть включены политики для запуска только подписанных скриптов:
gpedit.mscComputer ConfigurationAdministrative TemplatesWindows ComponentsWindows PowerShell:
Turn on Script Execution (Enabled) = Allow only signed scripts

Вроде бы всё хорошо и защита включена, но оказывается, что обычный пользователь может подписать скрипт и скрипт запустится, т.к. он уже будет подписан.
Чтобы разрешить только администраторам работать с сертификатами, нужно добавить ещё одну политику:
1. Переходим в оснастку групповых политик:
gpedit.mscComputer ConfigurationWindows SettingsSecurity SettingsPublic Key Policies
2. Открываем Certificate Path Validation Settings и переходим на вкладку Trusted Publishers:
3. Включаем Define these policy settings
4. В группе «Trusted publisher management» отмечаем «Allow only administrators to manage Trusted Publishers»:
PowerShell: Запретить подписывать скрипты
Теперь если обычный пользователь попытается подписать скрипт:

PS C:\Users\Denis\Documents> Set-AuthenticodeSignature ".\current.ps1"  @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]

Он получит ошибку:

Set-AuthenticodeSignature : Cannot bind argument to parameter 'Certificate' because it is null.
At line:1 char:44
+ ... .\current.ps1"  @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
+                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Set-AuthenticodeSignature], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.SetAuthenti
   codeSignatureCommand

Зато под админом всё нормально:

PS C:\Users\Denis\Documents> Set-AuthenticodeSignature ".\current.ps1"  @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]


    Directory: C:\Users\Denis\Documents


SignerCertificate                         Status                                 Path
-----------------                         ------                                 ----
FCE07B750609A1806FE2ABA89A95D60013CE7F5E  Valid                                  current.ps1


Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments