На локальном компьютере я запустил сервер Vault с политикой по умолчанию и написал следующее значение ключа.
vault write secret/my-application username=Test
bootstrap.yml (рабочий)
spring:
application:
name: my-application
cloud:
vault:
authentication: TOKEN
token: sometoken
host: localhost
port: 8200
scheme: http
#uri: http://localhost:8200
connection-timeout: 5000
read-timeout: 15000
config:
order: -10
Мне удалось получить значение с помощью Spring Cloud Vault, т.е. когда я использую монтирование по умолчанию (секрет). Но если я попадаю на сервер контроля качества с помощью настраиваемого монтирования (группы), я получаю следующую ошибку.
org.springframework.vault.VaultException: статус 403 секрет / группа / тип группы / имя группы / БД: отказано в разрешении
(Не уверен, почему секретный код имеет префикс)
bootstrap.yml (не работает)
spring:
application:
name: group/grouptype/groupname/DB
cloud:
vault:
authentication: TOKEN
token: sometoken
host: 10.20.30.40
port: 8200
scheme: http
#uri: http://10.20.30.40:8200
connection-timeout: 5000
read-timeout: 15000
config:
order: -10
Но если я нажимаю API из POSTMAN, он работает, как ожидалось.
GET
http://10.20.30.40:8200/v1/group/grouptype/groupname/DB
Header:
X-Vault-Token:sometoken
Как заставить собственный прокси работать с загрузочным приложением Spring. Как исключить секрет из контекста
Для нестандартного крепления мы должны добавить общий
spring:
application:
name: grouptype/groupname/DB
cloud:
vault:
authentication: TOKEN
token: sometoken
generic:
enabled: true
backend: group
default-conext: grouptype/groupname/DB
host: 10.20.30.40
port: 8200
scheme: http
#uri: http://10.20.30.40:8200
connection-timeout: 5000
read-timeout: 15000
config:
order: -10
Здесь «группа» - это имя монтирования.