Spring Cloud Vault - лучшее место для хранения Secret-Id и Role-Id
Я использую библиотеку 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 Убежища. Очевидно, что Vault плохо защищает наши секреты, если люди могут легко достать эти 2 фрагмента информации - они действительно сами являются секретами.
Какая отраслевая передовая практика? Role-Id
а также Secret-Id
защищены? Мы уже обдумали такие идеи, как хранение в конфигурационном сервере, хранение в переменной среды, хранение в облаке. ИБП.
Тем не менее, мы хотели бы понять лучшие практики в этом..
0 ответов
Я столкнулся с той же проблемой, и вот что вы можете сделать. Прежде всего, приложение должно иметь собственного системного пользователя и запускаться от имени этого пользователя. Затем в том же каталоге, что и ваш файл 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 или пользователя приложения.