《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(1)

本文涉及的产品
访问控制,不限时长
简介: 阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代

本文来源于阿里云社区电子书《阿里云产品四月刊》


Apache RocketMQ ACL 2.0 全新升级

引言

RocketMQ    作为一款流行的分布式消息中间件,被广泛应用于各种大型分布式系统和微服务中,承担着异步通信、系统解耦、削峰填谷和消息通知等重要的角色。随着技术的  演进和业务规模的扩大,安全相关的挑战日益突出,消息系统的访问控制也变得尤为重  要。然而,RocketMQ 现有的 ACL 1.0 版本已经无法满足未来的发展。

 

因此,我们推出了 RocketMQ ACL 2.0 升级版,进一步提升 RocketMQ 数据的安全性。本文将介绍 RocketMQ ACL 2.0 的新特性、工作原理,以及相关的配置和实践。

 

  1. 升级的背景

 

ACL 1.0 痛点问题

image.png

 

 

 

RocketMQ ACL 1.0 的认证和授权流程如图所示,在使用过程中,存在着以下痛点问题:

 

  • 绕过访问控制的 IP 白名单:在标准安全实践中,IP 白名单通常用于限制客户端只能从特定 IPIP 段访问资源。然而,ACL 1.0 中,IP 白名单被异常用于绕过鉴权验证的手段,   偏离了标准实践中的安全意图。这种设计上的偏差可能造成潜在的安全隐患,特别是在公网场景中,多个客户端共享同一个 IP 的情况下,会导致未授权的 IP 地址绕过正常的访问控制检查对集群中的数据进行访问。

 

  • 缺乏管控 API 精细化控制:RocketMQ 提供了 130 多个管控 API,支持了集群配置,TopicGroup 的元数据管理,以及消息查询、位点重置等操作。这些操作涉及到敏感数据的处理,以及影响系统的稳定性。因此,根据用户不同角色或职责,  精确定义可访问的 API 和数据范围变得至关重要。然而,ACL 1.0 仅对其中 9API 进行了支持,包括 TopicGroup 元数据,以及 Broker 配置,剩下的 API可能被攻击者利用,对系统进行攻击,窃取敏感的数据。此外,要实施对这么多的  管控 API 进行访问控制,现有的设计会导致大量的编码工作,并且在新增 API也增加了遗漏的风险。

 

  • 缺少集群组件间访问控制:在 RocketMQ 架构中,涵盖了 NameServerBroker 主从节点、Proxy 等多个关键组件。目前,这些组件之间的互相访问缺失了关键的的权限验证机制。因此,一但旦在集群外自行搭建 Broker 从节点或 Proxy 组件, 便可以绕过现有的安全机制,访问并获取集群内的敏感数据,这无疑给系统的数据    安全和集群的稳定性造成巨大的威胁。

 

 

  1. 特性与原理

 

ACL 2.0 新特性

image.png

 

RocketMQ ACL 2.0 针对 ACL 1.0 中的问题进行了解决,同时还带来了六个主要的新特性,具体如下:

 

  • 精细的 API 资源权限定义:ACL 2.0RocketMQ 系统中所有的资源都进行了定义,包括集群、命名空间、主题、消费者组,以实现对所有类型的资源进行独立的  访问控制。此外,它将所有的 API 都纳入权限控制范畴,覆盖了包括消息收发、集群管理、元数据等各项操作,确保所有资源的任何操作都施加了严格的权限控制。

 

  • 授权资源的多种匹配模式:在资源众多的集群环境中,为每个资源进行逐一授权会

 

带来繁复的配置过程和管理负担。因此,ACL  2.0  引入了三种灵活的匹配模式:完全匹配、前缀匹配,以及通配符匹配。这些模式可以让用户根据资源的命名规范和  结构特点,快速地进行统一的设定,简化权限的管理操作,提升配置的效率。

 

  • 支持集群组件间访问控制:由于将所有资源类型和 API 操作都纳入了访问控制体系, 集群内部组件之间的连接和访问也受到了权限控制,包括 Broker 主从之间的Leader 选举、数据复制的过程,以及 ProxyBroker 的数据访问等环节,这可以有效地避免潜在的数据泄露问题和对系统稳定性的风险,加强了整个集群的安全    性和可靠性。

 

  • 用户认证和权限校验分离:通过对认证和授权这两个关键模块进行解耦,系统可以    提供类似只认证不鉴权等方式的灵活选择,以适应各种不同场景的需求。此外, 两个组件可以分别演进、独立发展,从而诞生出多样的认证方式和先进的鉴权方法。

 

  • 安全性和性能之间的平衡:当启用 ACL 后,客户端的每次请求都必须会经过完整的认证和授权流程。这确保了系统的安全性,但同时也引入了性能上的开销。在 ACL

2.0   中,提供了无状态认证授权策略和有状态认证授权策略,来分别满足对安全有极致要求,以及安全可控但性能优先这两种不同的安全和性能需求。

 

  • 灵活可扩展的插件化机制:当前市场上,认证方式存在多种实现,授权方式也有不  同场景的定制需求。因此,ACL  2.0  设计了一套插件化的框架,在不同层面上进行接口的定义和抽象,以支持未来对认证和授权进行扩展,满足用户根据自身业务需  求定制和实现相应的解决方案。

 

《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(2)https://developer.aliyun.com/article/1554226

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
4天前
|
Cloud Native 关系型数据库 分布式数据库
《阿里云产品四月刊》—瑶池数据库云原生化和一体化产品能力升级
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
|
4天前
|
消息中间件 安全 Apache
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(2)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(2)
|
1天前
电子好书发您分享《2024年阿里云产品五月刊》
Markdown 格式摘要如下: ```markdown 📚 阅读电子书:《2024年阿里云产品五月刊》🚀 了解阿里云最新动态!🚀 [查看](https://developer.aliyun.com/ebook/8349/read?spm=a2c6h.26392459.ebook-detail.5.623e3988zLjRuZ) ![阿里云五月刊封面](https://ucc.alicdn.com/pic/developer-ecology/cok6a6su42rzm_3502a3b8ac6c41b2ac7150896d3df269.png) ```
21 6
|
2天前
|
自然语言处理
电子好书发您分享《阿里云产品2024年五月刊》
```markdown 《阿里云产品2024年五月刊》电子书分享:探索阿里云最新动态。[查看](https://developer.aliyun.com/ebook/8349/read?spm=a2c6h.26392459.ebook-detail.5.32203988v4X3Om) ``` 纯文本摘要: 《阿里云产品2024年五月刊》现已发布,详询阿里云最新产品和服务,请访问:https://developer.aliyun.com/ebook/8349/read?spm=a2c6h.26392459.ebook-detail.5.32203988v4X3Om
|
3天前
|
消息中间件 测试技术 RocketMQ
消息队列 MQ产品使用合集之在异步发送消息函数sendMessage()中出现了错误,错误代码为-3,该如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
3天前
|
消息中间件 网络协议 RocketMQ
消息队列 MQ产品使用合集之broker开启proxy,启动之后producer生产消息始终都只到一个broker,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
3天前
|
消息中间件 监控 Oracle
消息队列 MQ产品使用合集之启动Namesrv节点时,遇到报错,该如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
3天前
|
消息中间件 Java RocketMQ
消息队列 MQ产品使用合集之当SpringBoot应用因网络不通而启动失败时,该如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
3天前
|
消息中间件 监控 Java
消息队列 MQ产品使用合集之如何查看推送是否被限制
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
3天前
|
消息中间件 存储 开发工具
消息队列 MQ产品使用合集之C++如何使用Paho MQTT库进行连接、发布和订阅消息
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。

热门文章

最新文章

推荐镜像

更多