2011年1月19日水曜日

vSphere PowerCLI - パスワードの暗号化


PwoerCLIを使いvCenterへ接続する際に、ユーザ名、パスワードをスクリプト中に入力するが、パスワードが平分なのでセキュリティ的な問題がある。

Connect-VIServer -Server hostname -User username -Password password

こちらを、あらかじめ暗号化しておくことで、パスワードを見られずにすむ。
このように暗号化したパスワードを使用してvCenterサーバへ接続する方法を記載します。


  1. パスワードをあらかじめ暗号化し、ファイルへ保存
  2. Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File C:\tmp\securestring.txt
  3. PowerCLIのスクリプト内で暗号化した文字列を変数へ代入
  4. C:\tmp\securestring.txtファイルを開き、暗号化された文字列を下記のようにPowerCLIスクリプト内へコピーします。
    $encryptedString = “01000000d08c9ddf0115d1118c7a00c04fc297eb01000000...”
  5. 暗号化された文字列をデクリプトし、Credentialオブジェクトへユーザ名とともに格納
  6. $username = Administrator $secureString = ConvertTo-Securestring $encryptedString $credential = New-Object System.Management.Automation.PSCredential($username, $secureString)
  7. そのCredentialオブジェクトを使用しvCenterへ接続
  8. Connect-VIServer -Server $hostname -Credential $credential

上記サンプル:sample.ps1
$encryptedString = “01000000d08c9ddf0115d1118c7a00c04fc297eb01000000...省略してます”
$username = username
$secureString = ConvertTo-Securestring $encryptedString
$credential = New-Object System.Management.Automation.PSCredential($username, $secureString)
Connect-VIServer -Server ホスト名 -Credential $credential


これを少し簡略化した記述方法は下記
$encryptedString = “01000000d08c9ddf0115d1118c7a00c04fc297eb01000000...省略してます”
$username = username
$credential = ConvertTo-Securestring $encryptedString | % {New-Object System.Management.Automation.PSCredential($username, $_)}
Connect-VIServer -Server $hostname -Credential $credential

0 件のコメント: