当前位置: 首页 > news >正文

springboot集成springcloud vault读值示例

接上三篇
Vault---机密信息管理工具安装及常用示例
Vault机密管理工具集群配置示例
vault签发根证书、中间证书、ca证书流程记录
项目里打算把所有密码都放到vault里管理,vault提供了springcloud vault用来在springboot里连接vault,启动加载vault里的值放到spring中,极端点,vault的kv引擎甚至可以做分布式配置中心来用,来替代nacos的配置中心功能,当然这样用的人还比较少。

maven引入:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-vault-config</artifactId>
    <version>3.0.3</version>
</dependency>

bootstrap.yml里加入:

spring:
  cloud:
    vault:
      application-name: venucia_fota_kv
      host: 127.0.0.1
      port: 8200
      scheme: http
      authentication: TOKEN
      token: xxxtoken
      connection-timeout: 5000
      read-timeout: 15000
      config:
        order: -10
      kv:
        enabled: true
        backend: kvTest
        profile-separator: /
        application-name: /ota/pwd

注意springcloud vault源码里对启动顺序定义的很靠前,所以最好不要放到nacos里,它会在nacos加载配置文件前就生效,如果放到nacos里会报缺少token的错误。springcloud vault代码侵入性很小,只要引入jar包,配到springboot里就可以生效。

假设我们在vault里新建一个kvTest的kv引擎,在

kvTest/ota/pwd

路径存储了一系列json数据比如:

{"mysql-pwd":"xxxpsd"}

上面的配置文件中backend代表的是引擎名称,application-name如果不指定,默认拿spring.application.name,指定了路径就是自定义的路径

如此,在springboot启动后,如果vault正常连接,且配置在这里的token有该引擎的访问权限的话,就可以把vault里面存储的json值(key,value)放入spring里,我们在项目里或nacos里用$就可以输出或者用java输出。
如:
nacos里或者配置文件里

${mysql-pwd}

java代码里:

@Value("${mysql-pwd}")

或import org.springframework.core.env.Environment里拿:

Environment config = SpringContextUtil.getApplicationContext().getEnvironment();
String value = config.getProperty("mysql-pwd");
System.out.println("===" + value);

补充SpringContextUtil:

package ly.mp.project.common.util;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component("springContextUtil")
public class SpringContextUtil implements ApplicationContextAware {

    private static ApplicationContext applicationContext; // Spring应用上下文环境

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringContextUtil.applicationContext = applicationContext;
    }

    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    @SuppressWarnings("unchecked")
    public static <T> T getBean(String name) throws BeansException {
        return (T) applicationContext.getBean(name);
    }

    @SuppressWarnings("unchecked")
    public static <T> T getBean(Class<?> clz) throws BeansException {
        return (T) applicationContext.getBean(clz);
    }
}

别忘了给这个token最基本的policy权限:

path "kvTest/*" {
    capabilities = ["read", "list"]
}
path "secret/*"{
  capabilities = ["read", "list"]
}

springcloud vault会自动续期token

vault创建的token默认最长只有768h的有效期,也就是32天左右,但是springcloud vault jar包里做了自动续期的操作,实测在token将要过期前的5秒到3秒内会自动向vault发送renew-self请求实现自动续期,所以理论上只要项目在过期前的那个时间点还在运行,就可以自动续期。

如此,就可以把项目里的所有密码都放到vault里管理了,比如mysql密码,elasticsearch密码等等,要比直接放在nacos里更安全。



喜欢的朋友记得点赞、收藏、关注哦!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/123965.html

相关文章:

  • C++ - 数据容器之 unordered_map(声明与初始化、插入元素、访问元素、遍历元素、删除元素、查找元素)
  • 三相电为什么没零线也能通电
  • kali linux vmware 光标无法移出vmware,需要按ctrl + alt 才能移出光标
  • 【DB2】事务日志满/归档占用较大问题处理记录
  • 深入解析栈式虚拟机与反向波兰表示法
  • FacialExpressionDetection的conda虚拟环境搭建Window
  • 清华DeepSeek教程又双叒叕更新了!(共7份PDF下载)
  • DAPP实战篇:使用web3.js实现前端输入钱包地址查询该地址的USDT余额——前端篇
  • 算法竞赛中常用的数据处理库函数
  • 2025常用的ETL 产品推荐:助力企业激活数据价值
  • PyTorch Tensor维度变换实战:view/squeeze/expand/repeat全解析
  • SPI、UART、IIC(I²C) 通信协议的详细介绍及对比分析
  • NO.86十六届蓝桥杯备战|动态规划-01背包|采药|小A点菜|Cow Frisbee Team(C++)
  • KWDB创作者计划—KWDB:重新定义数据管理的边界
  • (51单片机)串口通讯(串口通讯教程)(串口接收发送教程)
  • 支付系统C扫B全链路压测方案
  • NLP高频面试题(三十九)——什么是大模型的涌现能力?
  • MATLAB在哪些特定领域比Python更有优势?
  • 华强北手表256G的,真实有多少?如何打开调试模式及root
  • GaussDB ECPG与Oracle Pro_C深度对比:嵌入式SQL开发者的迁移指南
  • SAP S/4HANA Public Cloud的实施特点、项目阶段、资源和工具
  • 特辣的海藻!16
  • uniapp实现H5页面麦克风权限获取与录音功能
  • 矩阵热图】】
  • UE5 RPC调用示例详解
  • 探索 UI 设计服务:提升用户体验的关键力量
  • Server-Sent Events一种允许服务器向客户端发送实时更新的 Web API
  • 利用大模型和聚类算法找出 Excel 文件中重复或相似度高的数据,并使用 FastAPI 进行封装的详细方案
  • 【学生管理系统升级版】
  • 河北邯郸进入万兆时代:实测下载破10Gbps 比千兆快10倍