当前位置: 首页 > news >正文

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

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

相关文章:

  • 【二叉树】:LeetCode:100.相同的数(分治)
  • Spring-注解
  • vue 打印、自定义打印、页面打印、隐藏页眉页脚
  • kotlin基础之协程
  • 【5.基础知识和程序编译及调试】
  • 第十三章 进程与线程
  • 探秘URL的奥义:JavaScript中轻松获取页面参数值的N种姿势【含代码示例】
  • 基于文本来推荐相似酒店
  • 最新文章合集
  • 前端加密的方式汇总
  • 【OpenCV 基础知识 13】高斯平滑处理图像
  • vue实现页面渲染时候执行某需求
  • Vue 前端加框 给div加红色框框 js实现
  • 【PB案例学习笔记】-12秒表实现
  • 【PostgreSQL17新特性之-事务级别超时参数transaction_timeout】
  • 【面试系列】之二:关于js原型
  • egg(89)--egg之redis的发布和订阅
  • HashMap剖析之内部结构
  • iOS编译提示和导航提示
  • Java 内存分配及垃圾回收机制初探
  • Redis在Web项目中的应用与实践
  • SQLServer之创建数据库快照
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 编写高质量JavaScript代码之并发
  • 产品三维模型在线预览
  • 新书推荐|Windows黑客编程技术详解
  • 主流的CSS水平和垂直居中技术大全
  • 说说我为什么看好Spring Cloud Alibaba
  • ​人工智能书单(数学基础篇)
  • #if和#ifdef区别
  • #Spring-boot高级
  • (1) caustics\
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (LeetCode C++)盛最多水的容器
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (多级缓存)多级缓存
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十七)Flink 容错机制
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)甲方乙方——赵民谈找工作
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .net 获取url的方法
  • .NET 命令行参数包含应用程序路径吗?
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .Net6 Api Swagger配置
  • .NET连接MongoDB数据库实例教程
  • .NET面试题(二)