springboot druid dynamic-datasource数据库密码加密

2021-09-09 1725点热度 0人点赞 0条评论

参考文章链接

https://blog.csdn.net/Lee_0220/article/details/117388962

druid密码加密

官网链接

https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter

生成公钥、私钥及密码

找到druid-1.2.6.jar的位置,切换到该目录,使用如下命令生成公钥和密码(注意:如果密码包含特殊字符,需要使用单引号''引起来):

java -cp druid-1.2.6.jar com.alibaba.druid.filter.config.ConfigTools 'yourpassword'

然后修改spring boot配置如下:

spring:
  application:
    name: restsrv
  datasource:
    name: druidDataSource
    type: com.alibaba.druid.pool.DruidDataSource
    dynamic:
      enable: true
    druid:
      filter:
        config:
          enabled: true # 启动ConfigFilter
      # JDBC 配置(驱动类自动从url的mysql识别,数据源类型自动识别)
      url: jdbc:oracle:thin:@10.152.30.148:1521:orcl
      username: linkage_lcfa
      password: AMNQ6kkdspSTcyr/foPswA==
      driver-class-name:  oracle.jdbc.driver.OracleDriver
      connection-properties: config.decrypt=true;config.decrypt.key=MFwwDQYJKAwEAAQ==
      #连接池配置(通常来说,只需要修改initialSize、minIdle、maxActive
      initial-size: 1
      max-active: 20
      min-idle: 1
      # 配置获取连接等待超时的时间
      max-wait: 60000
      #打开PSCache,并且指定每个连接上PSCache的大小
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      validation-query: SELECT sysdate from dual
      test-on-borrow: false
      test-on-return: false
      test-while-idle: true
      #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      #配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000
      filters: stat,wall
      # WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
      #是否启用StatFilter默认值true
      web-stat-filter.enabled: true
      web-stat-filter.url-pattern:  /*
      web-stat-filter.exclusions: "*.js , *.gif ,*.jpg ,*.png ,*.css ,*.ico , /druid/*"
      web-stat-filter.session-stat-max-count: 1000
      web-stat-filter.profile-enable: true
      # StatViewServlet配置
      #展示Druid的统计信息,StatViewServlet的用途包括:1.提供监控信息展示的html页面2.提供监控信息的JSON API
      #是否启用StatViewServlet默认值true
      stat-view-servlet.enabled: true
      #根据配置中的url-pattern来访问内置监控页面,如果是上面的配置,内置监控页面的首页是/druid/index.html例如:
      #http://192.168.2.3:9000/druid/index.html
      #http://192.168.2.3:8080/mini-web/druid/index.html
      stat-view-servlet.url-pattern:  /druid/*
      #允许清空统计数据
      stat-view-servlet.reset-enable:  true
      stat-view-servlet.login-username: admin
      stat-view-servlet.login-password: 0ac11887db
      #StatViewSerlvet展示出来的监控信息比较敏感,是系统运行的内部情况,如果你需要做访问控制,可以配置allow和deny这两个参数
      #deny优先于allow,如果在deny列表中,就算在allow列表中,也会被拒绝。如果allow没有配置或者为空,则允许所有访问
      #配置的格式
      #<IP>
      #或者<IP>/<SUB_NET_MASK_size>其中128.242.127.1/24
      #24表示,前面24位是子网掩码,比对的时候,前面24位相同就匹配,不支持IPV6。
      #stat-view-servlet.allow=
      #stat-view-servlet.deny=128.242.127.1/24,128.242.128.1
      # Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
      #aop-patterns= # Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔

说明:仅需要修改以下配置即可:
1. 启用filter config
2. password配置生成的加密串
3. connection-properties: config.decrypt=true;config.decrypt.key=MFwwDQYJKAwEAAQ
按照以上格式配置connection-properties

baomidou的dynamic-datasource配置数据库加密

dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。官网地址:https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter
该框架自带加密 ENC()。
经过查看源码发现, 该框架使用自带的加密工具类com.baomidou.dynamic.datasource.toolkit.CryptoUtils进行加解密, 且自带有公钥私钥, 所以直接使用此工具类加密我们的明文密码, 然后用ENC()包裹即可实现加解密。

调用加密方法,加密数据库用户名和密码

public class PwdUtilTest {
    public static void main(String[] args) {
        // 假如我们的密码为hello
        String password = null;
        try {
            password = CryptoUtils.encrypt("hello");
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(password);
    }
}

配置配置文件

spring:
  datasource:
    dynamic:
      primary: master
      datasource:
        master:
          url: jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false
          username: root
          # 用ENC将密码包裹起来
          password: ENC(VZamSTMi224AH6RUtJGXNldiDp/XEL2ozRhBUu/o9ChodT4JEb9kE/....)

王显锋

激情工作,快乐生活!

文章评论