如何平衡在 Windows 上安装 Scoop 的安全性(PowerShell 执行策略更改)问题?

Azz*_*Azz 5 powershell scoop-installer

我想在 Windows 上尝试Scoop,其文档要求“必须为您的用户帐户启用 PowerShell”,方法是运行

PS > Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Run Code Online (Sandbox Code Playgroud)

当我运行命令时,我看到一条警告:

Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"):
Run Code Online (Sandbox Code Playgroud)

应采取哪些措施来减轻这一风险?在安装 Scoot 后以及运行 Scoop 命令之间将策略重置回未定义会更好吗?

Ben*_*est 4

设置的风险很小RemoteSigned。基本上,此模式允许您执行本地未签名的脚本(您编写的脚本),而来自远程源的脚本必须由受信任的机构签名。我将在下面对每个执行策略进行解释。


  • AllSigned:脚本可以运行,但必须由受信任的发布者签名,无论脚本来自何处。风险可能包括运行由受信任的机构签名的恶意脚本(虽然不太可能,但并非不可能)。
  • Bypass:不阻止任何脚本的执行。专为具有替代安全模型的配置而设计。不显示与脚本执行相关的警告或提示。
  • Default:这Restricted适用于 Windows 桌面版和RemoteSigned服务器。
  • RemoteSigned:本地脚本可以运行(例如您自己编写的脚本),但从互联网下载的脚本必须由受信任的发布者签名。风险可能包括运行来自互联网以外来源的恶意未签名脚本,或运行由受信任的发布者签名的恶意脚本。您可以使用cmdlet启用从 Internet 下载的脚本Unblock-File
  • Restricted:Powershell可以交互运行,但无法执行脚本。由于所有形式的脚本文件都被阻止,因此无法加载 Powershell 模块。我不确定管理单元(以 DLL 形式提供的 Powershell 插件)是否可以用于此模式。
  • Undefined:这意味着没有配置执行策略,并且将像Default设置一样运行。
  • Unrestricted:运行所有脚本,无论它们是否已签名。这是对非 Windows 操作系统唯一有效的执行策略。当运行来自本地 Intranet 外部的脚本时,会警告您。

至于风险缓解?关于不运行不受信任的代码的用户教育(如果这是针对企业)将是一个开始。您可能已经拥有 A/V 和反恶意软件解决方案,并且您应该将机密安全地存储在它们所属的凭证保险库中。RemoteSigned这是一个很好的策略,在大多数情况下,这将是相当宽松的,同时仍然为您提供一些针对恶意远程脚本的基本安全性。