gpt4 book ai didi

permissions - RabbitMQ用户在预先创建的队列上发布/订阅的权限

转载 作者:行者123 更新时间:2023-12-03 23:57:56 25 4
gpt4 key购买 nike

我有一个用例,我需要创建一个用户并授予他仅对现有队列上的pub/sub的权限,这是一个示例:

  • 虚拟主机“mainvhost”(所有用户均相同)
  • 在虚拟主机内,我有Q-foo和Q-bar队列
  • 用户“foo”只能发布/订阅到Q-foo
  • 用户“bar”只能发布/订阅到Q-bar

  • 我没有设置这种用户管理策略的方法,我发现的唯一方法是为每个用户创建一个虚拟主机,这样,用户将可以在其自己的虚拟主机中拥有完全访问权限,但缺点是:我有一个消费者应用程序订阅所有队列并等待用户输入,如果每个用户都有自己的虚拟主机,那么我需要每个虚拟主机有1个使用者,因为我没有办法使用与Rabbitmq相同的连接从多个虚拟主机进行消费。

    最佳答案

    一点点的清晰性:您应该发布到交易所,并订阅队列。话虽这么说,您可能希望在交换中使用“ex-foo”和“ex-bar” ...基本上每个用户一个。可以用不同的方法来完成,但这是可行的。

    添加权限时,可以使用正则表达式设置允许用户执行的操作。

    例如,使用the rabbitmqctl command line设置权限,您可以执行以下操作:
    rabbitmqctl set_permissions -p /myvhost tonyg "^tonyg-.*" ".*" ".*"

    This command instructs the RabbitMQ broker to grant the user named tonyg access to the virtual host called /myvhost, with configure permissions on all resources whose names starts with "tonyg-", and write and read permissions on all resources.



    请注意,三个“引号”中的权限顺序为:配置,写入,读取。

    在您的情况下,您希望设置如下权限:
  • vhost:mainvhost
  • 用户:foo
  • 配置:“”
  • 写:“^ [ex-foo | Q-foo]。*”
  • 读取:“^ [ex-foo | Q-foo]。*”

  • 这将授予 foo用户读取和写入以 ex-fooQ-foo开头的任何交换或队列的权限

    您也许可以摆脱一些限制性更强的东西,例如
  • 写:“^ ex-foo。*”
  • 读取:“^ Q-foo。*”

  • 通过交换发布时,我不确定是否需要队列的写权限。我还没有在我的安全性中设置此粒度级别。

    关于permissions - RabbitMQ用户在预先创建的队列上发布/订阅的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32379506/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com