Как веб-приложение должно реализовывать хранилище ключей SSH?

Я пишу приложение в Nodejs (используя Meteor в качестве моей платформы), которое, вкратце, должно:

  • создать нового пользователя
  • создать пару ключей SSH, связанную с этим пользователем, и сохранить ее
  • предоставить открытый ключ пользователю (чтобы он мог добавить его в authorized_keys файлы, например)
  • хранить несколько открытых ключей, которые пользователь отправляет

Я довольно осторожен с хранением ключей SSH, даже просто с открытыми ключами, и особенно с сгенерированным закрытым ключом, поскольку он будет использоваться для доступа к нескольким серверам.

Какие меры безопасности я могу предпринять для безопасного хранения этих ключей? В настоящее время я пришел к следующему методу:

  • хранить закрытый ключ и открытый ключ в зашифрованных полях базы данных
  • при необходимости SSH на сервер, получить закрытый ключ, расшифровать его, записать его в файл, а затем SSH, используя записанный ключ
  • удалить файл закрытого ключа после завершения SSH
  • запускать автоматическую задачу очистки каждые несколько минут, которая удаляет неиспользуемые ключи SSH (в случае ошибки или прерывания, а файл ключа не был удален)

Тем не менее, это кажется мне неуклюжим. Я не против, если это означает, что данные защищены, но есть ли дальнейшие шаги или более эффективные шаги, которые я мог бы предпринять?

0 ответов

Другие вопросы по тегам