一、环境搭建
官网指导步骤:https://learn.hashicorp.com/vault/#getting-started
1. 下载vault安装文件
2. dev环境启动 ./vault server -dev, 然后localhost:8200,这种方式token每次启动都会变化
3.token不变的方式,首先:在vault目录下创建vault-dev.hcl文件
/* * Sample configuration file for tests */ // Enable UI ui = true // Filesystem storage storage "file" { path = "./vault-data" } // TCP Listener using a self-signed certificate listener "tcp" { address = "127.0.0.1:8200" "tls_disable" = "true" }
4. cd到vault目录下,执行下面命令启动vault server
./vault server -config vault-dev.hcl
5. 另起一个命令窗口,执行:
export VAULT_ADDR=http://localhost:8200vault operator init
6. 保存好上面init命令后产生的5个key和一个token,另起一个命令窗口 执行(需要3个key凑齐才能用)
./vault operator unseal 第一个key ./vault operator unseal 第二个key ./vault operator unseal 第三个key
7. 然后执行localhost:8200, 打开管理平台,添加一个密码引擎,类型为KV,路径为secret/, 然后创建与springboot项目中spring.application.name配置一致的名称
8. 配置需要加密的key value,springboot项目中可以用占位符变量
vault中配置key为变量名
除了用变量占位符,也可以springboot项目中去掉配置项,vault中配置key为springboot配置路径(spring.datasource.username)方式进行配置
二、集成 spring-cloud-vault 组件
1. 引入依赖 compile "org.springframework.cloud:spring-cloud-vault-config:1.1.2.RELEASE"
2. 编辑bootstrap.yml文件
spring: application: # 应用名 name: defsat-demo cloud: vault: # 默认不开启,根据profile配置 enabled: false --- spring: # 环境 profiles: staging cloud: vault: # vault服务地址 uri: https://localhost:8200 # vault token token: s.GdMEcVYamK3HMaesWAlvYPlG enabled: true --- spring: # 环境 profiles: prod cloud: vault: # vault服务地址 uri: https://localhost:8200 # vault token token: s.GdMEcVYamK3HMaesWAlvYPlG enabled: true
三、注意事项
1. 新增一个secret引擎时,名称一定要叫 secret,不然应用找不到,具体原因没深究
2. 每次关闭vault后,必须要重新解封
3. 新增secret引擎时,使用Version1,不要使用Version2