如何平衡关于在 Windows 上安装 Scoop 的安全性(PowerShell 执行策略更改)问题?
How to balance security (PowerShell execution policy changes) concerns around installation of Scoop on Windows?
我想在 Windows 上尝试 Scoop,它的文档要求 "PowerShell must be enabled for your user account" by 运行ning
PS > Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
当我 运行 命令时,我看到一条警告说
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"):
应该采取什么措施来降低这种风险?在安装 Scoot 之后以及 运行 宁的 Scoop 命令之间将策略重置回 Undefined 会更好吗?
设置 RemoteSigned
的风险很小。基本上,此模式允许您执行本地未签名的脚本(您编写的脚本),而来自远程源的脚本必须由受信任的机构签名。我将在下面对每个执行策略进行解释。
AllSigned
:脚本可以 运行 但无论脚本来自何处,它们都必须由受信任的发布者签名。风险可能包括 运行ning 由可信机构签名的恶意脚本(这不太可能,但并非不可能)。
Bypass
:不阻止任何脚本的执行。专为具有替代安全模型的配置而设计。没有显示与脚本执行相关的警告或提示。
Default
:Windows 的桌面版是 Restricted
,服务器版是 RemoteSigned
。
RemoteSigned
:本地脚本可以运行(例如您自己编写的脚本),但从互联网下载的脚本必须由受信任的发布者签名。风险可能包括 运行ning 来自 Internet 以外来源的恶意未签名脚本,或 运行ning 由受信任的发布者签名的恶意脚本。 您可以使用 Unblock-File
cmdlet. 启用从 Internet 下载的脚本
Restricted
: Powershell 可以运行 交互但不能执行脚本。由于所有形式的脚本文件都被阻止,因此无法加载 Powershell 模块。我不确定管理单元(作为 DLL 提供的 Powershell 插件)是否可以与此模式一起使用。
Undefined
:这意味着没有配置执行策略,并且将运行如同设置了Default
。
Unrestricted
:运行所有脚本,无论它们是否已签名。这是非 Windows 操作系统的唯一有效执行策略。当 运行ning 脚本来自本地 Intranet 外部时,会向您发出警告。
至于降低风险?关于不 运行 不受信任的代码的用户教育(如果这是针对企业的)将是一个开始。您可能已经有了 A/V 和反恶意软件解决方案,并且您应该将秘密安全地存储在它们所属的凭证保险库中。 RemoteSigned
是一个很好的设置策略,在大多数情况下,这将是相当宽松的,同时仍然为您提供一些针对恶意远程脚本的基本安全措施。
我想在 Windows 上尝试 Scoop,它的文档要求 "PowerShell must be enabled for your user account" by 运行ning
PS > Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
当我 运行 命令时,我看到一条警告说
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"):
应该采取什么措施来降低这种风险?在安装 Scoot 之后以及 运行 宁的 Scoop 命令之间将策略重置回 Undefined 会更好吗?
设置 RemoteSigned
的风险很小。基本上,此模式允许您执行本地未签名的脚本(您编写的脚本),而来自远程源的脚本必须由受信任的机构签名。我将在下面对每个执行策略进行解释。
AllSigned
:脚本可以 运行 但无论脚本来自何处,它们都必须由受信任的发布者签名。风险可能包括 运行ning 由可信机构签名的恶意脚本(这不太可能,但并非不可能)。Bypass
:不阻止任何脚本的执行。专为具有替代安全模型的配置而设计。没有显示与脚本执行相关的警告或提示。Default
:Windows 的桌面版是Restricted
,服务器版是RemoteSigned
。RemoteSigned
:本地脚本可以运行(例如您自己编写的脚本),但从互联网下载的脚本必须由受信任的发布者签名。风险可能包括 运行ning 来自 Internet 以外来源的恶意未签名脚本,或 运行ning 由受信任的发布者签名的恶意脚本。 您可以使用Unblock-File
cmdlet. 启用从 Internet 下载的脚本
Restricted
: Powershell 可以运行 交互但不能执行脚本。由于所有形式的脚本文件都被阻止,因此无法加载 Powershell 模块。我不确定管理单元(作为 DLL 提供的 Powershell 插件)是否可以与此模式一起使用。Undefined
:这意味着没有配置执行策略,并且将运行如同设置了Default
。Unrestricted
:运行所有脚本,无论它们是否已签名。这是非 Windows 操作系统的唯一有效执行策略。当 运行ning 脚本来自本地 Intranet 外部时,会向您发出警告。
至于降低风险?关于不 运行 不受信任的代码的用户教育(如果这是针对企业的)将是一个开始。您可能已经有了 A/V 和反恶意软件解决方案,并且您应该将秘密安全地存储在它们所属的凭证保险库中。 RemoteSigned
是一个很好的设置策略,在大多数情况下,这将是相当宽松的,同时仍然为您提供一些针对恶意远程脚本的基本安全措施。