最近线上发生的几个坑

最近线上发生的几个坑

黑帐篷的毡片

某天的下午工作时间,我听着轻音乐在写业务(其实是在摸鱼),突然看到群里风控小组有人@我,内心惊呼:难道项目出问题了?打开文件查看,原来是 Nacos 的问题。

煮茶的残火

问题 1:

Nacos 竟然没有配置权限认证!,这个错误属实不应该,只能屁颠屁颠去改了。其实操作起来也简单,本项目 Nacos 是单机版,直接修改 Nacos 中的 conf 文件夹下面的 application.properties 配置文件。

官方文档是这么描述的:

注意

  • Nacos 是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境,防止带来安全风险。
  • Nacos 提供简单的鉴权实现,为防止业务错用的弱鉴权体系,不是防止恶意攻击的强鉴权体系。
  • 如果运行在不可信的网络环境或者有强鉴权诉求,请参考官方简单实现做替换增强。

服务端开启鉴权

nacos.core.auth.enabled=true

yml 配置文件 nacos 配置项中添加如下配置:

nacos.config.username: xxx
nacos.config.password: xxx

开启服务身份识别功能

开启鉴权功能后,服务端之间的请求也会通过鉴权系统的影响。考虑到服务端之间的通信应该是可信的,因此在1.2~1.4.0版本期间,通过User-Agent中是否包含Nacos-Server来进行判断请求是否来自其他服务端。

但这种实现由于过于简单且固定,导致可能存在安全问题。因此从1.4.1版本开始,Nacos添加服务身份识别功能,用户可以自行配置服务端的Identity,不再使用User-Agent作为服务端请求的判断标准。

开启方式:

### 开启鉴权
nacos.core.auth.enabled=true

### 关闭使用user-agent判断服务端请求并放行鉴权的功能
nacos.core.auth.enable.userAgentAuthWhite=false

### 配置自定义身份识别的key(不可为空)和value(不可为空)
nacos.core.auth.server.identity.key=example
nacos.core.auth.server.identity.value=example

冬天的雪花

问题 2:

​ Nacos 未开启访问权限控制,导致没有对用户输入的数据进行全面安全检查或过滤 ,没有进行访问权限的过滤。

如图所示:
在这里插入图片描述

修改方案同上,或者升级 Nacos 到安全稳定的版本并开启权限控制 。

猜你喜欢

转载自blog.csdn.net/Greenarrow961224/article/details/118970606