RocketMQ进阶(三)

本文详细介绍了RocketMQ的访问控制列表(ACL)特性,包括如何配置服务端和客户端的ACL,以及ACL的实现原理。通过配置ACL,用户可以实现Topic资源的隔离,并通过AccessKey和SecretKey进行权限校验。同时,文章还展示了生产者和消费者在使用ACL时的配置和代码实现。
摘要由CSDN通过智能技术生成

今天的博客主题

      MQ消息中间件 --》RocketMQ --》RocketMQ进阶(三)


本文主要讲解RocketMQ的ACL和生产者消费者实现ACL及ACL底层实现原理刨根问底

 

ACL介绍(访问控制列表)

该特性主要为 RocketMQ 提供权限访问控制。

用户可以通过 yml 配置文件来定义权限访问的相关属性,包括白名单 IP 地址、用户的 AK/SK 访问秘钥对、Topic 和 ConsumerGroup 的访问权限。

这样 Topic 资源之间也就具备了一定的隔离性,用户无法访问没有权限的 Topic 资源。

同时,开源用户使用带有 ACL 鉴权信息的开源客户端可以无缝对接云 MQ,而无需对业务系统进行任何的其他改造。。。

在使用RocketMQ权限控制时,在Client客户端通过 RPCHook注入AccessKey和SecretKey签名。

同时,将对应的权限控制属性(包括Topic访问权限、IP白名单和AccessKey和SecretKey签名等)设置在distribution/conf/plain_acl.yml的配置文件中。Broker端对AccessKey所拥有的权限进行校验,校验不过,抛出异常。

服务端核心配置文件

 

# 全局IP白名单
globalWhiteRemoteAddresses:

# 详细配置
accounts:
  # 生产者秘钥
- accessKey: PG_PUB_LKL
  secretKey: 123123123
  # 用户白名单
  whiteRemoteAddress:
  # 是否管理员账户(不是管理员就要配置的详细点,topic/group(consumer)都要)
  admin: false
  # 默认的Topic权限
  defaultTopicPerm: PUB
  # 默认的ConsumerGroup权限
  defaultGroupPerm: PUB
  # 各个Topic的权限
  topicPerms:
  - TOPIC_DEMO_KL=PUB

  # 各个ConsumerGroup的权限
  groupPerms:
  # the group should convert to retry topic
  - CG_DEMO_KL=SUB
  
  # 消费者秘钥
- accessKey: CG_SUB_LKL
  secretKey: 123123123
  # 用户白名单
  whiteRemoteAddress:
  # 是否管理员账户(不是管理员就要配置的详细点,topic/group(consumer)都要)
  admin: false
  # 默认的Topic权限
  defaultTopicPerm: PUB|SUB
  # 默认的ConsumerGroup权限
  defaultGroupPerm: PUB|SUB
  # 各个Topic的权限
  topicPerms:
  - TOPIC_DEMO_KL=SUB
  # 各个ConsumerGroup的权限
  groupPerms:
  # the group should convert to retry topic
  - CG_DEMO_KL=SUB

  # admin秘钥
- accessKey: rocketmq2
  secretKey: 12345678
  # 用户白名单
  whiteRemoteAddress: 
  # if it is admin, it could access all resources
  admin: true    

/conf/plain_acl.yml 是热加载修改完不需要重启broker。 (抛出一个问题,服务端是怎么热加载配置文件的?)

在配置好权限属性之后,需要开启aclEnable,在broker.conf配置文件增加配置,这样服务端就开启了权限。

## if acl is open,the flag will be true
aclEnable=true

生产者使用ACL

生产者服务配置文件增加配置

rocketmq:
  name-server: 127.0.0.1:9876
  producer:
    # 权限认证
    access-key: rocketmq2
    secret-key: 12345678

只需要配置上就行,因为我们使用的是rocketmq-spring-boot-starter。在启动时候就会给实例化完成了。

DefaultMQProducer 我们已经知道这个类是做什么的了,就不详说了。

DefaultMQProducer提供的构造函数 会有 RPCHook 提供权限构造函数

生产者实例化权限访问核心代码

消费者使用ACL

同样消费者配置文件增加配置

 

rocketmq:
  name-server: 127.0.0.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值