美文网首页
Sharding-JDBC 安全配置实际应用

Sharding-JDBC 安全配置实际应用

作者: IT小分享 | 来源:发表于2020-12-11 11:04 被阅读0次

Sharding-JDBC在简化分库分表操作,读写分离,分布式事务方面做的很出色。网上有许多资料对其设计思想,实际应用等做了详细介绍。但数据库安全方面比较少,经过一段时间摸索,也有些收获。这次分享主要是Sharding-JDBC 数据源敏感配置数据的加解密。表字段脱敏Sharding-JDBC官方已有详细的介绍,就不再多说了,官网地址(http://shardingsphere.apache.org/index_zh.html)。此次介绍安全原因是因为安全跟系统业务一样有着同等重要地位,不可忽视。

看了很多关于Sharding-JDBC项目,很多数据源配置密码和账户名经常是这样如下图一,密码明文放在配置文件里,可能数据库账户权限比较小等其他一些原因。个人觉得像图一做些处理,系统安全就可再提升。

图一

怎样做才能更安全呢?有两种方法。第一种使用druid自带的加解密。第二种自定义加解密方法。

1 第一种使用druid自带的加解密步骤。

1.1 命令行进入到druid.jar所在路径

1.2 输入命令,按回车如图三

     java -cp druid-1.1.23.jar com.alibaba.druid.filter.config.ConfigTools 个人密码

图三

1.3 命令执行结果如图四

图四

1.4 保存图四生成信息,复制出password和publicKey。

1.5 实际项目配置使用。如图五数据库连接池要使用Druid加解密才有效,红色箭头要注意。配置文件是yml,shardingsphere是spring的子项.

yml文件中的配置   

shardingsphere:

    datasource:

      names: m1

      m1:

        type:

        filters: config

        connectionProperties:

        driverClassName:

        url:

        username:

        password:

图五

1.6 加解密生效原因

提取connectionProperties配置值,用";"进行分割。如图八请看源码。connectionProperties配置值后调用ConfigFilter进行使用1.2步骤公钥进行解密,图九是密文解密源码。更加深入了解可以去看源码

图八

图九

2 自定义加解密方法

2.0 使用自个的加密功能,为密码加密。

2.1 定义解密类继承,要导入Druid依赖包。setProperties方法就是解密操作。

     public class DBPasswordCallback extends DruidPasswordCallback {

    @Override

    public void setProperties(Properties properties) {

  super.setProperties(properties);

        String pwd = (String)properties.get("password");

        if (StringUtils.isNotBlank(pwd)) {

            try {

                //这里的password是将jdbc.properties配置得到的密码进行解密之后的值

                //将密码进行解密

                //TODO 将pwd进行自定义解密;

                String password = RSAKeysUtil.decrypt( pwd , PRIVATE_KEY_STRING );

                setPassword(password.toCharArray());

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

}

}

2.3 yml文件配置如图六。数据库连接池用Druid才能生效。

图六

2.4 加解密能生效原因是因为druid获取到了密码解密引用,调用setProperties函数传入密码密文,密码回调引用解密后把明文赋值上,然后数据收到后在校验。下面图七是源码执行操作。

图七

欢迎点赞关注留言转发,大家对安全还有其他见解请下方留言,共同探讨。希望分享对大家实际工作有帮助。

相关文章

网友评论

      本文标题:Sharding-JDBC 安全配置实际应用

      本文链接:https://www.haomeiwen.com/subject/edcjgktx.html