在Spring中,云服务器向现有环境添加其他属性
我们使用SpringCloudConfigServer和一个支持的git存储库来提供测试概要文件的属性。我们收到一项要求,要求将密钥移动到vault(hashicorp),并像往常一样在属性文件中保留常规属性 在使用vault之前,我们通过一个系统属性传递密钥(使用在Spring中,云服务器向现有环境添加其他属性,spring,spring-boot,spring-cloud-config,hashicorp-vault,spring-cloud-vault-config,Spring,Spring Boot,Spring Cloud Config,Hashicorp Vault,Spring Cloud Vault Config,我们使用SpringCloudConfigServer和一个支持的git存储库来提供测试概要文件的属性。我们收到一项要求,要求将密钥移动到vault(hashicorp),并像往常一样在属性文件中保留常规属性 在使用vault之前,我们通过一个系统属性传递密钥(使用-Dxxx=yyy),该属性作为常规属性源加载,并且应用程序正在按预期工作 现在,我必须有一个复合特性源,以便同时从特性文件和vault中获取。我不知道如何同时从vault和git中提取属性,并将它们提供给SpringCloudCon
-Dxxx=yyy
),该属性作为常规属性源加载,并且应用程序正在按预期工作
现在,我必须有一个复合特性源,以便同时从特性文件和vault中获取。我不知道如何同时从vault和git中提取属性,并将它们提供给SpringCloudConfig客户端
我一直在深入研究,发现我们可以拥有复合环境存储库,但是我不能让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
还使用SpringCloudVault进行了测试,我可以获取这些秘密,但是它们没有提供给我的客户
已经尝试使用实现环境存储库
界面,但这是为了创建一个新存储库(我只想在现有的基于git的存储库中添加1个vault属性)
将使用spring事件ApplicationEnvironmentPreparedEvent并尝试动态附加vault属性
我想我忽略了什么。您知道读取vault机密并将其附加为常规属性文件的属性的正确方法吗 这是可能的。您应该为Spring云配置服务使用一些配置文件
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,它的工作方式有点不同。它不会像Git那样获得所有属性。当客户要求某些带有令牌的属性时,它将转到Vault并检索该属性。如果它不存在,它将在git repo中搜索。您可以在配置中指定顺序
Spring以递归方式解析属性,所以您可以拥有一个属性文件,该文件将在git中存储属性占位符,并由配置服务器(application.yml)提供服务:
以及存储在Vault中的敏感属性,例如
vault write secret/clientAppName database.secure.password=SuperSecurePassword
SpringCloud将自动解析您的${database.password}属性
vault write secret/clientAppName database.secure.password=SuperSecurePassword