Причина проблемы root может быть найдена из этого сообщения об ошибке:
org.springframework.core.convert.ConverterNotFoundException:
No converter found capable of converting
from type [java.lang.String]
to type [org.springframework.cloud.vault.config.VaultProperties$Config]
Приведенное выше сообщение указывает, что объект VaultProperties не может быть инициализирован с использованием предоставленного строкового параметра.
Вот ссылка на документацию и инструкции по настройке VaultProperties:
https://spring.io/guides/gs/vault-config/
Дополнительная информация, помогающая понять хранилище:
Ссылки:
Хранилище Spring Cloud: https://cloud.spring.io/spring-cloud-vault/ Хранилище Хашикорпа: https://www.vaultproject.io
Что такое хранилище?
Хранилище - это безопасное место для хранения секретной информации. Hashicorp Vault - это один инструмент, который предлагает функции хранилища для облачных приложений.
Что такое Spring Boot Vault?
Для приложений Spring Boot обычно требуется секретная информация для работы. Вот некоторые примеры секретной информации:
- Пароль базы данных
- Личный ключ
- Ключ API
Обычно входные параметры передаются в Spring загрузить приложение через файл «application.properties» или «bootstrap .properties». Использование такого файла свойств представляет угрозу безопасности, если в нем непосредственно упоминаются секретные данные.
Spring Boot Vault устраняет этот риск. Он извлекает секретную информацию из хранилища и передает ее приложению во время запуска.
Файл .properties сообщит приложению только имена параметров, которые можно ожидать от хранилища. Фактические значения параметров будут взяты из хранилища.
Как настроить хранилище?
Шаг 1: Установить и запустить HashiCorp Vault из https://www.vaultproject.io/downloads.html:
Шаг 2: После установки Vault проверьте, работает ли он, запустив его в окне консоли.
> vault server --dev --dev-root-token-id="spring-boot-vault-demo"
==> Vault server configuration:
Api Address: http://127.0.0.1:8200
Cgo: disabled
Cluster Address: https://127.0.0.1:8201
Listener 1: tcp (addr: "127.0.0.1:8200", cluster address: "127.0.0.1:8201", max_request_duration: "1m30s", max_request_size: "33554432", tls: "disabled")
Log Level: info
Mlock: supported: false, enabled: false
Recovery Mode: false
Storage: inmem
Version: Vault v1.4.1
WARNING! dev mode is enabled!
.....
You may need to set the following environment variable:
PowerShell:
$env:VAULT_ADDR="http://127.0.0.1:8200"
cmd.exe:
set VAULT_ADDR=http://127.0.0.1:8200
The unseal key and root token are displayed below in case you want to
seal/unseal the Vault or re-authenticate.
Unseal Key: +Dihvgj/oRN2zo6/97ZqpWt086/CFRZEPkuauDu4uQo=
Root Token: spring-boot-vault-demo
Шаг 3: Сохраните некоторые секретные данные в хранилище, выполнив эти команды в отдельном окне команд:
> set VAULT_ADDR=http://127.0.0.1:8200
> set VAULT_TOKEN=spring-boot-vault-demo
> vault kv put secret/spring-boot-vault-demo password=££££$$$$%%%%
Key Value
--- -----
created_time 2020-05-02T09:59:41.2233332Z
deletion_time n/a
destroyed false
version 1