セキュア パスワードの背後にある概念は、本番スクリプトで重要なパスワードをプレーン テキストで渡すべきではないということです。これは深刻なセキュリティの欠如です。そのため、PowerShellを使用して、パスワードを保護するか、少なくともパスワードの可視性を減らすことができます。まず、セキュリティで保護された文字列の一般的な側面について説明し、次にDell Command PowerShell Provider (DCPP)でPowerShell固有の機能を活用してパスワードを保護する方法について説明します。
例えば、コンソールでユーザーのユーザー名とパスワードを読み取るとします。ユーザー名は通常、セキュリティを必要とせず、すべての人に表示可能であることは周知のとおりです。ただし、ユーザー パスワードについては、他人に知らせてはなりません。この要件は、次のコマンドを使用すると簡単に導入できます。
$user = Read-Host "Enter Username" $pass = Read-Host "Enter Password" -AsSecureString
前掲の事項は、パスワードなどの重要な情報を保護する必要がある場合に、セキュリティを強化する方法の概要です。前例では、変数「$pass」は次の型となります。 System.Security.SecureString
DCPPの側面について説明する前に、セキュリティで保護されたフィールドを導入するために、広く使用されている2つのPowerShell Providerコマンドレットを紹介します。
その2つのコマンドは、 ConvertTo-SecureString
と ConvertFrom-SecureString
です。 ConvertTo-SecureString
は、プレーン テキストを次に変換します。 System.Security.SecureString
以下に例を示します。
"P@ssword1" | ConvertTo-SecureString -AsPlainText -Force
前例では、プレーン テキスト「P@assword1
」が次の型に変換されます。System.Security.SecureString
これはどちらかというと情報として提供されており、広く使用されていない可能性があります。
次のコマンドレット「ConvertFrom-SecureString
」は、より広く使用されているコマンドレットで、セキュリティで保護された文字列を暗号化された標準文字列に変換するために使用されます。この ConvertTo-SecureString
の主な制限事項は、その出力を後で使用するためにファイルに直接書き込むことができないということです。そのため、この制限を克服するには、 ConvertFrom-SecureString
を使用して System.Security.SecureString
を便利にファイルに保存できる暗号化された標準文字列に変換する必要があります。
プレーン テキスト「P@ssword1
」をセキュリティで保護された文字列に変換し、その出力を ConvertFrom-SecureString
にパイピングして、安全かつ便利にファイルに保存できる暗号化された文字列を取得します。
例として、コンピューター上で管理者パスワードが設定されており、これをファイルに保存する必要があるとします。これを行うには、次を使用します。
Read-Host "Enter Admin Password" -AsSecureString | ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt"
この管理者パスワードをセキュリティで保護されたオブジェクトとして変数に変換するには、次を使用します。
$pass = Get-Content "C:\Scripts\AdminPassword.txt" | ConvertTo-SecureString
次に、DCPPでセキュア パスワードを活用する方法について考えてみましょう。DCPPでは、ユーザーのコンピューターにシステム パスワードまたは管理者パスワードが設定されている場合、すべての set
コマンドに、それぞれのパスワードを渡す必要があります。したがって、このパスワードをプレーン テキストとして提供すると、セキュリティに違反します。次のパスワードを渡す必要があります。System.Security.SecureString
また、 SecureString
パスワードを渡す場合、 -PasswordSecure
スイッチを使用して渡す必要があります。通常の –Password
スイッチは使用できません。以下に、ユーザーが AdvancedBatteryChargeCfg
を Disabled
に設定して SecureString
パスワードを渡す例を示します。
Set-item AdvancedBatteryChargeCfg disabled –PasswordSecure $pass
ここで、「$pass」はシステム パスワードと管理者パスワードを保持し、次の型である必要があります。 System.Security.SecureString
前述のとおり、 $pass
を次のように読み取れます。
$pass = Read-Host "Enter system/admin password" –AsSecureString
必要に応じて、次のように $pass
をファイルに保存できます。
$pass| ConvertFrom-SecureString | Out-File "C:\Scripts\AdminPassword.txt
関連記事: