Spring Cloud Vault с k2 v2 — Как избежать 403 при запуске?

#hashicorp-vault #spring-cloud-vault-config

#hashicorp-хранилище #spring-cloud-vault-config

Вопрос:

Проблема

Кто-нибудь знает, как настроить bootstrap.yml указание Spring Cloud Vault перейти по правильному пути для k2 v2 и не пробовать сначала другие пути?

Подробные сведения

Я могу успешно подключиться к своему хранилищу, запустив k2 v2, но Spring Cloud всегда будет пытаться подключиться к путям в хранилище, которые не существуют, вызывая 403 при запуске.

 Status 403 Forbidden [secret/application]: permission denied; nested exception is org.springframework.web.client.HttpClientErrorException$Forbidden: 403 Forbidden
  

Указанный выше путь, secret/application , не существует, потому что k2 v2 вставляет data в path. Например: secret/data/application .

Это не является ограничителем показа, потому что Spring Cloud Vault проверяет другие пути, включая правильный, в котором есть data элемент в пути, но тот факт, что во время запуска выбрасывается бессмысленный 403, является для меня занозой.

В конечном счете, он пытается использовать правильный путь k2 v2

 2019-03-18 12:22:46.611  INFO 77685 --- [  restartedMain] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='vault', propertySources=[LeaseAwareVaultPropertySource {name='secret/data/my-app'}
  

Моя конфигурация

     spring.cloud.vault:
      kv:
        enabled: true
        backend: secret
        profile-separator: '/'
        default-context: my-app
        application-name: my-app
      host: localhost
      port: 8200
      scheme: http
      authentication: TOKEN
      token: my-crazy-long-token-string
  

Спасибо за вашу помощь!

Ответ №1:

Добавьте следующие строки в свой bootstrap.yml, это отключает общий серверный интерфейс

 spring.cloud.vault:
  generic:
    enabled: false
  

для получения дополнительной информации https://cloud.spring.io/spring-cloud-vault/reference/html/#vault.config.backends.generic

Ответ №2:

В дополнение к принятому ответу важно отключить (или просто удалить) fail-fast опцию:

 spring.cloud.vault:
  fail-fast: false
  

Ответ №3:

spring.cloud.vault.generic.enabled не рекомендуется в spring-cloud 3.0.0, но ошибка 403 все еще присутствует. Чтобы отключить предупреждение (указав spring использовать точный контекст), вот что я использовал:

 spring:
  config:
    import: vault://
  application:
    name: my-application
  cloud:
    vault:
      host: localhost
      scheme: http
      authentication: TOKEN
      token: my-crazy-long-token-string
      kv:
        default-context: my-application
  

Другие конфигурации были установлены по умолчанию (например, port = 8200, backend = secret и т.д.)