【问题标题】:Storing Spring Cloud Vault token in Spring Cloud Config在 Spring Cloud Config 中存储 Spring Cloud Vault 令牌
【发布时间】:2018-05-21 03:49:04
【问题描述】:

我正在使用两个配置服务器运行微服务:

  • Spring Cloud Config(带有 git 后端)
  • Spring Cloud Vault

我将 Vault 令牌存储在 Spring Cloud Config 服务器中。在启动微服务时,我希望它:

  1. 检索存储在 Spring Cloud Config 中的配置,包括 Vault 令牌。
  2. 使用 Vault 令牌连接到 Spring Cloud Vault,然后检索存储在 Spring Cloud Vault 中的配置。

bootstrap.properties:

spring.application.name=my-app
spring.cloud.config.uri=http://localhost:8888

Spring Cloud 配置服务器:

spring.cloud.vault.token=19aefa97-cccc-bbbb-aaaa-225940e63d76

但是,我遇到了异常,提示 spring.cloud.vault.token 必须存在。

Caused by: java.lang.IllegalArgumentException: Token (spring.cloud.vault.token) must not be empty
    at org.springframework.util.Assert.hasText(Assert.java:181)
    at org.springframework.cloud.vault.config.VaultBootstrapConfiguration.clientAuthentication(VaultBootstrapConfiguration.java:270)
    at org.springframework.cloud.vault.config.VaultBootstrapConfiguration$$EnhancerBySpringCGLIB$$473cc7b3.CGLIB$clientAuthentication$7(<generated>)
    at org.springframework.cloud.vault.config.VaultBootstrapConfiguration$$EnhancerBySpringCGLIB$$473cc7b3$$FastClassBySpringCGLIB$$5f991c47.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358)
    at org.springframework.cloud.vault.config.VaultBootstrapConfiguration$$EnhancerBySpringCGLIB$$473cc7b3.clientAuthentication(<generated>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)
    ... 88 common frames omitted

问题:

  1. 在 Spring Cloud Config 中存储 Vault 令牌以供微服务稍后访问 Spring Cloud Vault 是否有效?

  2. 如果是,是否需要设置属性检索的顺序? IE。为 Spring Cloud Vault 设置 spring.cloud.vault.config.order。 Spring Cloud Config有没有等价的参数?

【问题讨论】:

标签: spring spring-cloud-config spring-cloud-vault-config


【解决方案1】:
  1. 看起来这不是此处使用 Vault 令牌的有效情况。 根据文档 Spring Cloud Config Client 应该为服务器提供一个令牌以从 Vault 中检索值 - Spring Cloud Config - Vault。 因此,在配置服务器中,您只需为 git repos 和 Vault 服务器提供配置,仅此而已。 它不像从 Git 存储库那样从 Vault 中检索所有配置。它将根据配置客户端的请求检索敏感属性,该客户端将具有适当的 Vault 令牌。

  2. 是的,有order属性,

    spring:
      profiles:
        active: vault, git
      cloud:
        config:
          server:
            vault:
              order: 1
            git:
              order: 2  
              uri: https://some-git-repo.com/
              username: user 
              password: pass
    

我使用了来自this StackOverflow question 的配置,它帮助了我并且工作正常。

【讨论】:

    猜你喜欢
    • 2018-07-25
    • 2017-06-23
    • 2018-01-12
    • 2021-04-15
    • 2023-01-20
    • 2016-02-18
    • 2017-08-11
    • 2021-08-13
    • 2020-07-23
    相关资源
    最近更新 更多