Я прошу прощения, если это слишком похоже на многие другие вопросы; Я искал и просматривал несколько предложенных решений, но, похоже, не существует общего решения для этого типа проблемы - одна и та же проблема в разных средах, судя по ответам на вопросы, кажется, влечет за собой очень разные решения.
Я создал несколько клиентских скриптов Ruby, которые собирают информацию с различных серверов в моей сети и внедряют эту информацию в базу данных MySQL. Сценарии Ruby должны проходить аутентификацию на этих серверах как пользователи, поэтому для подключения им требуются учетные данные для аутентификации. Рассматриваемые соединения от клиента Ruby к принимающему серверу и через (соответственно):
SOAP (через самоцвет savon):
soap_client = Savon.client(wsdl: '[URL]')
login_response = soap_client.call(:login, message: { 'userName' => [SOAP CLIENT USERNAME], 'password' => [SOAP CLIENT PASSWORD] })
MySQL (через гем mysql2):
@mysql_client = Mysql2::Client.new(:host => [DATABASE HOSTNAME], :username => [DATABASE USERNAME], :password => [DATABASE PASSWORD], :database => [DATABASE NAME])
HTTPS (через гем net / https):
OpenSSL::PKey::RSA.new(pem,"[KEY DECRYPTION PASSWORD]")
Клиенту HTTPS не требуется имя пользователя / пароль для аутентификации на сервере HTTPS. Требуется сертификат с ключом, а пароль, хранящийся в исходном коде, необходим для расшифровки ключа. Я могу хранить ключ в открытом тексте, тем самым исключая этот пароль из исходного кода, но тогда возникает проблема безопасности, заключающаяся в том, как защитить файл ключа в открытом тексте.
Проблема, которую я пытаюсь решить, заключается в том, что в моем исходном коде хранятся пароли в виде открытого текста. Я могу хранить пароли в зашифрованном текстовом файле, затем расшифровывать этот файл во время выполнения, но затем я возвращаюсь к аналогичной проблеме - как безопасно хранить ключи дешифрования?
Окружающая среда:
- CentOS Linux 7.6.1810
- ruby 2.4.2
Спасибо, что прочитали, и, пожалуйста, дайте мне знать, если мой вопрос требует дополнительной ясности!