Spring Valut - DmitryGontarenko/usefultricks GitHub Wiki
Vault - это инструмент для хранения и безопасного доступа к секретным данным. В качестве секрета могут выступать ключи API, пароли или сертификаты. Vault предоставляет единый интерфейс для любых секретов.
Spring Vault - предоставляет абстракцию для работы с Vault.
- Скачиваем дистрибутив Valut с официального сайта.
- Переходим в скаченную папку с исполняемым файлом vault, открываем консоль (Shift + ПКМ для PowerShell) и запускаем программу -
.\vault.exe server -dev
.
Что бы упростить запуск, можно добавить путь до файла в переменную среды (PATH), для этого нужно прописать в консоли -setx PATH "C:\Downloads\vault_1.7.0_windows_amd64"
. Теперь можно запускать vault с любого "места" в системе. - После запуска сервера vault, можно зайти в веб-интерфейс и проверить его работоспособность - http://localhost:8200/ui/vault/auth?with=token.
- Для авторизации выбираем метод Token, а сам токен копируем из консоли (он будет выделен цветом).
Так как сервер запущен в developer-моде, после его остановки - все данные исчезнут.
Подключаем Мaven-зависимость:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-vault-config</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
Создаем в src/main/resources
файл bootstrap.properties
:
spring.cloud.vault.uri=http://localhost:8200
spring.cloud.vault.token=s.b5gtjxOIIkbl5yST6KXvPgVM
spring.cloud.vault.kv.enabled=true
По умолчанию, значения будут браться из "секрета" с именем application (подробнее в документации).
Создаем конфигурационный pojo-файл, который с помощью аннотации @Value
будет принимать значения данных секрета:
@Configuration
public class VaultConfiguration {
@Value("${login}")
private String login;
@Value("${password}")
private String password;
// ... getter, toString()
}
Все готово, теперь при обращении к полям бина VaultConfiguration
- можно будет получить значения "секретов" Vault.
По умолчанию, значения берутся из "секрета" с именем application, что бы изменить это - необходимо добавить имя приложения в конфигурационный файл bootstrap
, например:
spring.cloud.vault.kv.application-name=vk
По умолчанию, используется раздел secret, что бы изменить это - необходимо добавить в конфигурационный файл bootstrap
наименования собственного раздела и контекста по умолчанию, например:
spring.cloud.vault.generic.backend=messangers
spring.cloud.vault.generic.default-context=vk