RabbitMQ用户权限格式

25

我正在尝试使用rabbitmqctl配置RabbitMQ中的用户权限。 RabbitMQ文档http://www.rabbitmq.com/man/rabbitmqctl.1.man.html提供了设置配置、写入和读取权限的基本示例:

rabbitmqctl set_permissions -p /myvhost tonyg "^tonyg-.*" ".*" ".*"

但是没有提供更详细的例子。我已经查看了关于这个主题的几篇文章,但没有找到我的具体问题的答案。

第一个问题:是否需要授予用户能够写入的交换机和队列的权限,还是只需授予交换机?同样地,对于阅读,仅指定队列是否足够?文档只是讨论授予对“资源”的访问权限。

第二个问题:上面的示例使用插入符号标记资源名称的开头。如果我省略此项,只使用“tonyg-.*”是否允许指定的文本出现在资源名称的任何位置?同样地,如果我想指定整个资源名称,是否必须用^和$括起来,如“^myqueue$”?

第三个问题:假设我想为给定的权限指定多个模式。我可以用逗号分隔模式,例如

rabbitmqctl set_permissions -p /myvhost tonyg "^tonyg-.*,^test-.*" ".*" ".*"

这是正确的语法吗?如果不是,应该怎么写呢?

第四个问题:虚拟主机名称所需的语法是什么?引用的 man 手册上的其他示例没有使用前导斜杠,例如:

rabbitmqctl add_vhost test

虚拟主机名称是否以某种方式构建,或者斜杠只是名称中的另一个字符?

感谢任何建议!


1
你发现了一些有趣的东西吗?我想要类似的东西。基本上,“备忘单”将有助于查看例如如何授予创建具有特定名称的队列的权限或类似内容。 - Lukino
1
@John,这个有什么建议吗?我认为很多人都在寻找如何给队列只授予读取权限,但是现有文档中很难找到相关信息。 - Gaurav
1个回答

8

我遇到了相同的问题,但经过一些简单的实验,我想出了以下解决方法:

我首先添加了一个名为 "/ASX" 的虚拟主机,然后使用以下格式成功地将 "guest" 用户添加到其中:

rabbitmqctl set_permissions -p /ASX guest ".*" ".*" "."
Setting permissions for user "guest" in vhost "/ASX" ...
...done.

我还需要重新启动rabbitmq-server才能使更改生效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接