如何通过definitions.json为RabbitMQ用户添加额外主题权限
如何通过definitions.json为RabbitMQ用户添加额外主题权限
嘿,我来帮你捋清楚这个问题!
你之前尝试添加两条权限条目但没看到效果,核心原因在于RabbitMQ的权限匹配规则——权限是基于正则表达式匹配资源的,而且如果已经有一条权限的正则是.*(匹配所有资源),那后面再针对amq.topic添加的权限完全是多余的,因为.*已经覆盖了所有主题,包括amq.topic,所以你不会看到任何“额外”权限的变化。
那怎么正确配置呢?得看你的实际需求:
情况1:想在现有有限权限的基础上,给用户添加amq.topic的访问权
比如之前用户只能访问my.app.topics.*这类主题,现在要加上amq.topic的权限,你可以把正则表达式合并,用|分隔多个匹配规则,像这样:
{ "user": "guest", "vhost": "/", "configure": "my\\.app\\.topics\\..*|amq\\.topic", "write": "my\\.app\\.topics\\..*|amq\\.topic", "read": "my\\.app\\.topics\\..*|amq\\.topic" }
这里要注意正则里的.需要转义成\\.,避免匹配任意字符。
情况2:只想让用户拥有amq.topic的权限(限制其他资源访问)
那直接删掉那条.*的权限条目,只保留针对amq.topic的配置就行:
{ "user": "guest", "vhost": "/", "configure": "amq\\.topic", "write": "amq\\.topic", "read": "amq\\.topic" }
最后还有几个小提醒:
- 确保
definitions.json的格式完全正确,没有语法错误(比如逗号、括号是否配对) - 修改配置后,需要重启RabbitMQ服务才能让新权限生效
- 权限条目里的
user和vhost组合要唯一,重复的条目不会叠加出你想要的效果,反而可能导致混淆
备注:内容来源于stack exchange,提问作者El tornillo
相关产品推荐
相关产品推荐

