一、序言
RocketMQ在4.4版本之后为我们提供了ACL权限校验机制,可以实现针对Topic资源级别的用户访问权限控制,ACL的实现能够在一定程度上保证RocketMQ集群数据的安全性。试想一下,如果没有ACL权限校验,在生产环境上只要部署任意的RocketMQ控制台就可以对topic进行操作,存在的危害和风险是非常大的。
二、实现思路
RocketMQ对ACL的主要实现思路,是在生产者和消费者发起处理请求的时候,依赖钩子函数RPCHook在客户端携带认证信息,当对broker进行操作的时候,会对携带的认证信息AccessKey所拥有的权限进行校验,校验通过则允许操作,校验不通过则抛出异常。主要包含两部分,分为权限解析和权限校验。整体处理流程如下:
三、配置和使用
ACL权限校验默认在RocketMQ上是不开启的,在broker配置文件增加 aclEnable=true 配置用于开启ACL校验。同时,RocketMQ在配置目录下提供 plain_acl.yml 文件用于配置账号的权限信息,其中的配置项大体含义如下:
字段 | 取值 | 含义 |
---|---|---|
globalWhiteRemoteAddresses | *;192.168.*.*;192.168.0.1 | 全局IP白名单 |
accessKey | 字符串</ |