一,背景
因为项目中安全检查的要求,需要将nacos配置的内容进行加密,所以需要实现将配置内容加密处理,这里引入nacos-aes-encryption-plugin插件来完成这一需求。
二,实现步骤
1, 重新编译nacos服务端
1.1 从github下载Nacos源码,地址https://github.com/alibaba/nacos 。
1.2 在config模块中引入插件:
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-aes-encryption-plugin</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency>
1.3 服务端编译:cd nacos && mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
其中,-Prelease-nacos 是编译参数,表示编译的是 Nacos release 版本。-U参数表示强制更新依赖。
1.4 编译完成后,会在distribution/target目录下生成nacos-server-x.x.x.zip包,可作为nacos的版本包直接使用。
1.5 使用上面的包重新部署nacos
2 Nacos页面配置
进入Nacos控制台,配置内容正常处理,配置名以"cipher-aes-"开头,例:cipher-aes-user
3, SpringBoot应用服务端(后端服务)
3.1 在服务中引入
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-aes-encryption-plugin</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
3.2 将项目的yml文件中的"spring.cloud.nacos.config.prefix"改为"cipher-aes-"开头,例:cipher-aes-user。
4, 结果
上述配置完之后,在数据库端看到的配置内容就是加密后的内容,但是在应用端和web端读取的时候都是解密后的明文。