Rocketmq开启账号和密码(ACL)

我正在参加「金石计划」

写在前面

权限控制(ACL)主要为RocketMQ提供Topic资源级别的用户访问控制。

用户在使用RocketMQ权限控制时,可以在Client客户端通过 RPCHook注入AccessKey和SecretKey签名;同时,将对应的权限控制属性(包括Topic访问权限、IP白名单和AccessKey和SecretKey签名等)设置在distribution/conf/plain_acl.yml的配置文件中。

Broker端对AccessKey所拥有的权限进行校验,校验不过,抛出异常;

ACL客户端可以参考:org.apache.rocketmq.example.simple 包下面的AclClient代码。

rocketmq的权限控制,可以参考rocketmq官方文档

1.开启acl控制

  • 修改conf/broker.conf
sh 复制代码
#开启acl控制(最后面添加)
aclEnable=true

对应docker镜像的路径:/opt/jxbp/rocketmq/conf/broker.conf

  • 修改conf/plain_acl.yml

这里设置管理员账号和密码

sh 复制代码
- accessKey: LlsydnRocketMQ
  secretKey: Llsydn123!@#
  whiteRemoteAddress: 192.168.1.*
  # if it is admin, it could access all resources
  admin: true

这里默认的账号密码是:rocketmq2/12345678,现在修改为:JxbpRocketMQ/Jxbp123!@#

对应docker镜像的路径:/opt/llsydn/rocketmq/conf/plain_acl.yml

docker方式部署rocketmq的,该文件对应的镜像,已经修改默认账号和密码,拉取最新的镜像即可。如果不想更新镜像,可以自己挂载该文件到宿主机,然后对应修改相应的账号和密码即可。

sh 复制代码
#对应公司harbor的镜像如下:
192.168.1.121/llsydn/rocketmq:5.1.1
192.168.1.121/llsydn/rocketmq:5.1.1-arm

最后重启rocketmq即可。

2.微服务启动配置

在broker中配置aclEnable=true之后,相关微服务会报错,报错消息如下:

sh 复制代码
    CODE: 1 DESC: org.apache.rocketmq.acl.common.AclException: No accessKey is configured, org.apache.rocketmq.acl.plain.PlainPermissionLoader.validate(PlainPermissionLoader.java:194)

如果使用了nacos配置中心的,可以在nacos加上下面配置:

properties 复制代码
spring.cloud.stream.rocketmq.binder.access-key=LlsydnRocketMQ
spring.cloud.stream.rocketmq.binder.secret-key=Llsydn123!@#

以上配置,可以在nacos-config-dev.properties配置文件中添加即可。

然后重启所有微服务即可!

另:(不是集群部署rocketmq,可忽略)

RocketMQ开启ACL之后,客户端通过accessKey和secretKey进行认证,但是集群的节点之间是不能配置accessKey和secretKey,只能通过配置全局ip白名单的方式来访问,也就是配置plain_acl.yml中的globalWhiteRemoteAddresses,可以看看这篇文章:blog.csdn.net/sinat_14840...

3.RocketMQ-Dashboard(可忽略)

如没有部署Dashboard可视化客户端服务的,这个步骤可以忽略。

修改application.properties,将注释放开,设置对应的RocketMQ账号密码

properties 复制代码
rocketmq.config.accessKey=LlsydnRocketMQ
rocketmq.config.secretKey=Llsydn123!@#

重启dashboard,即可正常访问。

注:

当前,已经为RocketMQ设置了密码,但是,还存在问题,Dashboard操作面板没有设置密码,操作面板没有设置密码,在实际应用中,也是很危险的。下面为Dashboard操作面板设置密码:

  • Dashboard操作面板开启账号密码

修改application.properties

properties 复制代码
rocketmq.config.loginRequired=true

重新访问,发现需要账号密码

默认的账号密码,在user.properties

这里默认的账号密码是:admin/admin,现在修改为:admin/Llsydn123!@#

注:

RocketMQ-Dashboard相关的配置都不用自己修改,公司相关的docker镜像包,已经进行了修改,拉取最新的镜像即可。

sh 复制代码
#对应公司harbor的镜像如下:
192.168.2.122/llsydn/rocketmq:db100
192.168.2.121/llsydn/rocketmq:db100-arm

好了,以上就是我个人的实操了。可能有些不对,大家伙,轻点喷!!!

个人理解,可能也不够全面,班门弄斧了。

好了,今天就先到这里了!!!^_^

如果觉得有收获的,帮忙点赞、评论、收藏一下,再走呗!!!

相关推荐
码上一元2 小时前
SpringBoot自动装配原理解析
java·spring boot·后端
计算机-秋大田2 小时前
基于微信小程序的养老院管理系统的设计与实现,LW+源码+讲解
java·spring boot·微信小程序·小程序·vue
魔道不误砍柴功4 小时前
简单叙述 Spring Boot 启动过程
java·数据库·spring boot
枫叶_v4 小时前
【SpringBoot】22 Txt、Csv文件的读取和写入
java·spring boot·后端
路在脚下@4 小时前
Springboot 的Servlet Web 应用、响应式 Web 应用(Reactive)以及非 Web 应用(None)的特点和适用场景
java·spring boot·servlet
杜杜的man5 小时前
【go从零单排】Closing Channels通道关闭、Range over Channels
开发语言·后端·golang
java小吕布5 小时前
Java中Properties的使用详解
java·开发语言·后端
尘浮生6 小时前
Java项目实战II基于微信小程序的移动学习平台的设计与实现(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·学习·微信小程序·小程序
2401_857610036 小时前
Spring Boot框架:电商系统的技术优势
java·spring boot·后端
java—大象7 小时前
基于java+springboot+layui的流浪动物交流信息平台设计实现
java·开发语言·spring boot·layui·课程设计