2016-11-30 65 views
2

因此,我使用Powershell和Python來訪問和使用API​​作爲腳本的一部分。如何在PowerShell和Python腳本中確保API身份驗證詳細信息

但問題是我必須鍵入用戶並傳遞等,並將其留在腳本中。目前,我所做的唯一事情就是在腳本中輸入憑據的base128編碼,並用一行代碼對其進行解碼。

我不想在對話框中輸入我的密碼,因爲這意味着可以通過很多API快速實現自動化。腳本+資源是可移植的,這意味着我將它們帶到多個其他計算機並按原樣運行。

如何使我的要求更安全? 有沒有像編程/ API的最後通道類型的東西,我可以檢索適當的憑據,甚至可能從網絡文件夾/數據庫?

任何幫助將是偉大的。

感謝

+0

credentials.txt/.json文件的絕對路徑? – n1c9

+0

肯定..我猜,但不是仍然讓它非常暴露,但? ....尤其是如果你不得不隨身攜帶腳本文件+資源....我想我不知道如何做到這一點,而不必像它在腳本本身寫的那樣具有相同的情況?對不起,我的noobishness。 – AdilZ

回答

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數據保護程序 ection API,並且用於加密密碼 的密鑰特定於用戶和機器,代碼爲 下運行。

因此,加密憑證不能由不同用戶或不同用戶在不同計算機上導入。

通過使用不同的 運行用戶和不同的計算機對同一憑證的幾個版本進行加密,可以爲多個用戶提供相同的祕密 。

通過將用戶和計算機名的文件名,你可以存儲 所有的方式,允許相同的代碼來 加密祕密的使用,而不必硬編碼任何東西:

加密器

# 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" 

文件的正確版本FO r正在運行的用戶將自動加載 (否則將失敗,因爲文件不存在)。

+0

哇!謝謝....但如果我真的必須創造新的機器/虛擬機,我該如何做到這一點?我需要重做那裏的一切嗎?因爲設置一些新VM的過程的一部分是運行這些腳本並作爲安裝的一部分訪問一些API。 – AdilZ

+1

加密方式與這些示例一起使用的方式使用與用戶和計算機綁定的密鑰,因此您需要將憑證作爲用戶一次存儲在新計算機上。 – briantist

+0

嗯好吧..生病嘗試吸收這一點,並利用它....我想知道我是否可以擴大這個蟒蛇以及 – AdilZ

相關問題