作者:抵制日货2502901143 | 来源:互联网 | 2024-12-18 16:40
本文探讨了如何在SpringCloudConfig中集成HashiCorpVault作为配置存储解决方案,基于SpringCloudHoxton.RELEASE及SpringBoot2.2.1.RELEASE版本。文章还提供了详细的配置示例和实践建议。
Spring Cloud Config 配置详解
本文将指导您如何在Spring Cloud Config中利用Vault作为配置存储后端,确保敏感信息的安全性和灵活性。我们将基于Spring Cloud Hoxton.RELEASE和Spring Boot 2.2.1.RELEASE版本进行说明,并使用Vault 1.3.1作为后端存储。
项目的基础架构采用了Eureka作为服务注册与发现组件。
项目源码托管于GitHub: ====>>> cloud-service-config-vault
Vault配置详解
Maven依赖
org.springframework.cloud
spring-cloud-config-server
application.yml配置
spring:
cloud:
config:
server:
vault:
backend: secret
host: localhost
port: 8200
scheme: http
kv-version: 2
timeout: 5
skip-ssl-validation: true
关键点:
- backend参数指定了Vault中的特定secrets引擎路径,此处仅能指定单一路径。
- default-key参数定义了默认的密钥名称,所有连接到配置中心的应用程序将共享此密钥下的配置信息。
应用程序配置示例
Maven依赖
org.springframework.cloud
spring-cloud-starter-config
application.yml配置
spring:
cloud:
config:
uri: http://localhost:8888/
profile: default
name: service-demo1
token: s.F8qMMcRze19KpKq7E
代码中引用配置
@Configuration
public class DataSourceConfig {
@Value("${mysql_address}")
String driver;
@Value("${jdbc.url}")
String url;
}
注意事项:
- token参数应为Vault生成的令牌,用于身份验证,可为不同应用分配不同的令牌。
- 在使用Vault作为后端时,profile和label参数作用有限,通常保持默认值即可。
Vault中的数据管理
重要提示:
- Vault支持key-value和json两种数据格式,推荐使用json格式以支持更复杂的数据结构。
- 避免在key-value中直接存储json字符串,这将导致无法正确解析。
多配置中心支持
Spring Cloud Config允许同时使用多个配置中心,例如Vault和Git。为了实现这一点,需要确保所有配置中心的服务名一致。
下图为Spring Cloud Config的整体架构图:
总结
从安全性角度考虑,GitLab和Vault都是优秀的配置管理工具,尤其是当涉及到细粒度的权限控制时。Vault通过Policies机制提供了强大的访问控制能力,相比之下,GitLab可能需要额外的定制开发来达到同样的效果。
示例代码仓库: owen-jia/cloud-parent
作者:Owen Jia,博客地址: https://blog.shareworld.vip