我有一个用例,我需要创建一个用户并授予他在现有队列中只有pub / sub的权限,这是一个例子:
我没有办法设置这样的用户管理策略,我找到的唯一方法是为每个用户创建一个vhost,这样,用户将在自己的vhost中拥有完全访问权限但是有一个很大的缺点:我有一个订阅所有队列和等待用户输入的消费者应用程序,如果每个用户都有自己的vhost,那么我需要每个vhost有1个消费者,因为我没有办法从多个vhost使用相同的连接消费to rabbitmq。
答案 0 :(得分:12)
小清晰度:您应该发布到交换,并订阅队列。话虽这么说,你可能想要一个" ex-foo"和"前栏"对于你的交流...每个用户一个,基本上。它可以以不同的方式完成,但这可行。
添加权限时,您可以使用正则表达式来设置允许用户执行的操作。
例如,使用the rabbitmqctl command line设置权限,您可以执行以下操作:
rabbitmqctl set_permissions -p /myvhost tonyg "^tonyg-.*" ".*" ".*"
此命令指示RabbitMQ代理授予名为tonyg的用户访问名为/ myvhost的虚拟主机的权限,并对名称以" tonyg - "开头的所有资源配置权限,以及写入和读取权限所有资源。
请注意三个"引号中的权限顺序"是:配置,写入,读取。
在您的情况下,您需要设置如下权限:
这将授予foo
用户读取和写入以ex-foo
或Q-foo
你可能能够摆脱更具限制性的东西,比如
我不确定在通过交换发布时是否需要对队列的写权限。我还没有必要在我的安全性中设置这种级别的粒度。