Azure虛擬機管理最佳實踐之用戶憑據

還記的之前老貓關於通過Powershell遠程管理Azure中虛擬機的博文的腳本中,每個虛擬機訪問都需要通過get-credential交互方式取得用於訪問的用戶憑據,但是這這種方式每次都要進行用戶交互,如果反覆運行的腳本顯然不是個好方式,如何加密保留用戶的憑據以便反覆使用就是個最佳實踐的內容。當然現在國際版Azure中提供的自動化服務功能包含的Asset可以安全保留憑據用於自動化腳本調用,由於目前國內的Azure服務還沒有這項功能,因此暫時只能按下不表了,當然如果只能這樣本文也就結束了,這裏介紹一個方法可以用於在自動化服務到來之前參考使用。


由於這個方法採用通過證書進行加密和解密的過程,因此需要用到在管理客戶端的證書私鑰進行解密,證書公鑰進行加密;如果對自制自簽名證書不太瞭解的話可以參考通過MakeCert工具創建自簽名證書的方法;通過這種方式只要管理節點或在Azure的虛擬機中具有相應證書私鑰的話都也可以通過這種方式保存的加密文件安全的獲得用戶憑據。


通過證書公鑰加密並且通過Base64格式保留到當前用戶環境的Mypassword.txt中,

$cert = Get-ChildItem Cert:\LocalMachine\My\[certificate thumbprint]
$bytes = [Text.Encoding]::UTF8.GetBytes("putyourpasswordhere")
$encrypt = $cert.PublicKey.Key.Encrypt($bytes, $true)
$base64 = [Convert]::ToBase64String($encrypt)
Set-Content $HOME\Myencrptpwd.txt $base64


在相應安裝證書私鑰節點獲得用戶憑據用於運行腳本使用:

$cert = Get-ChildItem Cert:\LocalMachine\My\[certificate thumbprint]
$base64 = Get-Content $HOME\Myencrptpwd.txt
$encrypt = [Convert]::FromBase64String($base64)
$bytes = $cert.PrivateKey.Decrypt($encrypt,$true)
$password = [Text.Encoding]::UTF8.GetString($bytes)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章