从一开始PowerShell库内容的质量和可信度就备受用户关心。这些问题一定程度上都只能依赖于同行们通过每一个模块的详细页面上的投诉处理和联系支持链接来处理。我们甚至曾经实现了一个新的cmdlet命令,Save-Module,它能让用户在安装模块之前先访问模块的内容。然而这样的方案明显把责任抛给了用户,让用户来决定一个模块是否安全,质量是否高。
为了进一步改善,我们已经开始检查PowerShell库上面所有模块是否符合基本的质量要求。
从2015年6月26日开始,Powershell库上面的所有的模块都被我们提前设定好的最佳的质量和安全策略来进行扫描和评估。
扫描主要完成下面的内容:
- 使用PowerShellGet安装模块
- 使用System Center Endpoint Protection来运行病毒扫描
- 通过PowerShell脚本分析器来运行模块。我们在PowerShell库中使用了最新版的PowerShell脚本分析器模块中的下列错误级别。
规则名称 | 描述 |
PSAvoidUsingUserNameAndPassWordParams | 函数应当只使用一个类型为PSCredential用户凭据,而不是使用用户名和密码参数。 |
PSAvoidUsingComputerNameHardcoded | 参数ComputerName不应当硬编码,防止暴露系统的敏感信息。 |
PSAvoidUsingConvertToSecureStringWithPlainText | 对纯文本使用ConvertTo-SecureString命令会暴露敏感信息。 |
PSDSCUseIdenticalMandatoryParametersForDsc | DSC资源中的Get/Test/Set函数必须具备相同的强制参数。 |
PSDSCUseIdenticalParametersForDSC | DSC资源中的Test 和 Set-TargetResource函数必须具有相同的参数。 |
PSDSCStandardDSCFunctionsInResource | DSC 资源必须使用Get,Set,Test-TargetResource 函数。 |
如果一个模块因为任何原因不能安装,或者PowerShell脚本分析器运行后出现错误级别的消息或者语法错误,我们都会把它标记为违规。违规模块的所有者会收到我们包含扫描结果的邮件,并且请求他们下架该模块,处理扫描出的问题,然后重新发布。
如果一个模块包含了任何可能会损坏和伤害用户电脑的内容(比如病毒或者恶意软件代码),那这个模块会被以最高的优先级标记为违规。高优先级的违规模块会被手动下架,如果模块的所有者没有处理这些问题,两周以后模块会被清楚。
PowerShell脚本分析器是全新的和不断发展的。但是目前的情况是,扫描的规则非常少,所以我们想在这个工具本身和整个流程上面集思广益。如果您想为PowerShell脚本分析器提供反馈,请访问他们的Github网站https://github.com/PowerShell/PSScriptAnalyzer。如果您想发布自己的PowerShell模块,可以先自己通过PowerShell脚本分析器进行扫描。可以在PowerShell库中使用Install-Module PSScriptAnalyzer来安下载安装它。
我们主要的目标是帮助我们的客户知道PowerShell库上面的内容是经过了我们的基本测试的,这样可以让他们下载得更舒心。在未来,我们也打算在每个PowerShell模块页面上发布我们扫描结果。让客户了解他们获得的这些内容通过PowerShell脚本分析器运行时会发生什么。
此次公告之后,我们期待脚本贡献者在脚本的质量方面迎来新的挑战和满足。此次的安全扫描是我们塑造让所有用户都用的放心的高质量高品质的PowerShell库的第一步。
当然,一如既往,我们期待您的评价和反馈。
谢谢!
原文作者:Rebecca Roenitz [MSFT] (PowerShell库团队)
原文连接:PowerShell Gallery – New Security Scan
翻译:荔非苔
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!