nacos开启鉴权与配置加密

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

一、Nacos漏洞复现

1.1.查看配置

1.2.查看用户列表

1.3.注册新用户

二、Nacos开启鉴权

三、变更配置与信息加密

1.变更配置

2.信息加密

四、增强安全性

五、常见问题

5.1.提示nacos启动异常

5.2 模块无法启动

5.3 提示缺少字段

总结


前言

        Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。使用 Nacos 简化服务发现、配置管理、服务治理及管理的解决方案,让微服务的发现、管理、共享、组合更加容易。随着nacos被广泛使用,也逐渐暴露一些的漏洞,官方给出了一些建议,具体需要用户自行维护。

本篇简单介绍实际运用过程遇到的问题,以及处理过程,以备后续参考

一、Nacos漏洞复现

在2.2.1之后的版本,默认不需要登录,直接就到的管理界面,所有信息一目了然,如果暴露在外网,使用默认端口,严重威胁到数据安全。虽然2.2.1的版本之前的版本有登录界面限制,一旦nacos没有开启权限认证,即nacos.core.auth.enabled = false,在这种情况下,通过一些请求就可以绕过nacos的权限认证。

这里列举常见的三种方式。

1.1.查看配置

在未登录的情况下,在浏览器中直接发起请求

http://127.0.0.1:18848/nacos/v1/cs/configs?dataId=&group=&appName=&config_tags=&pageNo=1&pageSize=10&tenant=&search=accurate&accessToken=&username=

这样直接可以看到返回了配置列表,如图:

1.2.查看用户列表

在未登录的情况下,在浏览器中直接发起请求,能拿到所有的用户信息。

http://127.0.0.1:18848/nacos/v1/auth/users?pageNo=1&pageSize=10

 同样的方式,也可以查询出所有的角色,如下图:

 提示:在2.2.1版本之后,已经直接报参数错误了

1.3.注册新用户

在未登录的情况下,通过第三方工具(postman或apifox)以post方式访问该请求,并传入指定参数,可以直接新增用户

http://127.0.0.1:18848/nacos/v1/auth/users?username=test&password=123456

 执行结果如下图:

二、Nacos开启鉴权

关于鉴权,官方文档:Authorization,相关参数说明如下:

接下来,介绍本如何按照文档来实现鉴权,这里以2.3.2版本为例,步骤如下:

修改nacos\conf文件夹下的application.properties文件中的部分属性

  • 开启鉴权

nacos.core.auth.enabled=true

  • 默认鉴权插件用于生成用户登陆临时accessToken所使用的密钥,这是采用base64生成,可以使用在线工具

Base64 在线编码解码 | Base64 加密解密 - Base64.us

在线加密解密

nacos.core.auth.plugin.nacos.token.secret.key=ZmF1bHRUb2tlblNlY30MjAyNDEwMTYxMTAzJldEtlebmFjb3NDb3JlQXV0aERlUNyZWF0ZUF

  • 用于替换useragent白名单的身份识别key和value

nacos.core.auth.server.identity.key=npsServerIdentity
nacos.core.auth.server.identity.value=customSecurity

 添加或修改后的配置如图:

全部配置好,无需重启nacos,刷新页面,很可能会出现下面的情况

此时,只需要关闭提示,点击用户名,登出,然后重新登录即可。

若后期还是会出现,那可能是因为在nacos的sql脚本中没有针对用户权限的数据录入 ,所以需要执行sql:

INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

按照上面的步骤设置好后,通过网页直接访问或postman的GET方式访问,都会被拒绝

三、变更配置与信息加密

1.变更配置

当nacos开启鉴权后,其它微服务会报错,而直接启动其他服务,其他服务也无法正常连接nacos,出现403错误,此时,需要再其他服务的配置文件中加上如下配置。

 spring.cloud.nacos.username=nacos

 spring.cloud.nacos.password=nacos

2.信息加密

从上图的配置可以看出,naocs以明文的形式出现,这样存在被泄露的风险,针对这种情况,可以采用jasypt加密,加密后效果,如图:

关于如何使用 jasypt加密,可以参考这里

四、增强安全性

  • 不采用默认端口,变更为端口
  • 设置只监听本地
  • 采用nginx代理,设置白名单
  • http {# ...upstream nacos_server {server nacos-server-ip:2838;}server {listen 1789;server_name nacos.example.com;location / {proxy_pass http://nacos_server;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 设置白名单allow 123.123.123.123; # 允许访问的 IPallow 234.234.234.234; # 可以添加更多允许的 IPdeny all; # 拒绝其他所有 IP}}# ...
    }

  • 开启防火墙,设置入站规则
  • 关闭登录界面

五、常见问题

5.1.提示nacos启动异常

若提示“com.alibaba.nacos.api.exception.NacosException: <html><body><h1>Whitelabel Error Page</h1><p>This application has no explicit mapping for /error, so you are seeing this as a fallback.</p><div id='created'>Thu Nov 14 17:04:16 CST 2024</div><div>There was an unexpected error (type=Forbidden, status=403).</div><div>unknown user!</div></body></html>”,导致无法启动的,需要检查账号密码是否正确

