本文来源于阿里云社区电子书《阿里云产品四月刊》
Apache RocketMQ ACL 2.0 全新升级
引言
RocketMQ 作为一款流行的分布式消息中间件,被广泛应用于各种大型分布式系统和微服务中,承担着异步通信、系统解耦、削峰填谷和消息通知等重要的角色。随着技术的 演进和业务规模的扩大,安全相关的挑战日益突出,消息系统的访问控制也变得尤为重 要。然而,RocketMQ 现有的 ACL 1.0 版本已经无法满足未来的发展。
因此,我们推出了 RocketMQ ACL 2.0 升级版,进一步提升 RocketMQ 数据的安全性。本文将介绍 RocketMQ ACL 2.0 的新特性、工作原理,以及相关的配置和实践。
ACL 1.0 痛点问题
RocketMQ ACL 1.0 的认证和授权流程如图所示,在使用过程中,存在着以下痛点问题:
- 绕过访问控制的 IP 白名单:在标准安全实践中,IP 白名单通常用于限制客户端只能从特定 IP 或 IP 段访问资源。然而,ACL 1.0 中,IP 白名单被异常用于绕过鉴权验证的手段, 偏离了标准实践中的安全意图。这种设计上的偏差可能造成潜在的安全隐患,特别是在公网场景中,多个客户端共享同一个 IP 的情况下,会导致未授权的 IP 地址绕过正常的访问控制检查对集群中的数据进行访问。
- 缺乏管控 API 精细化控制:RocketMQ 提供了 130 多个管控 API,支持了集群配置,Topic、Group 的元数据管理,以及消息查询、位点重置等操作。这些操作涉及到敏感数据的处理,以及影响系统的稳定性。因此,根据用户不同角色或职责, 精确定义可访问的 API 和数据范围变得至关重要。然而,ACL 1.0 仅对其中 9 个API 进行了支持,包括 Topic、Group 元数据,以及 Broker 配置,剩下的 API 有可能被攻击者利用,对系统进行攻击,窃取敏感的数据。此外,要实施对这么多的 管控 API 进行访问控制,现有的设计会导致大量的编码工作,并且在新增 API 时也增加了遗漏的风险。
- 缺少集群组件间访问控制:在 RocketMQ 架构中,涵盖了 NameServer、Broker 主从节点、Proxy 等多个关键组件。目前,这些组件之间的互相访问缺失了关键的的权限验证机制。因此,一但旦在集群外自行搭建 Broker 从节点或 Proxy 组件, 便可以绕过现有的安全机制,访问并获取集群内的敏感数据,这无疑给系统的数据 安全和集群的稳定性造成巨大的威胁。
ACL 2.0 新特性
RocketMQ ACL 2.0 针对 ACL 1.0 中的问题进行了解决,同时还带来了六个主要的新特性,具体如下:
- 精细的 API 资源权限定义:ACL 2.0 对 RocketMQ 系统中所有的资源都进行了定义,包括集群、命名空间、主题、消费者组,以实现对所有类型的资源进行独立的 访问控制。此外,它将所有的 API 都纳入权限控制范畴,覆盖了包括消息收发、集群管理、元数据等各项操作,确保所有资源的任何操作都施加了严格的权限控制。
- 授权资源的多种匹配模式:在资源众多的集群环境中,为每个资源进行逐一授权会
带来繁复的配置过程和管理负担。因此,ACL 2.0 引入了三种灵活的匹配模式:完全匹配、前缀匹配,以及通配符匹配。这些模式可以让用户根据资源的命名规范和 结构特点,快速地进行统一的设定,简化权限的管理操作,提升配置的效率。
- 支持集群组件间访问控制:由于将所有资源类型和 API 操作都纳入了访问控制体系, 集群内部组件之间的连接和访问也受到了权限控制,包括 Broker 主从之间的Leader 选举、数据复制的过程,以及 Proxy 到 Broker 的数据访问等环节,这可以有效地避免潜在的数据泄露问题和对系统稳定性的风险,加强了整个集群的安全 性和可靠性。
- 用户认证和权限校验分离:通过对认证和授权这两个关键模块进行解耦,系统可以 提供类似“只认证不鉴权”等方式的灵活选择,以适应各种不同场景的需求。此外, 两个组件可以分别演进、独立发展,从而诞生出多样的认证方式和先进的鉴权方法。
- 安全性和性能之间的平衡:当启用 ACL 后,客户端的每次请求都必须会经过完整的认证和授权流程。这确保了系统的安全性,但同时也引入了性能上的开销。在 ACL
2.0 中,提供了无状态认证授权策略和有状态认证授权策略,来分别满足对安全有极致要求,以及安全可控但性能优先这两种不同的安全和性能需求。
- 灵活可扩展的插件化机制:当前市场上,认证方式存在多种实现,授权方式也有不 同场景的定制需求。因此,ACL 2.0 设计了一套插件化的框架,在不同层面上进行接口的定义和抽象,以支持未来对认证和授权进行扩展,满足用户根据自身业务需 求定制和实现相应的解决方案。
《阿里云产品四月刊》—Apache RocketMQ ACL 2.0 全新升级(2)https://developer.aliyun.com/article/1554226