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

news2024/11/24 13:40:48

文章目录

    • 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-demo
  cloud:
    nacos:
      # 服务端用户名密码
      username: nacos
      password: nacos
      # 服务发现
      discovery:
        # 命名空间
        namespace: 0faa0970-1179-4143-8aa2-cac3ee6b42ec
        # 服务端地址,默认:127.0.0.1:8848
        server-addr: 127.0.0.1:8848
      # 配置中心
      config:
        namespace: 0faa0970-1179-4143-8aa2-cac3ee6b42ec
        server-addr: 127.0.0.1:8848
  # 导入配置
  config:
    import:
       - nacos:cipher-aes-order-demo.yaml

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1714461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI在肿瘤学临床决策中的应用:一种多模态方法

在临床肿瘤学领域&#xff0c;多模态人工智能&#xff08;AI&#xff09;系统通过解读各类医学数据&#xff0c;展现出提升临床决策的潜力。然而&#xff0c;这些模型在所有医学领域中的有效性尚未确定。本文介绍了一种新型的多模态医疗AI方法&#xff0c;该方法利用大型语言模…

maven自建的两个模块怎么相互引用

【背景】 我们平时用Maven仓库都是引用外部别人写好的jar包&#xff0c;今天我需要自己在同一个Project下&#xff0c;在一个模块引用另一个模块中的类。案例展示如下&#xff1a; 【操作】 每个模块都有个自己的pom.xml文件&#xff0c;项目下也有个自己的pom.xml文件&#…

20240529瑞芯微官方Toybrick TB-RK3588开发板的Debian11安装iperf并测试网速

20240529瑞芯微官方Toybrick TB-RK3588开发板的Debian11安装iperf并测试网速 2024/5/29 15:09 服务器端&#xff1a;瑞芯微官方Toybrick TB-RK3588开发板&#xff1a;Debian11 客户端&#xff1a;笔记本电脑&#xff1a;Ubuntu20.04 两者通过千兆交换机连接&#xff01; toybr…

使用Java Swing制作一个飞翔的小鸟游戏

文章目录 一、需求分析二、技术介绍2.1相关技术2.2开发环境 三、功能实现1、开始2、运动3、死亡 四、部分代码实现获取源码 文章最下方获取源码&#xff01;&#xff01;&#xff01; 文章最下方获取源码&#xff01;&#xff01;&#xff01; 文章最下方获取源码&#xff01;&…

芝加哥大学最新研究:GPT-4与财务预测,重塑财务分析的未来

最近&#xff0c;芝加哥大学的研究团队发表了一篇突破性的研究&#xff0c;展示了大型语言模型&#xff08;LLM&#xff09;&#xff0c;特别是 OpenAI 开发的 GPT-4&#xff0c;如何在财务报表分析领域取得了与专业分析师相匹配甚至超越的表现。这项研究不仅凸显了人工智能在高…

系统与软件工程软件测试过程

系统与软件工程 软件测试 测试过程 &#xff1b;对应的国标是GB/T 38634.4 2020 &#xff0c;该标准的范围规定适应用于治理、管理和实施任何组织,项目或较小规模测试活动的软件测试的测试过程,定义了软件测试通用过程,给出了描述过程的支持信息图表。 一 术语和定义 1.1实测…

《庆余年算法番外篇》:范闲通过最短路径算法在阻止黑骑截杀林相

剧情背景 在《庆余年 2》22集中,林相跟大宝交代完为人处世的人生哲理之后,就要跟大宝告别了 在《庆余年 2》23集中,林相在告老还乡的路上与婉儿和大宝告别后 范闲也在与婉儿的对话中知道黑骑调动是绝密,并把最近一次告老还乡梅执礼被马匪截杀与黑骑调动日期关联在一起,…

B/S架构+java语言+Mysqladr数 据 库ADR药物不良反应监测系统源码 ADR药物不良反应监测系统有哪些作用?

B/S架构&#xff0b;java语言&#xff0b;Mysqladr数 据 库ADR药物不良反应监测系统源码 ADR药物不良反应监测系统有哪些作用&#xff1f; 药物不良反应(ADR)是指在合格药物以正常用量和用法用于预防、诊断、治疗疾病或调节生理功能时所发生的意外的、与防治目的无关的、不利或…

系统架构设计师【第2章】: 计算机系统基础知识 (核心总结)

