PowerShell 的 RemoteSigned 执行策略与 AllSigned 有何不同?

信息安全 电源外壳
2021-08-15 01:37:55

我对 PowerShell 还是很陌生,最近在一篇关于创建和使用 PowerShell 脚本的博客文章中读到了这篇文章。

为防止执行恶意脚本,PowerShell 强制执行执行策略。默认情况下,执行策略设置为 Restricted,这意味着 PowerShell 脚本不会运行。您可以使用以下 cmdlet 确定当前执行策略:

Get-ExecutionPolicy

您可以使用的执行策略是:

  • 受限- 脚本不会运行。
  • RemoteSigned - 本地创建的脚本将运行,但从 Internet 下载的脚本不会运行(除非它们由受信任的发布者进行数字签名)。
  • AllSigned - 只有在受信任的发布者签名后,脚本才会运行。
  • 不受限制- 无论脚本来自何处以及是否已签名,脚本都将运行。

您可以使用以下 cmdlet 设置 PowerShell 的执行策略:

Set-ExecutionPolicy <policy name>

对我来说,远程签名的描述中“除非它们是由受信任的发布者进行数字签名”的符号似乎暗示它与 AllSigned 的操作相同。我在某处缺少什么区别吗?

2个回答

显然 AllSigned 要求对所有模块/管理单元和脚本进行代码签名。RemoteSigned 只需要对远程文件进行签名。什么是远程文件?

规范的答案在 PowerShell 博客上:http: //blogs.msdn.com/b/powershell/archive/2007/03/07/how-does-the-remotesigned-execution-policy-work.aspx

但底线是:RemoteSigned只需要对标记为来自“Zone.Identifier”备用数据流中“Internet”区域的模块/管理单元和脚本进行代码签名,除非您已激活“Internet Explorer 增强安全性”,在这种情况下,它还包括“Intranet”标记的文件和 UNC 路径。

不同之处在于 RemoteSigned 将在本地运行未签名的脚本,而 AllSigned 要求对所有脚本进行签名,无论其来源如何。