热门标签 | 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


推荐阅读
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • ImmutableX Poised to Pioneer Web3 Gaming Revolution
    ImmutableX is set to spearhead the evolution of Web3 gaming, with its innovative technologies and strategic partnerships driving significant advancements in the industry. ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 本文深入探讨了如何通过调整InnoDB的关键配置参数来优化MySQL的随机IO性能,涵盖了缓存、日志文件、预读机制等多个方面,帮助读者全面提升数据库系统的性能。 ... [详细]
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社区 版权所有