如何通过rabbitmqctl set_permissions配置MQTT用户仅订阅权限?
RabbitMQ MQTT 权限配置方案
要实现「单个用户可发布,其余仅能订阅」的需求,你可以通过rabbitmqctl set_permissions的权限参数精准控制,先明确三个核心权限参数和MQTT操作的对应关系:
- configure:创建/修改资源的权限,普通MQTT用户不需要,设为
^$(匹配空,即无权限)即可 - write:对应MQTT的发布消息操作
- read:对应MQTT的订阅消息操作
1. 给普通用户设置仅订阅权限
执行以下命令,限制用户的发布权限,只开放订阅能力:
rabbitmqctl set_permissions -p '你的虚拟主机名' '订阅用户名' '^$' '^$' '.*'
^$表示该用户无configure和write权限,既不能创建资源,也无法发布任何主题消息.*表示允许订阅所有MQTT主题,如果要限制到特定主题(比如mqtt/sensor/#),把.*换成对应的匹配规则即可
2. 给指定用户设置发布+订阅权限
给需要发布的用户开放write权限,同时保留订阅权限:
rabbitmqctl set_permissions -p '你的虚拟主机名' '发布用户名' '^$' '.*' '.*'
这样该用户既能发布所有主题,也能正常订阅消息。
内容的提问来源于stack exchange,提问作者lorem_ipsum
相关产品推荐
相关产品推荐

