Spring Valut - DmitryGontarenko/usefultricks GitHub Wiki

About

Vault - это инструмент для хранения и безопасного доступа к секретным данным. В качестве секрета могут выступать ключи API, пароли или сертификаты. Vault предоставляет единый интерфейс для любых секретов.
Spring Vault - предоставляет абстракцию для работы с Vault.

Installation

  1. Скачиваем дистрибутив Valut с официального сайта.
  2. Переходим в скаченную папку с исполняемым файлом vault, открываем консоль (Shift + ПКМ для PowerShell) и запускаем программу - .\vault.exe server -dev.
    Что бы упростить запуск, можно добавить путь до файла в переменную среды (PATH), для этого нужно прописать в консоли - setx PATH "C:\Downloads\vault_1.7.0_windows_amd64". Теперь можно запускать vault с любого "места" в системе.
  3. После запуска сервера vault, можно зайти в веб-интерфейс и проверить его работоспособность - http://localhost:8200/ui/vault/auth?with=token.
  4. Для авторизации выбираем метод Token, а сам токен копируем из консоли (он будет выделен цветом).
    Так как сервер запущен в developer-моде, после его остановки - все данные исчезнут.

Vault with Spring-boot

Подключаем М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 name

По умолчанию, значения берутся из "секрета" с именем application, что бы изменить это - необходимо добавить имя приложения в конфигурационный файл bootstrap, например:

spring.cloud.vault.kv.application-name=vk

Secrets Engines

По умолчанию, используется раздел secret, что бы изменить это - необходимо добавить в конфигурационный файл bootstrap наименования собственного раздела и контекста по умолчанию, например:

spring.cloud.vault.generic.backend=messangers
spring.cloud.vault.generic.default-context=vk

Sources

YouTube. Vault Installation - Windows Host Machine

⚠️ **GitHub.com Fallback** ⚠️