Сокрытие секретного ключа на сервере - PullRequest
0 голосов
/ 16 октября 2018

У меня есть несколько секретных ключей API для моего сервера, и я должен использовать их в своем проекте.Но я не чувствую себя в безопасности, чтобы сохранить в файле свойств или любое физическое расположение на сервере.Может кто-нибудь сказать мне, каковы возможные способы сохранить его в тайне и использовать там, где это требуется в приложении.

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Здесь есть много опций в зависимости от ваших реальных требований безопасности.Вы упомянули Java и Spring Boot, поэтому я в основном укажу решения, связанные с этим технологическим стеком.

Поскольку вы уже используете Spring Boot, рассмотрите сервер spring-cloud-config.

Он имеет некоторые интересные функции «шифрования»:

Шаг 1

Создание ключа (открытая / закрытая пара или общий в зависимости от ваших требований) Укажите его при запускесервер конфигурации (через переменную - или env):

encrypt.key=ABC123ABC123ABC123

Шаг 2

Кодировать значение пароля, вызвав запрос на отдых этого сервера (вы делаетеэто один раз)

curl localhost:8888/encrypt -d mysecretdbpassword 
>>AZXCASDAZXC341234ZXCASDFedr453

Шаг 3

В application.properties укажите, что значение «зашифровано» со специальным синтаксисом. Файл будет сохранен в конфигурации.сервер а не на микросервисе.Свойство будет выглядеть так:

db.password={cipher}AZXCASDAZXC341234ZXCASDFedr453 

Свойство будет храниться в зашифрованном виде в файлах, но расшифровываться в памяти.Таким образом, микросервис получит расшифрованное значение.

Документация доступна здесь .На сегодняшний день это самый быстрый способ реализации требований.Вы можете хранить его в выделенном микросервисе или встраивать в уже существующее приложение.

Кроме того, оно позволяет интегрировать его с JKS, что позволяет хранить там пароли.

Дополнительно/ Альтернативы

Конфигурация Spring Cloud также интегрирована с Hashicorp Vault , что само по себе может быть хорошим решением для вашей ситуации (даже без конфигурации Spring boot cloud).

Еще одно возможное решение, которое приходит из Spring Universe, называется Spring Vault . Оно предназначено для работы с секретами.

0 голосов
/ 16 октября 2018

Если вы действительно задумываетесь о паролях, которые вы получили, лучший способ - использовать HSM (модуль аппаратной защиты).Таким образом, вы будете уверены, что хранение вашего закрытого ключа в надежном месте больше не является частью вашего рассмотрения.

Если это дорого, то вы можете подумать о сохранении своего закрытого ключа в JKS или PKCS12 и выбратьнадежный пароль.

Как правило, вы ищете хранилище.В PKI у вас может быть хранилище для хранения вашего секрета.Есть несколько способов, которые я могу придумать.Один из них - это HSM, как я описал выше, а другой следующий:

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

Также вы можете взглянуть на этот проект от Hashicorp https://github.com/hashicorp/vault

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...