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