Spring Cloud Vault with k2 v2 - 如何在启动时避免 403?

Spring Cloud Vault With k2 v2 - How to Avoid 403 at Startup?

问题

有谁知道如何配置 bootstrap.yml 以告诉 Spring Cloud Vault 转到 k2 v2 的正确路径而不是先尝试其他路径?

详情

我可以成功连接到我的 Vault,运行 k2 v2,但是 Spring Cloud 将始终尝试连接到 Vault 中不存在的路径,在启动时抛出 403。

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

上面的路径secret/application不存在,因为k2 v2把data放在了路径中。例如: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

感谢您的帮助!

在您的 bootstrap.yml 中添加以下行,这将禁用通用后端

spring.cloud.vault:
  generic:
    enabled: false

了解更多信息https://cloud.spring.io/spring-cloud-vault/reference/html/#vault.config.backends.generic

除了已接受的答案之外,关闭(或只是删除)fail-fast 选项也很重要:

spring.cloud.vault:
  fail-fast: false

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

其他配置已设置为默认值(例如端口 = 8200、后端 = secret 等)