MSE Nacos 配置安全最佳实践|学习笔记(二)

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
注册配置 MSE Nacos/ZooKeeper,182元/月
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
简介: 快速学习 MSE Nacos 配置安全最佳实践

开发者学堂课程【MSE Nacos配置安全最佳实践MSE Nacos 配置安全最佳实践】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/969/detail/14890


MSE Nacos 配置安全最佳实践


六、防护攻击手段

1、开源 Nacos 鉴权

Nacos提供的配置鉴权能力其实是关闭的,开启鉴权的话只需要修改配置信息即可。

开启鉴权之前,application properties中的配置信息为:

### If turn on auth system:

nacos.core.auth.enabled=false

开启鉴权之后,application properties中的配置信息为:

### If turn on auth system:

nacos.core.auth.enabled=true

同时开源的 Nacos也提供了一些鉴权相关的配置参数。

name

description

 

NACOS_AUTH_ENABLE

是否开启权限系统

默认:false

NACOS AUTH TOKEN EXPIRE SECONDS

token 失效时间

默认:18000

NACOS AUTHTOKEN

token

默认:

SecretKev0123456789012345678901

NACOS AUTH CACHE ENABLE

权限缓存开关,开启后权限缓存的更新默认有15秒的延迟

默认:false

 

Nacos server开启鉴权之后,客户端肯定不能不加认证信息就进行访问了。那么 Nacos客户端里面需要去配置上这么两个值,一个是user name,一个是password。

在构建“Properties”类时,需传入用户名和密码。

properties.put("username","${username}" ) ' properties.put("password","${password}");

示例代码

try {

// Initialize the configuration service, and the console automatically obtains the

String serverAddr="{serverAddr}":

Properties properties=newProperties): properties.put("serverAddr",serverAddr);

I/ if need username and password to login

