RocketMQProxy架构ACL动态授权
一、做的是什么将mq让第三方作为接收端接入,第三方在在你这里创建topic,然后订阅,接收你的消息
二、难点
1、利用proxy代理架构
[*]是什么
在nameServer和broker架构中增加一个proxy,用来对接接收端和发送端,在转发到各个broker
[*]为什么要用这个东西
rocketmq5.0之前利用的是remoting协议,nameserver会将各个broker的地址同步给接收端,接收端再直连各个broker。现在接收端是第三方,利用这种模式就必要暴露很多个端口(多个broker)。
5.0之后增加了proxy节点,只必要暴露一个端口即可(proxy端口),增加安全性
[*]怎么用
不开启acl(鉴权)的话,增加一个proxy项目,启动时利用-n指定集群的nameServer就可以对外代理
2、动态授权
[*]是什么
rocketmq官方自带acl系统作为鉴权方式,通过修改设置文件增加accessKey和secretKey作为鉴权的账号密码,还可以细化到差别group差别topic来规定差别权限
[*]为什么要用这个东西
因为必要让第三方动态接入,以是必要加上鉴权,否则存在较大的安全风险
[*]怎么用
在代码中可以利用rocketmq官方提供的MQAdminStartup工具类实行mqadmin下令修改rocketmq服务端的设置文件
rocketMQ怎样鉴权
mqadmin下令
注意:
1、由于利用了proxy架构,接收端举行订阅时是通过proxy举行转发的,目前5.2.0版本proxy并没有转发鉴权的头部字段,以是鉴权只能放在proxy
2、利用MQAdminStartup无法修改proxy的设置文件,因此修改设置文件的动作只能放在broker,然后让proxy和broker的设置文件指定为同一个,进而达到修改proxy设置文件的目的
3、broker没有开启acl无法修改设置文件,因此broker也必要开启acl
4、broker开启acl后proxy必要在rmq-proxy.json设置文件中增加"enableAclRpcHookForClusterMode":true,字段,开启内部鉴权模式,否则proxy无法访问各个broker,tools设置文件中必要增加管理员ak和sk作为内部鉴权依据
5、MQAdminStartup工具类每次启动都会建立,断开一次链接,而且会初始化logback日志系统(影响系统原本的logback设置),并不符合一样寻常的系统利用习惯,最好根据详细业务定制
6、proxy架构5.2.0版本并不支持自动创建topic(设置了也没用),因此topic必要手动创建,利用remoting协议则会有第一个消息后十秒左右的延长限制,手动创建可解决
7、修改acl设置单个accessKey内不支持增量修改,但是也并不是全量修改,例如,原先权限为groupA=PUB,topicA=PUB,必要修改为groupA=SUB,那么你的mqadmin下令假如只写updateAclConfig -a xxx -b xxx -g groupA=SUB的话(没有-t参数)是无法删掉topicA=PUB的权限的,实行结果是groupA=SUB,topicA=PUB,我的解决方案是利用一个占位符,下令如下updateAclConfig -a xxx -b xxx -g groupA=SUB -t placeHoldingTopic=DENY,运行结果groupA=SUB,placeHoldingTopic=DENY,乐成删掉TopicA的权限,当然也可以直接将TopicA置为DENY
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]