Добрый день!
Есть задача резервного копирования базы с одного компьютера на другой.
Один компьютер в домене, второй в рабочей группе.
Для подключения диска с базой используются определенные учетные данные (логин — пароль)
Хотелось бы максимально обезовасить эти учетные данные от лишних глаз.
Можно ли как-то зашифровать используемый пароль в сценариях PowerShell?
пока нашел применение ConvertTo-SecureString и чтение данных из файла. Но там пароль тоже хранится в открытом виде… Вот такая заковыка…
Лучший вариант — чтобы заполучив доступ к файлам скрипта не суметь выцепить учетные данные. Пока я проблему решил как Save-Cred в Хранилище Учетных Данных и запускать от своего имени скрипт.
Но был вариант с SecureString, однако украв сам файлик с этой строкой- можно ее преобразовать.
Если я правильно понял проблему, нужно было сохранить обычные учетные данные Windows.
Я для этого использую Get-Credential. Затем, пароль сохраняется в файл. Я, на всякий случай, еще и шифрую сам файл. Даже если файл скопируют, ничего они из него не выжмут.
Я проблему логина на шары недоменной домашней машины с доменного приносимого домой ноутбука решил просто — при совпадении пару loginname + password на обоих машинах пользователь считается аутентичным и авторизованным, т.е.
local-non-domain-pc1\username + «password» = domain-pc2\username + «password»
и даже получает админские привилегии при их наличии.
Вот про шифрование самого файла не подумал…
А так использовал ту же конструкцию) Просто смущает, что скопировав файл $File, можно провернуть тоже самое на любом другом компьютере.
На сколько я знаю, скопировав данный файл на другой компьютер и проделав аналогичные действия, ничего не добьешься :)
Только что попробовал, на всякий случай.
Боюсь ошибиться, но практика показывает, что даже на 1 машине для двух разных пользователей шифрование разное. Мне приходилось делать два разных файла с одним и тем же паролем для разных пользователей.
Вы меня заинтриговали, сейчас порылся в книге PowerShell In Action и нашел вот такую информацию по SecureString cmdlets:
«По умолчанию командлеты SecureString используют Windows Data Protection API (DPAPI). Это является стандартным путем на платформе Microsoft Windows для программ для защиты чувствительных данных. Шифровальный ключ, который используется в DPAPI использует данные на основе данных Logon. Это значит что Вам не надо иметь специальный ключ для шифровании данных — система генерирует его автоматически (ключ базируется на входных данных). Это значит, что только Вы можете дешифровать ваши данные используя данный механизм. Если необходимо раскинуть файл для разных людей, необходимо создавать ключ для каждого отдельно. „
Спасибо, самому было интересно :)