您的位置:首页 > 娱乐 > 八卦 > Nacos 2.x 系列【12】配置加密插件

Nacos 2.x 系列【12】配置加密插件

2024/12/23 8:32:46 来源:https://blog.csdn.net/qq_43437874/article/details/139264360  浏览:    关键词:Nacos 2.x 系列【12】配置加密插件

文章目录

    • 1. 前言
    • 2. 安装插件
      • 2.1 编译
      • 2.2 客户端
      • 2.3 服务端
    • 3. 测试

1. 前言

为保证用户敏感配置数据的安全,Nacos提供了配置加密的新特性。降低了用户使用的风险,也不需要再对配置进行单独的加密处理。

前提条件:

  • 版本:老版本暂时不兼容,目前只基于2.x版本进行了改造,推荐版本 > 2.0.4
  • 数据库:表 config_infoconfig_info_betahis_config_info中需要新增字段 encrypted_data_key ,用来存储每一个配置项加密使用的秘钥。新版本的默认创建表的sql中已经添加该字段。
    • 内嵌数据库:如果之前使用过内嵌数据库的单机模式启动,则需要删除nacos/data文件夹,在重新启动会重新创建表。
    • MySQL:对于目前已经搭建好的 Nacos 使用以下 sql 将字段添加到对应的表中:ALTER TABLE table_name ADD COLUMN 'encrypted_data_key' text NOT NULL COMMENT '秘钥'

注意事项: 目前各种Nacos插件并不成熟,可能会有Bug(不推荐生产环境使用)

2. 安装插件

Nacos通过 SPI 的机制抽象出加密和解密的操作,默认提供 AES 的实现。用户也可以自定义加解密的实现方式。具体的实现在 nacos-plugin仓库。

Nacos 服务端启动的时候就会加载所有依赖的加解密算法,然后通过发布配置的 dataId 的前缀来进行匹配是否需要加解密和使用的加解密算法。

客户端发布的配置会在客户端通过filter完成加解密,也就是配置在传输过程中都是密文的。而控制台发布的配置会在服务端进行处理。

Nacos 加解密插件是可插拔的,有没有都不影响 Nacos 的核心功能的运行。如果想要使用 Naocs 的配置加解密功能需要单独引用加密算法的实现。客户端和服务端都通过添加以下依赖来使用 AES 加解密算法,服务端推荐添加到 config 模块下。

2.1 编译

目前插件需要自己编译,并未上传至maven中央仓库。在nacos-plugin地址下载源码,导入到IDEA中,进行编译安装到本地仓库。

在这里插入图片描述

2.2 客户端

客户端(后台服务)引入默认的AES加密插件:

        <!--配置加密插件--><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-aes-encryption-plugin</artifactId><version>1.0.0-SNAPSHOT</version></dependency>

2.3 服务端

参考Nacos 2.x 系列【11】源码启动服务端下载服务端源码,找到config模块:

在这里插入图片描述
引入默认的AES加密插件:

        <!--配置加密插件--><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-aes-encryption-plugin</artifactId><version>1.0.0-SNAPSHOT</version></dependency>

3. 测试

源码启动服务端,打开Nacos控制台,点击新建配置,配置前缀使用以下格式来标识这个配置需要加密:

cipher-[加密算法名称]-dataId`

系统会自动识别并加密,例如使用 AES 算法来解密配置:

cipher-aes-application-dev.yml

这里添加order-demo服务的配置:
在这里插入图片描述
配置文件内容如下:

spring:application:name: order-democloud:nacos:# 服务端用户名密码username: nacospassword: nacos# 服务发现discovery:# 命名空间namespace: 0faa0970-1179-4143-8aa2-cac3ee6b42ec# 服务端地址,默认:127.0.0.1:8848server-addr: 127.0.0.1:8848# 配置中心config:namespace: 0faa0970-1179-4143-8aa2-cac3ee6b42ecserver-addr: 127.0.0.1:8848# 导入配置config:import:- nacos:cipher-aes-order-demo.yaml

点击保存,查看数据库,可以看到配置内容被加密:
在这里插入图片描述
自动生成的秘钥:
在这里插入图片描述
启动服务后台,正常获取到加密的配置并自动解密:
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com