Концепція безпечних паролів полягає в тому, що у виробничих сценаріях ми не повинні передавати важливі паролі як звичайний вигляд. Це серйозний недолік безпеки. Отже, використовуючи 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
Статті по темі: