У меня есть сценарий powershell, который подключается к базе данных MySQL. Конечно, для этого подключения требуется пароль, и я хотел бы каким-то образом зашифровать пароль, а не хранить пароль в виде обычного текста.
Я изучил методы securestring, выводя пароль в файл, однако я не думаю, что они будут работать, потому что зашифрованный пароль может быть расшифрован только первоначальным пользователем, а скрипт будет распространен на несколько машин. по сети.
Любые предложения о любых других методах, которые были бы полезны?
Спасибо
Ответ 1 · рейтинг 4 · Zed
Если сценарий будет распространяться на несколько компьютеров в сети, то все учетные данные, которые будет использовать ваш сценарий, будут доступны для этих пользователей, и это невозможно обойти.
Вы можете сделать две вещи, если есть какие-либо личные данные для каждого пользователя:
- создайте новую учетную запись пользователя в базе данных для каждого пользователя вашей программы с ограничительными разрешениями, позволяющими им делать только то, что вы хотите, и ничего более
- иметь прокси-сервер, который аутентифицирует их и подключается к базе данных от их имени (так работает большинство веб-сайтов)
Если все данные общедоступны и доступны только для чтения, вы можете:
- создайте учетную запись пользователя в базе данных для доступа только для чтения и используйте ее учетные данные во всех распространяемых копиях вашей программы.
- иметь прокси-сервер, который не аутентифицирует пользователей, но подключается к базе данных, а не выставляет ее на всеобщее обозрение
Номер 2 каждого из этих параметров обычно рекомендуется для каждой базы данных с историей безопасности MySQL, но номер 1 обоих этих параметров рекомендуется для таких баз данных, как CouchDB.
Никогда не распространяйте никакие учетные данные с вашей программой, которые вы не хотите, чтобы ваши пользователи использовали.
Ответ 2 · Chad Miller
Я использовал эту библиотеку PowerShell http://lunaticexperiments.wordpress.com/2009/10/23/powershell-string-encryption-and-gpg/ для шифрования паролей Oracle и Informix.
Вот пример
#Source Encryption Functions
. ./Library-StringCrypto.ps1
#encrypt string using passphrase
$encrypt = Write-EncryptedString $connString "4#&7yaoff"
#Show encrypted string
$encrypt
#Decrypt string
Read-EncryptedString $encrypt "4#&7yaoff"