Nacos配置安全最佳实践


前言



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

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

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

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

Nacos 配置架构


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

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

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

  • 通过 Nacos-client 获取配置。

  • 通过控制台获取配置。

  • 通过服务器之间的通信协议获取配置。

  • 直接访问持久化层(比如 DB)获取配置。

可能的泄漏点如下:


认证

鉴权

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);

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

我们可以在开源的 Nacos 控制台上创建用户、设置权限。步骤如下:

首先,访问 localhost:8848/nacos 并登录,在 权限控制->用户列表 页面,添加用户:

权限控制->角色管理,绑定用户和角色:


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nacos 是一个开源的分布式配置中心和服务发现平台,它提供了统一的配置管理和服务发现功能,让应用的配置和服务注册更加简单和可靠。以下是 Nacos 配置中心的所有知识点: 1. Nacos 配置中心的概述:介绍 Nacos 配置中心的定义、作用、特点和优势等。 2. Nacos 配置中心的架构:介绍 Nacos 配置中心的架构和组件,包括 Nacos Server、Nacos Client、Nacos Config、Nacos Console 等。 3. Nacos 配置中心的安装和部署:介绍 Nacos 配置中心的安装和部署方法,包括单机部署和集群部署等。 4. Nacos 配置中心的配置管理:介绍 Nacos 配置中心的配置管理功能,包括配置发布、配置获取、配置监听等。 5. Nacos 配置中心的配置规则:介绍 Nacos 配置中心的配置规则,包括命名空间、数据 ID、分组、配置格式等。 6. Nacos 配置中心的配置集管理:介绍 Nacos 配置中心的配置集管理功能,包括创建配置集、删除配置集、配置集合并等。 7. Nacos 配置中心的配置推送:介绍 Nacos 配置中心的配置推送功能,包括配置推送的方式、推送的触发条件、推送的效果等。 8. Nacos 配置中心的配置变更:介绍 Nacos 配置中心的配置变更功能,包括配置变更的记录、变更的回滚、变更的通知等。 9. Nacos 配置中心的配置加密:介绍 Nacos 配置中心的配置加密功能,包括加密的配置数据、加密的密码管理、加密的数据传输等。 10. Nacos 配置中心的配置备份和恢复:介绍 Nacos 配置中心的配置备份和恢复功能,包括备份的方式、恢复的方法、备份的周期等。 11. Nacos 配置中心的配置权限管理:介绍 Nacos 配置中心的配置权限管理功能,包括配置的读写权限、配置的管理权限、权限的授权等。 12. Nacos 配置中心的配置存储和缓存:介绍 Nacos 配置中心的配置存储和缓存机制,包括配置数据的存储方式、缓存的策略、缓存的更新机制等。 13. Nacos 配置中心的配置扩展:介绍 Nacos 配置中心的配置扩展功能,包括扩展的插件、扩展的接口、扩展的实现方式等。 14. Nacos 配置中心的最佳实践:介绍 Nacos 配置中心的最佳实践,包括配置的设计原则、配置的管理策略、配置的使用技巧等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值