properties.put("username","nacos"); properties.put("password" “nacos");

ConfigService configService=NacosFactory.createConfigService(properties);

} catch(NacosException e){

// ToDO Auto-generated catch block e.printStackTrace();}

总结一下,第一是服务端打开开关,第二点是客户端加上一些默认的访问配置,这里是user name和password的:

Properties properties=new Properties(); properties.put("serverAddr",serverAddr); properties.put("username""nacos");

properties.put("password","nacos");

2.MSE 商业化提供的鉴权行为。

首先MSE提供的 Nacos也是默认不开启鉴权的,需要用户手动的去打开鉴权的开关,同时它会发生一次重启。

紧接着因为商业化的Nacos,商业化的MSE Nacos,它是背后的鉴权系统,它是跟RAM进行结合的,所以需要用户来到ram的控制台,去配置上一段自定义的权限策略。打开完开关,配置上RAM鉴权之后,就可以把刚才RAM配置生成的 Aksk在客户端SDK,也就是开源的 Nacos SDK当中去进行设置。

总结一下,第一点是开启RAM鉴权,再分为两点,第一点是打开MSE Nacos的一个鉴权开关,还要去RAM控制台当中去配置权限,去生成一个有对应权限的aksk,之后需要用户对现有的代码进行改造,把 ak和sk去设置到代码当中。

客户端:

Properties properties=new Properties(); properties.put(serverAddr",serverAddr); properties.put(“accessKey","xocx"); properties.put("accessSecret"“xxxx");

3.对比

对比MSE提供的商业化Nacos鉴权方案和开源max鉴权方案,主要是从6个层面。

图片3.png

安全性MSE Nacos的安全性是要高于开源Nacos的,首先,商业化的MSE Nacos鉴权,它是依托于RAM系统的,而RAM系统它的内核实现是经过了很多个原产品的一个验证。

其次开源Nacos提供的鉴权方案,它是一个开源方案,它可以被攻击者能够看到源代码,更容易被攻击者去研究出漏洞。而商业化这边能够做到的是跟开源对齐,但是鉴权这套方案完全是阿里云的一套方案,所以它的安全性是要比开源要好的。

企业级特性。这里要涉及到刚才介绍的开源 Nacos,它是使用 user name和password这样的简单的 Tv来做权限管控的,而MSE Nacos是依托于RAM系统,它可以去设置非常丰富的用户组,用户权限有一个非常完善的系统,它的权限力度也可以控制的非常细,所以说 MSE Nacos它是更具备一个丰富的企业级特性的。

元亲和性。如果某一个用户使用了一个阿里云非常多的云产品,那么它会非常青睐这种aksk的方案,同一个aksk它可以配置上n个权限,而如果一个用户他习惯了使用这套方案,转而去使用开源Nacos,它只提供了 user namepassword的形式的话,它就会造成一个技术方案的不对齐。

性能。所以说MSE Nacos提供的这一套aksk的方案,也是原综合性非常高的一套方案。

经过实际的压测发现 MSE Nacos是完全可以做到跟不开启鉴权,几乎性能没有下降,也就是说它的性能是非常高的。而开源 Nacos目前提供的鉴权方案,发现一些极端的case,它是会导致CPU的急速飙升的,那么这一点也已经反馈给了开源社区,但是目前还没有实质性的一个修复。

鉴权粒度。MSE Nacos和开源 Nacos目前支持的权限力度都是命名空间级别,未来也会视用户的一个反馈来制定说MSE Nacos到底要不要支持到 data ID级别。

鉴权方式。MSENacos使用的是一个aksk的方案,而开源Nacos它使用的是一个用户名和密码的方案,但是值得一提的一点是MSE Nacos它还提供了基于ecs的RAM方式,那么这种方式是一种比较高级的。

虽然配置麻烦,同时它也保障了更高的一个安全等级。这样的话去省去了aksk的一个轮转,以及aksk它泄密之后带来的损失。


七、鉴权演示

首先是来到MSE的控制台,要进行MSE Nacos的鉴权,首先得有一个集权,那么我这里已经提供提供了一个三节点的 network集群,注意它的版本是1.21版本,点击进入参数设置,那么默认购买的1.21版本的 Nacos,这个参数是关闭的,那么需要用户手动的对它进行开启。

那么开启之后它会进行一次重启,那么耐心等待大概5分钟之后重启完毕,那么集群就具备一个鉴权能力了。

如果Nacos是在线上运行着的,请慎重的去打开开关。因为开启此开关之后,原本可以访问通的这些客户端,不加上aksk就没法访问了。所以说这个功能如果是运行中的Nacos,就一定要慎重的去对待,不要轻易的打开。如果是一个新的Nacos,那么可以肆无忌惮的去体验。此时已经是一个开启之后的状态了。

那么之后回到代码当中

public class NacosConfigDemo (

public static void main(Stringl] args) throws NacosException, InterruptedException (

String serverAddr ="mse-55e84ab0-p.nacos-ans.nse.aliyuncs.com:8848";

Properties properties = new Properties();

properties.put(PropertyKeyConst.SERVER_ADDR, serverAddr);//properties.put(PropertyKeyConst.ACCESS_KEY,、"xxxxx");//properties.put(PropertyKeyConst.SECRET_KEY,"PqQ0M7FDVrtNCnfkFV6PHxDAM0jbRL");

NacosConfigServiceconfigService = new NacosConfigService(properties);

String config = configService.getConfig( datald:"mse.nacos.auth.test.1", group: "DEFAULT_GROUP”, timeoutMs:3000);System.out.println("get config:"+ config);

这段程序演示了一个 Nacos配置的 demo,可以发现通过配置上MSE Nacos的一个地址,不加aksk去访问开启了鉴权的MSE Nacos就会显示异常。

开启鉴权,需要来到RAM的控制台,去给它加上对应的用户,并且配置上相应的权限。

事先准备好了一个用户,看一下权限,配置上了 Nacos的读写权限,并且是针对于 n6w22实例的,也就是说拥有了权限的aksk它可以完全的去对实例 MSE Nacos实例去进行读写。

将这一段aksk赋予到他的客户端当中的话,再来访问一次,这里已经正确的获取到了配置了,可以来到MSE的控制台,对配置进行一下验证。

事先在这准备好一个data ID正常的或被的代码获取到,那么另外一点就是 MSE提供的商业化的控制台,登录之后无需担心访问的鉴权问题,这个是由MSE云产品去保障的。


八、微服务框架接入 MSE Nacos

刚才介绍的是一些原生的方式,就是原生使用 Nacos的SDK如何进行鉴权的访问,而在更多场景下,其实是将 Nacos作为了微服务框架的一个配置中心去使用的,那么典型的就是两款大 rpc框架或者叫微服务框架, double和视频cloud,他们是如何去支持这种aksk的,那么在根据前文去介绍的,通过RAM系统去拿到 aksk之后,可以向下文的方式去配置到的application点practice当中,那么在原先的这个使用过程当中就完全不受到影响,只需要加上aksk的整个的使用体验就得到了提升,并且的安全防护级别也提升了一个档次。

具体代码如下:

1.Dubbo

dubbo.registryaddress=nacos://mse-xxnacos-ansmsealiyuncscom:8848 dubbo.config-centeraddress=nacos://mse-xx.nacos-

ans.msealiyuncs.com:8848?accessKey=xxx&secretKey=xxx

dubbometadata-reportaddress=nacos://mse-xxnacos

ans.msealiyuncs.com:8848?accessKey=xxx&secretKey=xxx

2.SpringCloud

spring.cloudnacos.configaccess-key=xx spring.cloudnacos.config.secret-key=xx


九、MSE Nacos 安全的最佳实践

第一点,测试集群配置是虽然可以打开公网,但是一定注意要配置上相应的一个acl就是允许哪一些IP段进行访问。

第二点,线上集群是强烈不建议大家去开通公网的,只需要去申请一个内网就行了。也就是说公网白名单这样的一个功能仅限于测试集群使用,尽最大的程度去避免黑客的攻击。

第三点,在使用 Nacos鉴权的时候,一定要打开鉴权开关,不要觉得麻烦,一定是有意义的。

第四点,在RAM当中对不同的aksk可以分配最小力度的权限。最典型的就是一些应用,它可能是指读取配置,那么可以分配给他一个只读的一个aksk 。一些应用它是一些核心应用,它需要涉及到配置的变更,那么可以分配给他一个读写权限的 Aksk。

目前MSE Nacos的鉴权是仅仅针对于配置中心部分的,MSE Nacos的注册中心部分是不受影响的,那么在未来也会对MSE Nacos的注册中心部分提供这样的鉴权能力,使用方式跟配置中心也是一模一样的。

相关文章
|
1月前
|
人工智能 运维 Serverless
函数计算 × MSE Nacos : 轻松托管你的 MCP Server
本文将通过一个具体案例,演示如何基于 MCP Python SDK 开发一个标准的 MCP Server,并将其部署至函数计算。在不修改任何业务代码的前提下,通过控制台简单配置,即可实现该服务自动注册至 MSE Nacos 企业版,并支持后续的动态更新与统一管理。
554 43
|
4月前
|
人工智能 安全 Cloud Native
Nacos 3.0 架构升级,AI 时代更安全的 Registry
随着Nacos3.0的发布,定位由“更易于构建云原生应用的动态服务发现、配置管理和服务管理平台”升级至“ 一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台 ”。
|
2月前
|
监控 算法 Java
使用 MSE 流量防护轻松面对运行态流量不确定风险的最佳实践
本文深入分析了系统架构中因流量变化带来的稳定性风险,探讨了流量不确定性的两大根源及四种典型场景,并结合阿里云微服务引擎 MSE 的实际功能,演示了如何通过限流、熔断、热点防护和并发隔离等手段有效应对突发流量和依赖服务异常等问题。最后,文章提出了流量防护的最佳实践,强调“事前评估配置,事中观察调整,事后回溯优化”的全流程防护策略,为保障系统稳定性提供了全面解决方案。
111 0
|
6月前
|
人工智能 Kubernetes Nacos
Nacos 3.0 正式发布:MCP Registry、安全零信任、链接更多生态
Nacos 3.0 正式发布,作为云原生时代的基础设施级产品,不仅提升了技术能力,还以更高效、安全的方式帮助用户构建云原生AI应用架构。此次升级包括MCP Registry,围绕MCP服务管理,支持多种类型注册(如MCP Server、编排、动态调试和管理),并提供Nacos-MCP-Router实现MCP动态发现与自动安装代理。安全性方面,默认开启鉴权,并支持动态数据源密钥等零信任方案。此外,Nacos 3.0 还强化了多语言生态,覆盖主流开发语言(Python、GoLang、Rust等),并与K8S生态打通,面向全场景提供统一管理平台。
1160 96
Nacos 3.0 正式发布:MCP Registry、安全零信任、链接更多生态
|
3月前
|
人工智能 Kubernetes Cloud Native
MSE Nacos Controller:为 Kubernetes 生态构建配置管理与服务发现的桥梁
在企业云原生转型过程中,如何实现传统微服务与 Kubernetes 服务的配置统一管理、服务互通及协议转换成为关键挑战。MSE Nacos Controller 应运而生,作为连接 Kubernetes 与 Nacos 的桥梁,支持 ConfigMap 与 Nacos 配置双向同步、服务自动注册发现,并助力 Higress 等 MCP 网关实现 REST API 向 AI 可调用 MCP 服务的转换,全面提升系统治理能力与智能化水平。
386 32
|
7月前
|
人工智能 Kubernetes 安全
Nacos 3.0 正式发布:MCP Registry、安全零信任、链接更多生态
Nacos 3.0正式发布,作为云原生时代的基础设施级产品,不仅提升了技术能力,还以更高效、安全的方式帮助用户构建云原生AI应用架构。此次更新重点包括:升级MCP Registry,支持多种类型注册与动态管理;增强安全架构,默认开启鉴权并支持零信任方案;扩展多语言生态,覆盖Python、GoLang、Rust等主流开发语言;提供Nacos-MCP-Router实现MCP动态发现与自动安装。此外,3.0版本改进了安全部署架构,加强K8S生态同步,并推出实验性功能如分布式锁和服务配置模糊订阅。Nacos致力于简化微服务管理和AI应用开发,欢迎加入社区共建!
1260 43
|
7月前
|
存储 安全 Nacos
阿里云 MSE Nacos 发布全新“安全防护”模块,简化安全配置,提升数据保护
阿里云在其微服务引擎(MSE)注册配置中心 Nacos 上正式推出全新“安全防护”功能模块,旨在帮助企业用户有效管理安全状态和降低开启安全相关功能的学习成本,提升微服务架构的安全性。
326 25
|
11月前
|
安全 算法 Java
MSE Nacos 2.3.2.0 发布,性能最多提升三倍,支持操作审计等安全特性
MSE Nacos 是阿里云推出的托管式注册配置中心。它基于阿里云开源产品 Nacos 构建,100% 兼容开源协议,同时在稳定性、安全性、性能、易用性等方面做了增强。不久前,我们发布了 MSE Nacos 2.3.2.0 版本,在性能、安全性方面大幅升级。
348 85
|
人工智能 安全 Nacos
MSE 企业版:全面拥抱 AI,SLA 99.99%,零信任安全
微服务引擎注册配置中心铂金版正式发布,支持Nacos 3.0 MCP服务动态注册与调优,提供比专业版更高的稳定性与安全能力,SLA达99.99%,服务推送性能提升300%。针对关键业务,铂金版通过独享核心资源实现更高规格配额,满足大规模需求。此外,新增MCP动态注册、HTTP服务转换、实时更新调优等功能,并强化数据源管理与安全能力,助力企业应对复杂业务挑战。
|
8月前
|
安全 Java API
Nacos 3.0 Alpha 发布,在安全、泛用、云原生更进一步
Nacos 3.0 Alpha 发布,在安全、泛用、云原生更进一步
237 0

热门文章

最新文章