Spring Boot 保护敏感配置的 4 种方法
作者:互联网
1、配置中心(支持自动解密)
我觉得还得看大家的架构情况,如果使用了外置的第三方配置中心(支持自动解密的那种),就可以把所有的配置信息存储在配置中心,比如 Spring Cloud 生态中的配置中心,那么可以使用自带的加、解密机制保护敏感信息:
spring:
datasource:
username: '{cipher}t1s293294187a31f35dea15e8bafaf7774532xxcc20d6d6dd0dfa5ae753d6836'
需要加密的内容以 {cipher}
开头标识,并注意要使用单引号包起来
2、数据库机制
可以把所有配置信息存储到数据库,系统启动的时候全部加载进内存。存储的时候,敏感信息以对称加密算法进行加密存储,然后加载的时候自动解密到内存。
3、自定义加解密机制
先用系统已有的对称加密算法对数据库连接信息加密:
spring:
datasource:
username: '{cipher}t1s293294187a31f35dea15e8bafaf7774532xxcc20d6d6dd0dfa5ae753d6836'
排除 Spring Boot 系统自带的数据源自动配置,然后自行组装数据源 Spring Bean。
判断获取的配置值是否以 {cipher}
这个标识开头,如果是,则用系统约定的对称加密算法进行解密,然后再设置数据源,比如:
// 示例代码
@Bean
public DataSource dataSource(){
DataSource dataSource = new DruidDataSource();
// 解密
String username = this.getUsername();
if (username.startWith('{cipher}')){
username = Encrypt.decrypt(username, this.getKey()))
}
dataSource.setUsername(username);
...
return dataSource;
}
4、Jasypt Spring Boot
Jasypt Spring Boot 是一个专门为 Spring Boot 项目中的属性提供加密支持的框架
开源地址:
https://github.com/ulisesbocchio/jasypt-spring-boot
4.1 Jasypt Spring Boot 实战
Jasypt Spring Boot 有 3 种集成方法:
1、如果开启了 Spring Boot 的自动配置(使用了 @SpringBootApplication 或者 @EnableAutoConfiguration 注解):只需要添加 jasypt-spring-boot-starter
依赖即可,这种会在整个 Spring Environment 中启用可加密属性;
2、添加 jasypt-spring-boot
依赖,同时在 Spring 主要配置类上添加 @EnableEncryptableProperties
注解,这种会在整个 Spring Environment 中启用可加密属性;
3、添加 jasypt-spring-boot
依赖,使用 @EncrytablePropertySource 注解声明各个可加密的参数上,这种只适用于独立配置参数加解密;
4.1.1 引入依赖
核心依赖:
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.4</version>
</dependency>
Maven 插件(可选)
<build>
<plugins>
<plugin>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-maven-plugin</artifactId>
<version>${jasypt-spring-boot.version}</version>
</plugin>
</plugins>
</build>
4.1.2 添加密钥
jasypt:
encryptor:
password: G9w0BAQEFAASCBKYwggSiAgEAAoIBAQC
property:
prefix: "ENC@["
suffix: "]"
标签:username,spring,Spring,boot,Boot,敏感,jasypt 来源: https://www.cnblogs.com/KL2016/p/16118554.html