用途
本技能提供 2025 年现代 PowerShell 安全实践,用于加固 PowerShell 脚本与自动化流程。核心目标是避免在脚本中硬编码凭据,并通过官方模块与系统策略实现凭据保护、权限委派、脚本执行控制和审计。
主要能力
凭据管理与 SecretManagement
推荐使用 Microsoft.PowerShell.SecretManagement 作为 2025 年标准方案,用于安全存储凭据。支持跨平台密钥存储、多种保管库提供程序(如 Azure Key Vault、1Password、KeePass),并可与 Azure Key Vault 集成。提供安装命令、注册保管库、存储/读取/列出/删除密钥的示例,以及使用 SecretManagement 的安全自动化脚本模板。
凭据管理最佳实践
明确禁止硬编码凭据或明文密码,推荐使用 SecretManagement、交互式提示(Get-Credential)或托管标识(Managed Identity)。同时给出 Azure 服务主体认证的示例流程。
Just Enough Administration (JEA)
JEA 可将 PowerShell 远程会话限制为特定 cmdlet 和参数。适用于委派管理任务而不授予完整管理员权限、满足合规要求(SOC 2、HIPAA、PCI-DSS)、生产环境加固以及特权操作审计。技能提供创建角色能力文件、会话配置文件、注册 JEA 端点及连接测试的完整示例,并说明 JEA 审计日志(转录)的启用方式。
Windows Defender 应用控制 (WDAC)
WDAC 替代 AppLocker 用于控制可执行的 PowerShell 脚本。技能提供创建仅允许签名脚本的 WDAC 策略、转换为二进制策略并重启应用的命令示例。
代码签名与执行策略
说明签名脚本的原因(验证完整性、满足安全策略、启用 WDAC 强制、防止篡改),并提供获取代码签名证书、签名脚本、验证签名以及查看/设置执行策略的命令。
约束语言模式
约束语言模式可限制 PowerShell 语言功能以防止恶意代码执行。技能说明如何检查当前语言模式,以及通过环境变量或组策略设置系统级约束模式,并对比 FullLanguage 与 ConstrainedLanguage 的行为差异。
脚本块日志记录
提供通过组策略或注册表启用脚本块日志记录的方法,日志位于 Windows 事件日志中,并给出查询事件 ID 4104 的示例。
输入验证
强调防止注入攻击,推荐使用参数化查询、[ValidatePattern]、[ValidateSet] 等验证属性,并给出错误与正确写法的对比示例。
使用方式
技能以文档形式提供代码示例、安装命令和配置步骤。用户可根据需要复制相应命令执行,例如安装 SecretManagement 模块、注册保管库、创建 JEA 端点或配置 WDAC 策略。所有示例均需在具备相应权限的环境中运行。
适用场景
- 编写或维护 PowerShell 自动化脚本的开发者与运维人员
- 需要满足合规要求(SOC 2、HIPAA、PCI-DSS)的组织
- 生产环境中的特权操作管理与审计
- 需要委派管理任务而不授予完整管理员权限的场景
- 需要控制脚本执行(仅允许签名脚本)的环境
限制
资料未提供该技能的具体安装方式、依赖要求、支持的 PowerShell 版本范围(仅提及保持更新至 7.5+)、收费信息或平台限制。部分命令需要管理员权限或特定环境(如 Azure 订阅、域环境)才能执行。