一、功能定义(官方原文)
配置加密用于保护存储在 Nacos 中的敏感配置内容。开启后,符合命名规则的配置会以密文写入数据库,并通过 encrypted_data_key 保存解密所需的数据密钥。
边界说明(重点):配置加密不替代鉴权、网络隔离、TLS 或企业密钥管理系统。仅解决:Nacos存储层、传输链路配置明文泄露问题。
二、官方标准工作机制(核心,解决你明文不加密问题)
2.1 DataId 强制命名规则(不可修改)
统一格式:cipher-${algorithmName}-${真实配置名}
适配本次AES插件固定格式:cipher-aes-xxx.yaml/yml
示例合规DataId:cipher-aes-application-secret.yml
2.2 完整加解密流程
- 发布配置:Nacos识别
cipher-aes-前缀 → 匹配加载的aes加密插件 → 插件自动生成专属数据密钥、加密配置明文 → 密文存入content、密钥存入数据库encrypted_data_key - 读取配置:识别前缀 → 调取同名AES插件 → 读取库内encrypted_data_key密钥 → 自动解密返回业务明文
- 兜底规则:无前缀=普通明文配置;有前缀、无对应AES插件=告警日志、原样返回明文,不加密不解密
三、数据库前置要求(必执行,缺失直接加密失效)
加密功能依赖4张核心表encrypted_data_key密钥字段,低版本Nacos需手动执行SQL新增字段,高版本新建集群自带字段;
MySQL标准化补齐SQL(直接复制执行):
sql
ALTER TABLE config_info ADD COLUMN `encrypted_data_key` varchar(1024) NOT NULL DEFAULT '' COMMENT '密钥';
ALTER TABLE config_info_beta ADD COLUMN `encrypted_data_key` varchar(256) NOT NULL DEFAULT '' COMMENT 'encrypted_data_key';
ALTER TABLE config_info_gray ADD COLUMN `encrypted_data_key` varchar(256) NOT NULL DEFAULT '' COMMENT 'encrypted_data_key';
ALTER TABLE his_config_info ADD COLUMN `encrypted_data_key` varchar(1024) NOT NULL DEFAULT '' COMMENT '密钥';
校验标准 :加密配置入库后,此字段非空,为空则加密完全不生效(你当前环境核心问题)
四、适配你环境:AES加密插件全流程部署(贴合你本地编译+Docker Nacos)
4.1 插件源码说明
官方源码仓库:https://github.com/nacos-group/nacos-plugin/releases
本次使用模块:nacos-encryption-plugin-ext/nacos-aes-encryption-plugin
插件算法标识:aes(对应前缀cipher-aes-)
4.2 本地编译插件(你已执行,归档标准命令)
目录:C:\Users\fei\Downloads\nacos-plugin-2.3.x.1\nacos-aes-encryption-plugin
打包命令(跳过测试):
bash
mvn clean package -Dmaven.test.skip=true
打包产物:target/nacos-aes-encryption-plugin-1.0.0-SNAPSHOT.jar
4.3 本地Maven安装Jar(供SpringBoot客户端依赖)
进入target目录,Windows CMD执行安装命令,打入本地maven仓库:
bash
mvn install:install-file -Dfile=nacos-aes-encryption-plugin-1.0.0-SNAPSHOT.jar -DgroupId=com.alibaba.nacos -DartifactId=nacos-aes-encryption-plugin -Dversion=1.0.0-SNAPSHOT -Dpackaging=jar
坐标固定,后续项目依赖必须完全一致,不可改动
4.4 Docker Nacos服务端部署插件
- 本地Jar拷贝至Nacos容器plugins目录(替换你的容器ID:45ab5bd968ef)
# 本地windows拷贝到docker nacos容器plugins目录 docker cp C:\Users\fei\Downloads\nacos-plugin-2.3.x.1\nacos-plugin-2.3.x.1\nacos-encryption-plugin-ext\nacos-aes-encryption-plugin\target\nacos-aes-encryption-plugin-1.0.0-SNAPSHOT.jar 45ab5bd968ef:/home/nacos/plugins/ - 容器内授权Jar可读权限(防止插件加载失败)
docker exec -it 45ab5bd968ef bash chmod 644 /home/nacos/plugins/nacos-aes-encryption-plugin-1.0.0-SNAPSHOT.jar - 重启Nacos加载插件(单机模式)
cd /home/nacos/bin sh shutdown.sh sh startup.sh -m standalone - 校验插件加载:日志检索 aes 关键字,出现load aes插件即为生效
4.5 SpringBoot客户端引入依赖(固定坐标,不可修改)
pom.xml依赖,客户端必须加载同一份编译插件,否则无法解密、只能读取密文:
xml
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-aes-encryption-plugin</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>

硬性要求:服务端plugins Jar包、客户端maven依赖Jar包,必须为同一编译包,版本、字节码完全一致