RocketMQ还可以进行权限控制??


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

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!