所以我使用Powershell和Python来访问和使用API作为我脚本的一部分。
但问题是我必须输入用户并传递等,并将其保留在脚本中。目前我做的唯一事情就是在字面上留下一个base128编码的脚本中输入的凭据,然后用一行解码它。
我不想在对话框中输入我的密码,因为这是为了快速自动化许多API。脚本+资源是可移植的,这意味着我将它们带到多台其他计算机上并按原样运行。
如何根据我的要求使其更安全? 是否有类似于lastpass类型的东西用于编程/ API,我可以使用它来检索适当的凭据,甚至可能从网络文件夹/数据库中获取?
任何帮助都会很棒。
由于
答案 0 :(得分:2)
要轻松存储和检索加密凭据,请使用PowerShell 内置的XML序列化(Clixml):
$credential = Get-Credential $credential | Export-CliXml -Path 'C:\My\Path\cred.xml'
重新导入:
$credential = Import-CliXml -Path 'C:\My\Path\cred.xml'
要记住的重要一点是,默认情况下使用 Windows数据保护API,以及用于加密密码的密钥 特定于代码所在的用户和机器 跑下。
因此,加密凭证无法由a导入 不同的用户或不同的用户在不同的计算机上。
通过加密不同的相同凭证的多个版本 在不同的计算机上运行用户,您可以拥有相同的秘密 可供多个用户使用。
通过将用户和计算机名称放在文件名中,您可以存储 所有加密的秘密以允许相同代码的方式 使用它们而不用硬编码:
加密器
# run as each user, and on each computer $credential = Get-Credential $credential | Export-CliXml -Path "C:\My\Secrets\myCred_${env:USERNAME}_${env:COMPUTERNAME}.xml"
使用存储凭据的代码:
$credential = Import-CliXml -Path "C:\My\Secrets\myCred_${env:USERNAME}_${env:COMPUTERNAME}.xml"
将加载正在运行的用户的文件版本 自动(或因为文件不存在而失败)。