Nacos配置安全最佳实践

本文深入探讨了Nacos配置的安全性,包括自建Nacos和阿里云MSE的配置安全原理,提出配置安全最佳实践。重点讨论了客户端认证鉴权、控制台安全、服务器间通信安全以及持久化层保护措施,建议使用ECS角色进行认证以增强安全性,并给出了定期修改密码和制定安全预案的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介: 本文讨论了自建Nacos和阿里云MSE的配置安全原理。并提出配置安全最佳实践。

作者:鲁严波

前言

 

配置管理作为软件开发中重要的一环,肩负着连接代码和环境的职责,能很好的分离开发人员和维护人员的关注点。

 

Nacos的配置管理功能就很好地满足了云原生应用对于配置管理的需求:既能做到配置和代码分离,也能做到配置的动态修改。

 

在1月份,Nacos出了一个安全漏洞,外部用户能够伪装为Nacos-server来获取/修改配置( https://github.com/alibaba/nacos/issues/4593 )。确认问题后,Nacos火速修复了漏洞,而阿里云的微服务引擎(MSE)也已在1月末将修复方案反向移植到MSE上的Nacos实例上。

 

在本文中,我们将会从全局视角入手,讨论如何才能保证Nacos配置的安全性(security),即如何保证配置信息不被恶意用户获取或者泄漏。

Nacos配置架构

 

Nacos配置部分的整体架构如下:

 

对于上图中的每一条链路,都需要考虑有没有两个基本的安全动作:认证(Identification)和鉴权(Authentication)

 

从上图可以看到,配置信息可能的泄漏方式有:

 

  1. 通过Nacos-client获取配置
  2. 通过控制台获取配置
  3. 通过服务器之间的通信协议获取配置
  4. 直接访问持久化层(比如DB)获取配置
  5.  

可能的泄漏点如下:

 

认证

鉴权

Nacos 客户端

未登录用户通过客户端获取/修改配置

用户通过客户端获取/修改了未授权的配置

配置控制台

未登录用户通过控制台获取/修改配置

用户通过控制台获取/修改了未授权的配置

Nacos集群内

用户伪装为Nacos集群获取/修改配置

不需要

持久化层

用户直接查DB,获取/修改配置

不需要

 

Nacos客户端场景的认证和鉴权

 

在Nacos客户端尝试从服务端获取配置时,服务端需要确认客户端的身份,并确认该身份有权限获取配置。

 

开源版本的Nacos

 

在默认的Nacos server配置中,不会对客户端鉴权,即任何能访问Nacos server的用户,都可以直接获取Nacos中存储的配置。比如一个黑客攻进了企业内网,就能获取所有的业务配置,这样肯定会有安全隐患。

 

所以需要先开启Nacos server的鉴权。在Nacos server上修改application.properties中的nacos.core.auth.enabled值为true即可:

 

nacos.core.auth.enabled=true

 

如上设置后,Nacos客户端获取配置时,需要设置上对应的用户名和密码,才能获取配置:

String serverAddr = "{serverAddr}";
Properties properties = new Properties();
properties.put("serverAddr", serverAddr);
properties.put("username","nacos-readonly");
properties.put("password","nacos");
ConfigService configService = NacosFactory.createConfigService(properties);

 

上面讲了如何认证用户,即如何确定现在是哪一个用户在访问,但还需要识别用户的权限,当用户访问没有权限获取对应配置的时候,比如库存服务尝试获取支付服务的配置时,就会失败。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值