热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringCloudConfig使用Vault作为配置存储

本文探讨了如何在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

关键点:

  1. backend参数指定了Vault中的特定secrets引擎路径,此处仅能指定单一路径。
  2. 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;
}

注意事项:

  1. token参数应为Vault生成的令牌,用于身份验证,可为不同应用分配不同的令牌。
  2. 在使用Vault作为后端时,profile和label参数作用有限,通常保持默认值即可。

Vault中的数据管理

image

重要提示:

  1. Vault支持key-value和json两种数据格式,推荐使用json格式以支持更复杂的数据结构。
  2. 避免在key-value中直接存储json字符串,这将导致无法正确解析。

多配置中心支持

Spring Cloud Config允许同时使用多个配置中心,例如Vault和Git。为了实现这一点,需要确保所有配置中心的服务名一致。

下图为Spring Cloud Config的整体架构图:

image

总结

从安全性角度考虑,GitLab和Vault都是优秀的配置管理工具,尤其是当涉及到细粒度的权限控制时。Vault通过Policies机制提供了强大的访问控制能力,相比之下,GitLab可能需要额外的定制开发来达到同样的效果。

示例代码仓库: owen-jia/cloud-parent

作者:Owen Jia,博客地址: https://blog.shareworld.vip


推荐阅读
  • Spring Boot 入门指南
    本文介绍了Spring Boot的基本概念及其在现代Java应用程序开发中的作用。Spring Boot旨在简化Spring应用的初始设置和开发过程,通过自动配置和约定优于配置的原则,帮助开发者快速构建基于Spring框架的应用。 ... [详细]
  • 今天发现Mysql的主从数据库没有同步先上Master库:mysqlshowprocesslist;查看下进程是否Sleep太多。发现很正常。showmaster ... [详细]
  • 在使用 Spring Cloud Config 作为配置中心时,若在配置文件中指定了请求路径但未能生效,本文将探讨其原因及解决方案。 ... [详细]
  • 本文详细介绍了如何在 Windows 7 操作系统上安装和配置 InfluxDB,这是一种专为处理时间序列数据设计的高性能数据库。 ... [详细]
  • 本文档提供了一个详细的步骤指南,介绍如何使用Rviz工具将ROS bag文件中存储的点云数据进行可视化处理。 ... [详细]
  • 本文探讨了在使用MyBatis Generator过程中遇到的'Communication Link Failure'错误,并提供了多种有效的解决方案。 ... [详细]
  • 本文介绍了MySQL数据库的安全权限管理思想及其制度流程,涵盖从项目开发、数据库更新到日常运维等多个方面的详细流程控制,旨在通过严格的流程管理和权限控制,有效预防数据安全隐患。 ... [详细]
  • 使用LVS与ldirectord实现高可用负载均衡
    本文介绍了如何通过LVS(Linux Virtual Server)结合ldirectord工具来实现服务器的健康检查及负载均衡功能。环境设置包括一个LVS节点和两个真实服务器节点,通过配置ldirectord进行健康状态监测,确保系统的高可用性。 ... [详细]
  • 本文探讨了如何在Node.js环境中,通过Tor网络使用的SOCKS5代理执行HTTP请求。文中不仅提供了基础的实现方法,还介绍了几种常用的库和工具,帮助开发者解决遇到的问题。 ... [详细]
  • 本文探讨了浏览器的同源策略限制及其对 AJAX 请求的影响,并详细介绍了如何在 Spring Boot 应用中优雅地处理跨域请求,特别是当请求包含自定义 Headers 时的解决方案。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中安装MySQL 5.5.37时遇到的启动失败和PID文件问题,并提供了详细的解决方案,包括日志分析、权限检查等步骤。 ... [详细]
  • Canvas漫游:碰撞检测与动画模拟
    探索Canvas在Web开发中的应用,通过碰撞检测与动画模拟提升交互体验。 ... [详细]
  • 本文提供了一个详细的PHP用户认证和管理的代码示例,包括用户登录验证、数据库连接、错误处理等关键部分的实现。 ... [详细]
  • 本文介绍了Kettle资源库的基本概念、类型及其管理方法,同时探讨了Kettle的不同运行方式,包括图形界面、命令行以及API调用,并详细说明了日志记录的相关配置。 ... [详细]
  • Docker入门与实践指南
    本文介绍了Docker的基础知识,包括其作为开源应用容器引擎的特点,以及如何利用Docker将应用程序及其依赖项打包成轻量级的容器镜像。同时,还详细讲解了Docker的核心概念、安装过程及基本命令操作。 ... [详细]
author-avatar
抵制日货2502901143
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有