平台制作网站公司哪家好,学校网站建设审批,电脑网页浏览器,wordpress 中文社区1.什么是Spring Cloud Vault#xff1f;
Spring Cloud Vault 是 Spring Cloud 生态系统中的一个项目#xff0c;旨在简化 Spring 应用程序与 HashiCorp Vault 的集成。它提供了一种方便的方式来管理和访问应用程序的敏感配置数据#xff0c;如数据库凭证、API 密钥和其他机…1.什么是Spring Cloud Vault
Spring Cloud Vault 是 Spring Cloud 生态系统中的一个项目旨在简化 Spring 应用程序与 HashiCorp Vault 的集成。它提供了一种方便的方式来管理和访问应用程序的敏感配置数据如数据库凭证、API 密钥和其他机密信息。
工作原理 配置加载在应用程序启动时Spring Cloud Vault 会根据配置文件中的设置连接到 Vault 服务器并从指定路径加载配置数据。 属性注入加载的配置数据会被注入到 Spring 的 Environment 中应用程序可以通过 Value 注解或 Environment 对象访问这些配置属性。 安全访问通过使用 Vault 的访问控制策略确保只有授权的应用程序和用户能够访问特定的配置数据。
使用场景
管理敏感信息如数据库密码、API 密钥、证书等。动态配置管理需要频繁更新配置而不希望重启应用程序。多环境配置在不同的部署环境中使用不同的配置。
2.环境搭建
docker搭建vault
docker run --cap-addIPC_LOCK -e VAULT_DEV_ROOT_TOKEN_IDroot -e VAULT_DEV_LISTEN_ADDRESS0.0.0.0:8200 -p 8200:8200 --namevault -d vault:1.13.3
env config export VAULT_TOKENhvs.9rUli4rwArRrAUYkVp0NVUlu
export VAULT_ADDRhttp://0.0.0.0:8200
init datas
vault kv put secret/application example.usernamemyuser example.passwordmypassword
you can init by using web UI 3.代码工程
实验目标
Spring Boot读取vault里面的值 pom.xml
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdspringcloud-demo/artifactIdgroupIdcom.et/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdspring-cloud-vault/artifactIdpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.target/propertiesdependencies!-- Spring Boot Starter Web --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- Spring Cloud Vault Config --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-vault-config/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-vault-config-databases/artifactId/dependency!-- Spring Boot Starter Test --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies
/project
controller
package com.et;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;RestController
class SecretController {Value(${example.username})private String username;Value(${example.password})private String password;GetMapping(/secrets)public String getSecrets() {return Username: username , Password: password;}
}
VaultDemoApplication.java
package com.et;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class VaultDemoApplication {public static void main(String[] args) {SpringApplication.run(VaultDemoApplication.class, args);}
}
application.yml
logging:level:org.springframework.cloud.vault: DEBUGspring:application:name: vault-democonfig:import: vault://cloud:vault:uri: http://localhost:8200token: hvs.9rUli4rwArRrAUYkVp0NVUlukv:enabled: truebackend: secretdefault-context: application
以上只是一些关键代码所有代码请参见下面代码仓库
代码仓库
https://github.com/Harries/springcloud-demo(Spring Cloud Vault)
4.测试
启动Spring Boot 工程访问http://127.0.0.1:8080/secrets结果过将返回Username: harries, Password: 123456
5.引用
Spring Cloud VaultSpring Cloud Vault快速入门Demo | Harries Blog™