【问题标题】:In Spring Cloud Server adds other properties to an existing environment在 Spring Cloud Server 中向现有环境添加其他属性
【发布时间】:2018-02-20 07:21:03
【问题描述】:

我们正在使用带有支持 git 存储库的 spring 云配置服务器来为测试配置文件提供属性。我们收到了将我们的密钥移动到保管库 (hashicorp) 并在我们的属性文件中像往常一样保留常规属性的要求。

在使用保管库之前,我们通过系统属性(使用-Dxxx=yyy)传递密钥,该属性作为常规属性源加载,并且应用程序按预期运行。

现在我必须有一个复合属性源来同时从属性文件和保险库中获取。我不确定如何同时从 Vault 和 git 中提取属性并将它们提供给 Spring Cloud 配置客户端。

我一直在挖掘documentation,发现我们可以拥有复合环境存储库,但是我不能让 vault 和 git 同时工作。

我已经尝试了多种方法,比如像这样放置属性:

spring.cloud.config.server.git.uri=file:///E:/Project/git/myappdata

spring.cloud.config.server.vault.host=127.0.0.1
spring.cloud.config.server.vault.port=8200
spring.cloud.config.server.vault.scheme=http
spring.cloud.config.server.vault.backend=secret
spring.cloud.config.server.vault.defaultKey=myapp

还使用 spring cloud vault 进行了测试,我可以获取秘密,但是它们没有提供给我的客户。

已尝试使用实现EnvironmentRepository 接口,但这是为了创建一个新的存储库(我只想将 1 个保管库属性添加到基于 git 的现有提供的存储库)。

并且打算使用spring事件ApplicationEnvironmentPreparedEvent并尝试动态附加Vault属性。

我想我忽略了一些东西。您知道读取 Vault 机密并将其作为常规属性文件的属性附加的正确方法是什么吗?

【问题讨论】:

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


    【解决方案1】:

    这是可能的。您应该为 Spring Cloud Config Service 使用一些配置文件。

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

    有了这样的配置,Vault 和 Git 将一起工作。您还需要实现对Vault Token 的支持,并在每个配置客户端中拥有它。 使用 Vault,它的工作方式会有所不同。它不会像使用 Git 那样获取所有属性。当客户要求一些带有令牌的财产时,它将去 Vault 并检索它。如果它不存在,它将去 git repo 中搜索。您可以在配置中指定顺序。

    Spring 以递归方式解析属性,因此您可以拥有将属性占位符存储在 git 中并由配置服务器 (application.yml) 提供服务的属性文件:

    database:
      password: ${database.secure.password}
    

    以及存储在 Vault 中的敏感属性,例如

    vault write secret/clientAppName database.secure.password=SuperSecurePassword
    

    Spring Cloud 将自动解析您的 ${database.password} 属性。

    【讨论】:

      猜你喜欢
      • 2013-08-30
      • 2016-07-12
      • 1970-01-01
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      相关资源
      最近更新 更多