文章目录 2.1 计算机系统概述2.2 计算机硬件2.2.1 计算机硬件组成2.2.2 处理器2.2.3 存储器2.2.4 总线2.2.5 接口2.2.6 外部设备 2.3 计算机软件2.3.1 计算机软件概述2.3.2 操作系统2.3.3 数据库2.3.4 文件系统2.3.5 网络协议2.3.6 中间件2.3.7 软件构件2.3.8 …

C++语言·list链表(下)

还是之前说的&#xff0c;因为要写模板&#xff0c;为了避免链接出现问题&#xff0c;我们将所有内容都写到一个文件中去。首先就是画出链表的框架 链表本身只需要一个头节点就足以找到整条链表&#xff0c;而需要它拼接的节点我们再写一个模板。而我们知道list是一个带头双向循…

JAVA云HIS医院管理系统源码 云HIS系统源码 云HIS的优势 云HIS的发展

JAVA云HIS医院管理系统源码 云HIS系统源码 云HIS的优势 云HIS的发展 HIS系统&#xff0c;即医院信息系统&#xff08;Hospital Information System&#xff09;&#xff0c;在医院的运营和管理中扮演着至关重要的角色。关于HIS系统的溯源&#xff0c;简单从以下几个方面进行讲…

618精选编程书单:学好代码是用好大模型的基础

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

QT6.2.4 MSVC2019 连接MySql5.7数据库,无驱动问题

1.下载 查询一下数据库驱动 qDebug()<<QSqlDatabase::drivers(); 结果显示&#xff0c;没有QMYSQL的驱动。 QList("QSQLITE", "QMARIADB", "QODBC", "QPSQL") MySql6.2.4驱动下载地址&#xff0c;如果是别的版本&#xff0c;…

【Python Cookbook】S01E03 找到最大最小的N个元素

目录 问题解决方案讨论 问题 如何在一个集合中找到最大或最小的 N 个元素&#xff1f; 解决方案 使用 heapq 模块。 pip install heapqheapq 模块中&#xff0c;有 nlargest() 以及 nsmallest() 两个函数&#xff1a; import heapqnums [1, 8, 23, 2, 7, -4, 8, 18, 42, …

Matlab中% note that Wilkinson notation (‘L1~L4~1‘) is used to specify the model

fitrm 函数的输入参数不正确&#xff0c;似乎出错的地方是在定义 fitrm 对象时使用了不正确的参数。 fitrm 函数的语法是这样的&#xff1a; rm fitrm(tbl, model, WithinDesign, withinDesign) 其中&#xff1a; - tbl 是一个表格&#xff0c;包含了待分析的数据。 - mod…

WPF使用Prism实现简单订餐系统

新建wpf项目&#xff0c;nuget引入Prism.DryIoc&#xff0c;MaterialDesignThemes 引入后&#xff0c;修改App.xaml 前台引入 xmlns:prism"http://prismlibrary.com/"和prism:PrismApplication App.xaml.cs App.xaml.cs继承PrismApplication&#xff0c;重写CreateS…

这款AI绘画软件,带你快速生成高质量产品效果图!

前言 随着人工智能技术的飞速发展&#xff0c;AI在设计领域的应用越来越广泛&#xff0c;。今天&#xff0c;介绍的一款能够自动生成高质量产品效果图的AI绘画软件——STARTAI。这款软件以其强大的功能和便捷的操作&#xff0c;正在重新定义电商产品效果图的制作流程。 AI局部…

nginx学习记录-防盗链

1. 防盗链的概念 防盗链&#xff0c;顾名思义就是防止盗取链接&#xff0c;这里的链接一般是资源链接。 如图所示&#xff0c;我们访问一个网站时&#xff08;比如百度&#xff09;&#xff0c;我们第一个请求会获得一个html页面&#xff0c;页面中包含各种资源链接&#xff0…

LeetCode题练习与总结:平衡二叉树--110

一、题目描述 给定一个二叉树&#xff0c;判断它是否是平衡二叉树。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,3,3,null,null,4,4] 输出&#xff1a;false示例 3&#xff1a…

第十三章 进程与线程

第十三章 进程与线程 程序与进程的概念 程序&#xff1a; 英文单词为Program&#xff0c;是指一系列有序指令的集合&#xff0c;使用编程语言所编写&#xff0c;用于实现一定的功能。 进程&#xff1a; 进程则是指启动后的程序&#xff0c;系统会为进程分配内存空间。 函数式…