近期,Nacos 社区发布了首个 3.0 版本 Nacos 3.0-ALPHA。这个版本的一大核心改进点,是对安全性和标准化能力的显著提升。
在实际的分布式系统中,一个API接口往往会面临多种调用场景。我们可以参考下图来理解:在一个业务系统中,服务A的某个API接口可能被来自不同角色、不同场景的调用方访问。

在日常开发中,一个API接口通常面临以下几种调用情况:
- 被同一系统内的其他服务调用;
- 被不同系统的服务调用;
- 被公司内部的运维系统调用;
- 被控制台通过命令行工具调用;
- 被可视化管理页面调用;
- 被公司外部的第三方系统调用。
试想一下,当内部服务、外部系统、运维工具、管理页面都使用同一种认证机制和接口契约时,会带来多大的安全隐患?显然,这种“一刀切”的方式既不安全,也不够灵活。
在 Nacos 3.0 之前,其API大致分为两类:一类供系统间调用,一类供运维管理。这种分类相对粗放,难以满足不同场景下对安全性和访问控制的精细化需求。
为此,Nacos 3.0-ALPHA 版本对API进行了更精细的重新划分,主要分为四类,如下图所示:

这种设计使得API的管理变得更加灵活,能够更好地适应不同用户和场景的特定需求。基于这种划分方式,Nacos 3.0-ALPHA 为不同类型的API匹配了不同的默认认证策略:
- 对于集群内部访问和运维人员访问的API,默认使用
ServerIdentity 机制进行身份验证;
- 对于Nacos控制台UI访问的API,默认采用用户名和密码进行身份与权限校验;
- 对于客户端和应用程序访问的API,则默认不开启安全认证。
这种按角色、按场景划分API并匹配不同安全策略的设计思路,不仅极大地提升了API调用的安全性,也在易用性上取得了很好的平衡。它为我们在设计和管理自身系统的API时,提供了一个非常值得借鉴的参考范例。对于正在构建或维护微服务架构的开发者而言,深入理解这种设计理念,有助于打造更安全、更健壮的系统。
如果你对这类技术架构的深度解析感兴趣,欢迎到云栈社区与其他开发者交流探讨。
|