Концепция безопасных паролей заключается в том, что в производственных сценариях мы не должны передавать важные пароли в открытом виде. Это серьезный недостаток безопасности. Таким образом, с помощью PowerShell можно защитить пароль или хотя бы снизить видимость пароля. Сначала мы обсудим общие аспекты безопасной строки, а затем рассмотрим, как Dell Command PowerShell Provider (DCPP) использует врожденную функцию PowerShell для защиты пароля.
Обратите внимание, что нам необходимо считать имя пользователя и пароль от пользователя на консоли. Известно, что имя пользователя, как правило, не требует защиты и может быть видимым для всех. Но пользовательский пароль не должен быть известен посторонним лицам. Это требование можно выполнить с помощью команд, приведенных ниже.
$user = Read-Host "Enter Username" $pass = Read-Host "Enter Password" -AsSecureString
Выше представлен обзор того, как можно повысить уровень безопасности, когда необходимо обеспечить защиту критически важной информации, например пароля. В приведенном выше примере переменная «$pass» имеет тип System.Security.SecureString
. Мы представим два других широко используемых командлета PowerShell, которые позволяют упростить защиту полей, прежде чем переходить к аспектам DCPP.
Эти две команды: 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
Связанные статьи