在PowerShell脚本中保护密码
我正在编写一个PowerShell脚本,每隔几个月,第三方应用程序就会自动调用它来执行以下操作:在PowerShell脚本中保护密码,powershell,security,passwords,Powershell,Security,Passwords,我正在编写一个PowerShell脚本,每隔几个月,第三方应用程序就会自动调用它来执行以下操作: 使用[System.Web.Security.Membership]::GeneratePassword()随机生成密码,然后将该密码与导出PfxCertificate和OpenSSL的密码一起使用 使用静态密码通过COM API向不支持API密钥或任何东西的第三方系统进行身份验证 安全地执行此操作的最佳方法是什么 据我所知,《1》没有错,但我在网上读到的关于《2》的所有信息都建议: 要求用户在执
[System.Web.Security.Membership]::GeneratePassword()
随机生成密码,然后将该密码与导出PfxCertificate
和OpenSSL的密码一起使用
- 要求用户在执行脚本时提供凭据,但这会妨碍流程的自动化
- 使用PSCredential,但这在这里是不可能的
- 使用加密的密钥/密码文件,但据我所知,这并没有任何意义,因为您仍然有效地将密码存储在脚本文件旁边-如果服务器受到攻击,则他们可以从脚本读取密码或解密密钥文件中的密码。除非您使用的自定义加密密钥不存储在服务器上,但同样会破坏自动化
Install-Module -Name "CredentialManager"
Get-Command -Module "CredentialManager"
$Target = "YourServerName"
$UserName = "Administrator"
$Secure = Read-host -AsSecureString
New-StoredCredential -Target $Target -UserName $UserName -SecurePassword $Secure -Persist LocalMachine -Type Generic
Get-StoredCredential -Target "servername" –AsCredentialObject
Remove-StoredCredential -Target "servername"
。。。然后看看其他的方法。有关其他方法,请参见本问答
至于
如果服务器受到威胁
。。。如果一个邪恶的密码进入您的系统这么远,为了能够做到这一点,那么这就起作用了:可以对文件的密码进行加密,使其只能由同一用户在同一台服务器上恢复,因此该文件实际上对其他任何人都没有用处。不是100%安全,但可能对您的情况足够好。查看我以前对一个类似问题的回答:这让我找到了“凭据”,它使用
获取凭据| Export CliXml
,$Credential=Import CliXml
,以及$Credential.GetNetworkCredential().Password
这正是我所使用的。后续问题:如果用户执行设置以输入配置(包括凭据),但系统执行脚本,那么实现我的理想方案的最佳方式是什么?当然,系统将无法解密凭据,因为这是一个不同的安全上下文,因此,*-CliXml使用不同的键?我使用了这个方法: