Насколько безопасно использовать ConvertTo-SecureString в PowerShell?
Я делаю функцию в PowerShell. В ней вызывается команда, в которую нужно вставить пароль.
Сейчас пароль задается так:
$Password = Read-Host -AsSecureString "Password"
Я хочу, сделать так, чтобы его можно было передать строкой в функцию, чтобы выглядело так:
$Password = ConvertTo-SecureString "PasswordStringFromFunctionParameter" -AsPlainText -Force
Я хочу так сделать, чтобы требовалось меньше действий от пользователя (того, кто использует функцию). То есть он бы мог просто передавать все данные в функцию, вместо того, чтобы сначала передавать данные, а потом еще вводить пароль.
Но в документации написано, что не стоит задавать пароль вторым способом, потому что пароль, пока он находится в виде строки, может появиться в логах.
Можете объяснить насколько вообще опасно появления строкового пароля в логах? Что именно за логи? Если это какие-то логи запущенного PowerShell'а, которые отчищаются после перезапуска, то вроде звучит достаточно безопасно.
Еще после ввода пароля, мне все равно нужно будет записать его где-то у себя в файлике, чтобы потом передать его другому человеку, чтобы он мог им воспользоваться. Получается, что в таком случае не важно как я ввожу пароль, потому что у злоумышленника будет более простой способ получить пароль, достав его из моего файлика?
Ответы (1 шт):
Давайте предположим, что наступила временная дисфункция системы выполнения PS-скриптов по ряду причин, и функция ConvertTo-SecureString перестала корректно работать. Например, добавьте любой лишний параметр в Вашем примере. На выходе исполнения можно наблюдать текст:
строка:1
знак:13 + $Password = ConvertTo-SecureString "PasswordStringFromFunctionParameter ...
То есть в лог ошибок может легко попасть результат вызова функции вместе с параметрами.
Также каждый процесс во время работы хранит строку запуска: command line, а параллельные процессы могут получить доступ к этим данным. Пример получения доступа:
Get-WmiObject Win32_Process | select name, commandline
Поэтому в производственной системе лучше не допускать возможности вывода наружу чувствительных сведений