2015-05-07 3 views
-1

У меня есть приложение, которое может автоматизировать выполнение удаленных задач на других серверах. Он делает это, подключаясь к серверу через SSH и выполняя команды через это соединение.Rails: Как я могу безопасно хранить и повторно использовать пароли

Проблема, с которой я столкнулась, заключается в том, как обрабатывать имена пользователей/пароли для этих серверов. В большинстве случаев я не могу настроить аутентификацию на основе сертификатов для SSH и застревать с помощью пользователя/прохода. Хотя я бы предпочел не хранить пароли в базе данных в виде простого текста, я не знаю и не понимаю способ, которым я могу хранить зашифрованные пароли, но все же позволяю приложению получать доступ к паролю для целей аутентификации с помощью удаленный сервер. Возможно ли это?

Спасибо за помощь!

+0

Это возможно, но, честно говоря, я не советую вам развивать такую ​​вещь, если вы не знакомы с криптографией, управлением ключами и многими другими рекомендациями по безопасности, связанными с вашим приложением и сетевой архитектурой, чтобы иметь возможность безопасно шифровать/дешифровать такую ​​конфиденциальную информацию. (Я говорю это, потому что из вашего вопроса я понимаю, что вы ничего не знаете о криптографии, исправьте меня, если я ошибаюсь). На всякий случай вам понадобится услуга быстрого управления ключами, недавно запущенная служба AWS: http://aws.amazon.com/kms/?nc2=h_l3_dm –

+0

Спасибо, что направили меня на службу AWS. Я не смогу использовать AWS здесь, так как все машины находятся в закрытой системе без доступа к внешним сетям. Я свободно признаю, что далеко не знаком с криптографией и лучшими практиками управления ключами, кроме того, что мне подсказывает здравый смысл. Единственный способ, с помощью которого я могу реализовать шифрование паролей, сохраняя при этом функциональность приложения, потребует, чтобы я сохранил ключ (ы) на сервере приложений, но выполнение этого показало бы избыточность шифрования за пределами просто замедления кого-то, кто хотел получить доступ к паролям. – daikamar

ответ

0

Вы можете использовать логин с помощью открытого/закрытого ключа, а не сертификата SSL. Для этого вам просто нужно создать ключевую пару и внести свой открытый ключ в файл .ssh/authorized_keys на целевых машинах.

Если у вас много учетных записей, и вы хотели бы использовать некоторую систему для управления с открытым ключом, вы можете использовать решение Kerberos/LDAP, или emcssh - децентрализованная инфраструктура для общих ключей для ssh.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я являюсь автором системы emcssh PKI.

+0

Думаю, что-то похожее на то, с чем я буду идти. Когда пользователь добавит новый сервер, я попрошу их указать имя пользователя и пароль для одноразового использования. Мы будем использовать это для подключения к устройству и установки открытого ключа в файл .ssh/authorized_keys и использовать этот ключ для последующих подключений. – daikamar

+0

Вы можете внести свой открытый ключ вместе с каким-то руководством на свой WEB-сайт и позволить пользователю просто создавать/заполнять файлы authorized_keys, когда они создают учетную запись для вас. Просто используйте свой размер ключа 4096 бит. – maxihatop