5.2 模块无法启动

若启动模块时,提示“Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true”,如图:

解决步骤:

检查bootstrap.yml是否配置了相关信息,即同名的bean覆盖,如下:

spring: main:allow-bean-definition-overriding: true

如果配置了,还是启动报错,可以采用在启动类加上配置来解决,示例代码:

@EnableDiscoveryClient
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
public class DemoApplication{public static void main(String[] args)  {SpringApplication application = new SpringApplication(DemoApplication.class);application.setAllowBeanDefinitionOverriding(true);application.run(args);    	}
}

5.3 提示缺少字段

如果下载使用最新nacos,延用旧的数据库,在启动nacos可能会出现缺少字段提示

Unknown column 'encrypted_data_key' in 'field list'

 此时,需要分别在3张表添加该字段

ALTER TABLE config_info ADD COLUMN `encrypted_data_key` text NOT NULL  COMMENT '秘钥' ;

ALTER TABLE config_info_beta ADD COLUMN `encrypted_data_key` text NOT NULL COMMENT '秘钥' ;

ALTER TABLE his_config_info ADD COLUMN `encrypted_data_key` text NOT NULL COMMENT '秘钥' ;

总结

低版本的nacos很有必要升级,或者开启鉴权,以保证数据安全,特别是1.x版本升级到2.0至关重要。nacos作为开源的项目,在实际运用中尽量少采用默认的配置,以提高nacos的安全性。

如果你还知道其他问题,欢迎补充或更正。 

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

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

相关文章

AI Large Language Model

AI 的 Large Language model LLM , 大语言模型&#xff1a; 是AI的模型&#xff0c;专门设计用来处理自然语言相关任务。它们通过深度学习和庞大的训练数据集&#xff0c;在理解和生成自然语言文本方面表现出色。常见的 LLM 包括 OpenAI 的 GPT 系列、Google 的 PaLM 和 Meta…

前端三剑客(二):CSS

目录 1. CSS 基础 1.1 什么是 CSS 1.2 语法格式 1.3 引入方式 1.3.1 行内样式 1.3.2 内部样式 1.3.3 外部样式 1.4 CSS 编码规范 2. 选择器 2.1 标签选择器 2.2 id 选择器 2.3 class 选择器(类选择器) 2.4 复合选择器 2.5 通配符选择器 3. 常用 CSS 样式 3.1 c…

华为Ensp模拟器配置OSPF路由协议

目录 简介 实验步骤 Pc配置 路由器配置 OSPF配置 交换机配置 简介 开放式最短路径优先 (OSPF) 协议深度解析 简介 开放式最短路径优先&#xff08;Open Shortest Path First, OSPF&#xff09;是一种内部网关协议&#xff08;IGP&#xff09;&#xff0c;用于在自治系统…

【C++】绘制内存管理的地图

生活是属于每个人自己的感受&#xff0c;不属于任何人的看法。 前言 这是我自己学习C的第二篇博客总结。后期我会继续把C学习笔记开源至博客上。 上一期笔记是关于C的类与对象础知识&#xff0c;没看的同学可以过去看看&#xff1a; 【C】面向对象编程的艺术之旅-CSDN博客https…

基于YOLOv8深度学习的医学影像骨折检测诊断系统研究与实现(PyQt5界面+数据集+训练代码)

本论文深入研究并实现了一种基于YOLOV8深度学习模型的医学影像骨折检测与诊断系统&#xff0c;旨在为医学影像中的骨折检测提供高效且准确的自动化解决方案。随着医疗影像技术的快速发展&#xff0c;临床医生需要从大量复杂的医学图像中精确、快速地识别病灶区域&#xff0c;特…

【vulhub】nginx解析漏洞(nginx_parsing_vulnerability)

1. nginx解析漏洞原理 fastcgi 在处理’.php’文件时发现文件并不存在,这时 php.ini 配置文件中cgi.fix_pathinfo1 发挥作用,这项配置用于修复路径,如果当前路径不存在则采用上层路径 (1)由于 nginx.conf的配置导致 nginx把以’.php”结尾的文件交给 fastcgi 处理,为此可以构造…

如何通过统一权限管理打破异构系统的安全屏障

企业在运营过程中面临着众多异构系统的整合挑战&#xff0c;这些异构系统由于其不同的技术架构、数据格式和安全机制等&#xff0c;给信息管理带来了诸多挑战。其中&#xff0c;“信息孤岛”问题尤为突出&#xff0c;而异构环境下的统一授权管理系统则成为解决这一问题的关键。…

阿里云IIS虚拟主机部署ssl证书

宝塔配置SSL证书用起来是很方便的&#xff0c;只需要在站点里就可以配置好&#xff0c;但是云虚拟主机在管理的时候是没有这个权限的&#xff0c;只提供了简单的域名管理等信息。 此处记录下阿里云&#xff08;原万网&#xff09;的IIS虚拟主机如何配置部署SSL证书。 进入虚拟…

