RocketMQ还可以进行权限控制
一般消息中间件主要用于同构系统之间的解耦和消峰,但是在实际项目中,MQ可能作为统一的中间件服务向多方共同提供,因此如何控制各方的消息访问权限和业务隔离就需要我们今天要说到的ACL。
ACL权限控制
官方文档:项目路径/docs/cn/acl/user_guide.md
权限控制(ACL)主要为RocketMQ提供Topic资源级别的用户访问控制。
用户在使用RocketMQ权限控制时,可以在Client客户端通过RPCHook注入Accesskey和SecretKey签名;同时,将对应的权限控制属性(包括Topic访问权限、IP白名单和Accesskey和SecretKey签名等)设置在$ROCKETMQ HOME/conf/plain acl.yml的配置文件中。
Broker端对Accesskey所拥有的权限进行校验,校验不过,抛出异常; ACL客户端可以参考: org.apache.rocketmq.example.simple包下面的AclClient代码。
注意,如果要在自己的客户端中使用RocketMQ的ACL功能,还需要引入一个单独的依赖包
打开权限控制
配置文件路径:conf/broker.conf
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
storePathRootDir=/data/rocketmq/rootdir-a-m
storePathCommitLog=/data/rocketmq/commitlog-a-m
autoCreateSubscriptionGroup=true
## if acl is open,the flag will be true
aclEnable=true //开启ACL
listenPort=10911
brokerIP1=XX.XX.XX.XX1
namesrvAddr=XX.XX.XX.XX:9876
ACL规则配置
配置文件路径:conf/plain_acl.yml
globalWhiteRemoteAddresses:
- 10.10.103.*
- 192.168.0.*
accounts:
- accessKey: RocketMQ
secretKey: 12345678
whiteRemoteAddress:
admin: false
defaultTopicPerm: DENY
defaultGroupPerm: SUB
topicPerms:
- topicA=DENY
- topicB=PUB|SUB
- topicC=SUB
groupPerms:
# the group should convert to retry topic
- groupA=DENY
- groupB=PUB|SUB
- groupC=SUB
- accessKey: rocketmq2
secretKey: 12345678
whiteRemoteAddress: 192.168.1.*
# if it is admin, it could access all resources
admin: true
原文始发于微信公众号(云户):RocketMQ还可以进行权限控制??
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/25818.html