权限控制(ACL)主要为RocketMQ提供Topic资源级别的用户访问控制。用户在使用RocketMQ权限控制时,可以在Client客户端通过 RPCHook注入AccessKey和SecretKey签名;同时,将对应的权限控制属性(包括Topic访问权限、IP白名单和AccessKey和SecretKey签名等)设置在distribution/conf/plain_acl.yml的配置文件中。Broker端对AccessKey所拥有的权限进行校验,校验不过,抛出异常。
apache/rocketmq-externals提供的console主要是管理员角色使用,我们要细化到Account,所以需要对控制台做一些功能增强。
下载安装RocketMQ,配置好环境变量${RocketMQ_HOME},启动NameServer,启动Broker(指定配置文件形式)
下载rocketmq-console源码,添加热部署,然后运行项目
mvn spring-boot:run
开启登录功能,新增配置管理员的ak、sk,原来项目自带的ak、sk做为登录用户的登录标识
改造登录接口,用户信息不再从属性文件读取,直接管理员账号信息接口调用MQ获取
改造Dashboard数据采集task,需要使用管理员ak、sk获取数据
新增功能模块-权限控制,处理ACL mqadmin配置管理命令,包括更新account、删除account、更新全局白名单、查询ACL配置版本信息、查询ACL全部内容等