我正在编写一个PowerShell脚本,每隔几个月,第三方应用程序会自动调用以执行以下操作:
[System.Web.Security.Membership]::GeneratePassword()
随机生成密码,然后使用Export-PfxCertificate
和OpenSSL的passin
密码。安全地做到这一点的最佳方法是什么?
据我所知,#1没有任何问题,但我在网上看到的关于#2的一切建议:
对于#2,有许多资源/文章涉及使用PowerShell时保护凭据。
从Windows Credential Manager开始...
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"
......然后看其他方法。有关其他方法,请参阅此问答。 Passwords in powershell logging
至于...
如果服务器受到损害
...如果一个邪恶的人进入你的系统,为了能够做到这一点,那么这就开始了:Ten Immutable Laws Of Security (Version 2.0)
你检查过Azure Key Vault或类似的东西吗?
如果您走这条路线,请查看Az模块(Windows PowerShell 5.1或PowerShell Core)。 Az.KeyVault子模块具有许多用于使用Vault的功能。
编辑:为了解决安全问题,我们对系统了解不多。但是,这些是我要研究的内容:
如果这些已经存在,那么您的暴露是实际系统受到攻击,并且攻击者可以在允许的范围内在允许的范围内进行意外更改。在这一点上,这是一个相当低的风险,这比不实施这样的控制要好得多。
这些可以在应用程序中实现,或者如果可以与应用程序集成,则可以通过第三方受信任的身份验证源实现。