如何在powershell和python脚本中保护API身份验证详细信息

时间:2016-11-30 17:00:19

标签: python powershell security authentication passwords

所以我使用Powershell和Python来访问和使用API​​作为我脚本的一部分。

但问题是我必须输入用户并传递等,并将其保留在脚本中。目前我做的唯一事情就是在字面上留下一个base128编码的脚本中输入的凭据,然后用一行解码它。

我不想在对话框中输入我的密码,因为这是为了快速自动化许多API。脚本+资源是可移植的,这意味着我将它们带到多台其他计算机上并按原样运行。

如何根据我的要求使其更安全? 是否有类似于lastpass类型的东西用于编程/ API,我可以使用它来检索适当的凭据,甚至可能从网络文件夹/数据库中获取?

任何帮助都会很棒。

由于

1 个答案:

答案 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"
     

将加载正在运行的用户的文件版本   自动(或因为文件不存在而失败)。