當前位置:編程學習大全網 - 編程語言 - 在Powershell腳本中安全的使用密碼信息

在Powershell腳本中安全的使用密碼信息

在使用基於Powershell自動化的腳本中,大多數場景下需要未腳本傳遞憑據以供驗證環節能夠正常工作,很多管理員習慣於在他們的腳本中使用明文密碼,但如果是測試腳本,倒是無關緊要,若是用於生產環境的腳本,這種行為不但很糟糕,還很可怕,不懷好意的同誌們會很樂意並輕松的拿到它然後搞壹些或輕或重的破壞。但是,如果正確使用powershell所提供的密碼加密功能,能很輕松的解決這個問題。

PowerShell中,提供了兩種生成憑據的方式分別是 Get-Credential 和 Read-Host

Get-Credential

Get-Credential 命令被用來創建PSCredential對象並且將之存儲到變量中,並保證不在屏幕上顯示如下

上面的命令將憑據信息保存到變量 $crd 中 ,這個變量可被很容易的用於訪問需指定憑據的 Cmdlets

Read-Host

使用 Read-Host 同樣可以起到保護明文密碼顯示的功能 如下, -AsSecureString 可以將明文密碼存儲成加密密碼串對象,SecureString對象可被用於可接受該類型參數的命令,可以通過定義變量和管道輸出將該對象傳遞給命令。

ConvertTo-SecureString

ConvertTo-SecureString 用於加密密碼和其它字符串,它可以接受字符串然後輸出為SecureString對象,SecureString對象可被用於可接受該類型參數的命令,可以通過定義變量和管道輸出將該對象傳遞給命令。

語法如下:

當不適用參 -Key 或者 -SecureKey 時,PowerShell將會調用 Windows Data Protection API (DPAPI) 加密\解密字符串。但這將導致生成的 SecureString 對象在其它計算機上使用。

如下將把明文"Password"轉化為 SecureString

這種方式雖然能夠將明文字符轉換為 SecureString 對象,但是卻無法將其存儲為壹個文件以後用。必須把它轉化為標準加密字符串才可以,要達到這個目的,要用到 ConvertFrom-SecureString 命令。

ConvertFrom-SecureString

使用 ConvertFrom-SecureString 命令可以將 SecureString 對象存儲成為標準加密字符串,可以將 SecureString 對象或者命令產生的 SecureString 對象通過管道傳給它來實現

語法:

上面的例子產生的 SecureString 對象可以用於此處轉換成標準加密字符串

結合上面幾個命令,我們可以有以下幾種方法將 SecureString 轉換成的標準加密字符串通過 Out-File 命令存儲成txt文件

導出純文本模式生成的 SecureString 對象

導出 Get-Credential 產生的 SecureString 對象

導出通過 Read-Host 產生的 SecureString 對象

將上述存儲的標準加密字符串文件轉換回 SecureString 並用來創建 PSCredential

上面提到,在使用 ConvertTo-SecureString 和 ConvertFrom-SecureString 加密憑據時,如不使用 -Key 或 -SecureKey ,則PowerShell會調用DPAPI進行加解密,因為無法再創建其之外的機器上使用,如下

同壹臺主機

不同主機上使用上面同壹個txt文件

使用 Key 或者 SecureKey 實現跨機器使用加密文件

使用 -Key 參數創建保存標準加密字符串的文件,下面將會用到Windows Class “System.Security.Cryptography.RNGCryptoServiceProvider"來創建隨機數據來填充作為 -Key 的參數值的數組

使用隨機數據來創建AES key並導出為文件

創建 SecureString 對象

創建憑據

在另外的機器上

上面的內容已經完全可以幫助我們在powershell腳本中來加密密碼了,如果有其它問題歡迎留言。

  • 上一篇:吉安有哪些教育機構怎麽樣?
  • 下一篇:做夢經常記得很清楚睡眠質量好不好。
  • copyright 2024編程學習大全網