微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Boot 保护敏感配置的 4 种方法

1、配置中心(支持自动解密)

我觉得还得看大家的架构情况,如果使用了外置的第三方配置中心(支持自动解密的那种),就可以把所有的配置信息存储在配置中心,比如  Spring Cloud 生态中的配置中心,那么可以使用自带的加、解密机制保护敏感信息:

spring:   
  datasource:     
    username: '{cipher}t1s293294187a31f35dea15e8bafaf7774532xxcc20d6d6dd0dfa5ae753d6836'

需要加密的内容以  {cipher} 开头标识,并注意要使用单引号包起来

@H_502_16@2、数据库机制

可以把所有配置信息存储到数据库,系统启动的时候全部加载进内存。存储的时候,敏感信息以对称加密算法进行加密存储,然后加载的时候自动解密到内存。

 

@H_502_16@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;
}


@H_502_16@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、@H_502_16@如果开启了 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: "]"
 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