Apollo配置加解密-基于Apollo—client的封装支持配置动态解密的巧思与探索

本文介绍了在公司业务需求下选择Apollo作为配置中心,并探讨了Apollo在信息安全中的加密存储需求。文章详细阐述了不修改Apollo源码,而是通过封装Apollo-client实现配置动态解密的思路和步骤,包括创建新的Injector、ConfigFactory和Config,以及如何利用SPI机制替换默认实现,最终达到在配置更新时自动解密的效果。

随着公司业务线不断壮大和发展,项目种类不断增多,对于配置的统一管理和监控以及支持动态发布等一些特性变成越来越重要的事情。所以需要引入配置中心进行与公司业务流程的适配。方向选型主要是Nacos和Apollo,二者区别这边不做赘述,最终落地选择了Apollo。在信息安全要求中,包含这么一条规则,要求放在配置中心的一些关键配置,比如数据库密码,各种中间件,MQ、以及服务器地址之类的数据,需要进行加密存储,以确保安全性。

Apollo本身是没有提供加解密的特性的,所以需要我们进行一些改造。

改造的方向有两点:1应用自身进行配置解密的动作 2在Apollo-client统一实现。

基于第一点,我在springboot和Mvc项目中都分别做了实现,但是业务代码耦合相对比较严重,并且加解密的动作最好还是做一个统一的地方处理,符合一种服务化的思想。

所以基于第二点,做了如下探索和改造。

其实网络上可以搜索到对应的一些改造方式,不亚于就是在DefaultConfig的updateConfig方法中添加上自己的解密逻辑。

那么为什么要在这个地方加上解密的逻辑呢?

其实很简单,这个类是Apollo启动流程中默认注入的类,并且在两个地方有所调用

其一:初始化的时候调用

其二:远程配置中心有变更监听到配置变更消息的时候调用

所以我们在这个方法中加入解密逻辑是没有问题的。我本地也进行了对应的测试实现。

但是做完之后我们思考一个逻辑,我们在引入一个框架解决某些问题的时候,本质上应该本着不去修改它源代码的角度上去进行扩展功能的实现,这样有利于我们后期做一些框架升级的动作,因为无论随着公司人员流转调动或者历史因素,总会有一些代码是没有人维护的,所以我们应该将后期的升级成本尽可能的缩小。所以这时候基于这样的思考点,我们应该想想能不能自己基于Apollo-client做一

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值