什么是 ACL

ACL(Access Control List,访问控制列表)与我们在应用系统中接触到的用户、资源、权限、角色有些类似,在 RocketMQ 中对应如下对象。

  • 用户:用户是访问控制的基本要素。在 RocketMQ ACL 实现中必然也会引入用户的概念,即支持用户名、密码。

  • 资源:需要保护的对象。在 RocketMQ 中,消息发送涉及的 topic 和消息消费涉及的消费组等都应该进行保护,故可以抽象成资源。

  • 权限:可以简单地将权限理解为可以对资源进行操作,在 RocketMQ ACL 中主要包含 topic 的发送权限、对 topic 的订阅权限等。

  • 角色:RocketMQ 中只定义了两种角色,管理员和非管理员。

不难理解,RocketMQ 通过引入 ACL 功能,可以对 topic 的发送与订阅进行强管控。公司内部各个项目组如果需要消费 topic 中的数据,必须得到运维团队的授权,这样极大提高了 MQ 集群的安全性,便于管理。