Linux系列-僵尸状态

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 进程退出 进程退出之后&#xff0c;代码就不会执行了&#xff0c;而是由PCB维护起来&#xff0c;我们可以通过PCB来查看退出信息。 进程退出时首先可以立即释放的就是进程对应…

DBeaver中PostgreSQL数据库显示不全的解决方法

本文介绍在DBeaver中&#xff0c;连接PostgreSQL后&#xff0c;数据库显示不全的解决方法。 最近&#xff0c;在DBeaver中连接了本地的PostgreSQL数据库。但是连接后打开这个数据库时发现&#xff0c;其所显示的Databases不全。如下图所示&#xff0c;Databases只显示了一个pos…

pycharm中配置pyqt5

pycharm中配置pyqt5 Python提供了多种图形界面库&#xff0c;包括但不限于Tkinter、PyQt、wxPython、Kivy等。Tkinter由于其轻量级和跨平台特性&#xff0c;通常作为入门首选。PyQt和wxPython则提供了更多的控件和更强大的功能&#xff0c;适合于需要复杂用户界面的应用程序。…

SpringBoot+Vue 2 多方法实现(图片/视频/报表)文件上传下载,示例超详细 !

目录 一、主流方法介绍 1. Base 64 2. 二进制流传输 3. multipart/form-data 4. FTP/SFTP 5. 云存储服务API 二、multipart/form-data 方式上传单个文件 1、前端部分 2、后端部分 三、multipart/form-data 方式上传多个文件 1、前端部分 2、后端部分 四、Base 64 方…

数据库迁移--laravel进阶篇

本地开发中的数据库和线上发布的数据库是不一样的,每进行一个线上版本的更新,很可能也涉及大量数据库的改动,那么这些数据库的改动在laravel中可以使用数据库迁移来处理。 比如我想创建一张flights数据表 执行php artisan make:migration create_flights_table命令就能自动生…

uni-app 修改复选框checkbox选中后背景和字体颜色

编写css&#xff08;注意&#xff1a;这个样式必须写在App.vue里&#xff09; /* 复选框 */ /* 复选框-圆角 */ checkbox.checkbox-round .wx-checkbox-input, checkbox.checkbox-round .uni-checkbox-input {border-radius: 100rpx; } /* 复选框-背景颜色 */ checkbox.checkb…

java实现ModbusCRC16校验

1. 目的 电流数据采集器是RS485 Modbus协议&#xff0c;想通过java实现串口数据的采集&#xff0c;因为涉及到串口通信的CRC校验&#xff0c;所以需要通过java来实现对采集的电流值进行校验&#xff0c;确保每次读到的电流值都是正常的。 2. 什么是ModbusCRC16校验 Modbus协议…

aws上安装ssm-agent

aws-cloudwatch 连接机器 下载ssm-agent aws-ec2 安装ssm-agent aws-linux安装ssm-agent 使用 SSM 代理查找 AMI 预装 先运行&#xff1a;systemctl status amazon-ssm-agent 查看sshm-agent的状态。 然后安装提示&#xff0c;执行 systemctl start amazon-ssm-agent 启动即…

springboot+vue+SseEmitter数据流推送实战

业务场景 SseEmitter介绍 SseEmitter 是 Spring Boot 中用于实现服务器发送事件&#xff08;Server-Sent Events, SSE&#xff09;的一种机制。SSE 允许服务器向客户端推送实时数据&#xff0c;而不需要客户端频繁地发起请求。这对于实现实时通知、更新等场景非常有用。 Sse…

阿里云 DevOps 资源安全扫描实践

随着企业上云进程的加速&#xff0c;云资源的使用量日益增长&#xff0c;云环境中资源的安全性和稳定性成为了企业业务运营的关键要素 面对多样化的云资源和复杂的应用场景&#xff0c;传统的安全管理手段已无法完全满足企业日益严苛的安全需求。为了确保云上资源的安全性&…

python之sklearn--鸢尾花数据集之数据降维(PCA主成分分析)

python之sklearn–鸢尾花数据集之数据降维(PCA主成分分析) sklearn库&#xff1a;Scikit - learn&#xff08;sklearn&#xff09;是一个用于机器学习的开源 Python 库。它建立在 NumPy、SciPy 和 matplotlib 等其他科学计算库之上&#xff0c;为机器学习的常见任务提供了简单…

sourceInsight常用设置和功能汇总(不断更新)(RGB、高亮、全路径、鼠标、宏、TODO高亮)

文章目录 必开配置设置背景颜色护眼的RGB值&#xff1f;sourceInsight4.0中如何设置选中某个单词以后自动高亮的功能&#xff1f;sourceinsight中输入设置显示全路径&#xff1f; 常用sourceInsight4.0中文乱码怎么解决&#xff0c;注意事项是什么&#xff1f;如何绑定鼠标中键…