Spring Cloud Vault - лучшее место для хранения Secret-Id и Role-Id - PullRequest
0 голосов
/ 05 сентября 2018

Я использую библиотеку Spring Cloud Vault для доступа к своим секретам с сервера Vault.

В настоящее время я сохраняю все параметры, такие как role-id, secret-id, host, port и т. Д., Как Переменные окружения , а затем добавляю их в мой bootstrap.yml моего приложения Spring-boot. Ниже мой YAML файл

spring:
 cloud:
    vault:
      authentication: APPROLE
      app-role:
        role-id: ${role-id}
        secret-id: ${secret-id}
      host: ${host}
      port: ${port}
      scheme: ${scheme}

То, где я застрял, - это управление Role-Id и Secret-Id Убежища . Очевидно, что Убежище плохо защищает наши секреты , если люди могут легко достать эти 2 фрагмента информации - они действительно сами являются секретами.

Какова наилучшая отраслевая практика для защиты Role-Id и Secret-Id? Мы уже подумали о таких идеях, как storing-in-config-server , storing-in-environment-variable , storing-in-cloudfoundry-UPS ..

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

1 Ответ

0 голосов
/ 08 августа 2019

Я столкнулся с той же проблемой, и вот что вы можете сделать. Прежде всего, приложение должно иметь собственного системного пользователя и запускаться от имени этого пользователя. Затем в том же каталоге, что и ваш файл jar / war, вы можете создать файл bootstrap.properties , содержащий:

spring.cloud.vault.app-role.secret-id=*your-secret-for-role-id*

Вот пример вывода ls:

-rw-------. 1 app app bootstrap.properties
-rwxr--r--. 1 app app app.jar

Пользователь приложения должен быть владельцем этого файла свойств, и только он должен иметь право на чтение bootstrap.properties . Это защищает ваш секрет от несанкционированного доступа, если у вас нет прав пользователя root или приложения.

...