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

2024-02-22

我有一个用例,我需要创建一个用户并授予他仅在现有队列上发布/订阅的权限,这是一个示例:

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

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


澄清一点:您应该发布到交换器,并订阅队列。话虽这么说,您可能需要一个“ex-foo”和“ex-bar”来进行交换……基本上每个用户一个。可以用不同的方式来完成,但这会起作用。


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

例如,使用rabbitmqctl 命令行 https://www.rabbitmq.com/man/rabbitmqctl.1.man.html要设置权限,您可以这样做:

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

此命令指示 RabbitMQ 代理向名为 tonyg 的用户授予对名为 /myvhost 的虚拟主机的访问权限,并对名称以“tonyg-”开头的所有资源具有配置权限,并对所有资源具有写入和读取权限。

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

在您的情况下,您需要像这样设置权限:

  • 虚拟主机:主虚拟主机
  • 用户: foo
  • 配置: ””
  • 写:“^[ex-foo|Q-foo].*”
  • 读:“^[ex-foo|Q-foo].*”

这将授予权限foo用户可以读取和写入任何以以下开头的交换器或队列ex-foo or Q-foo

您也许可以摆脱更严格的限制,例如

  • 写:“^ex-foo.*”
  • 读:“^Q-foo.*”

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RabbitMQ 用户在预先创建的队列上发布/订阅的权限 的相关文章

随机推荐

  • Qt 中的 GIF 动画

    我用过QGraphicsView QGraphicsScene类以便在小部件中显示图片 如下所示 m Scene gt addPixmap QPixmap fileName m View gt setScene m Scene 我如何展示
  • CSS calc 在 IE11 中无法使用线性渐变

    margin 0 padding 0 body background color orangered content margin top 200px height 100vh background color fdfdff tilt po
  • 多个HTTP请求触发HTTP Client超时

    我有一个异步发送 500 个 HTTP 请求的应用程序 所有请求均已处理after由于 HTTP 客户端超时 15 秒失败 even当请求的端点已返回 200 OK 时 代码非常简单 这里我们获取一大块请求 500 并异步执行它们 应该注意
  • 64位nasm除法idiv [重复]

    这个问题在这里已经有答案了 print out division message mov rcx 0 zero out register mov rax input mov rcx input2 idiv rcx divide rax by
  • 在 python 中具有任意数量的带有命名默认值的参数

    我想用 python 编写一个函数 除了一个命名参数 带有默认值 之外 它还可以接受任意数量的未命名参数 例如 我想写这样的东西 def myFunc args optDefault 1 但这只是给出了语法错误 有没有等效的方法来做到这一点
  • 如何在 Bash 中操作十六进制值?

    我有一个具有十六进制值的变量 在本例中 一个值为 0xfe 的字节 echo MYVAR hexdump 0000000 0afe 0000002 我想在我的 bash 脚本中使用这个值 特别是我需要 用作字符串 echo X MYVAR
  • spring中rabbitmq监听器的异常处理

    使用spring 我是rabbitmq的新手 我想知道我错在哪里 我编写了一个rabbitmq连接工厂和一个包含侦听器的侦听器容器 我还为侦听器容器提供了错误处理程序 但它似乎不起作用 我的春豆
  • Python google app engine 的最佳部署策略

    我想知道是否有在 Google 应用程序引擎 特别是 Django 上部署 python 应用程序的最佳实践 模式 最佳实践应该是现有最佳实践的组合 即 Fabric Paver Buildout 等 另请分享开发的最佳实践模式 我无法让
  • 我可以在yield-return-method 中使用“using”吗?

    我刚刚看到了一个 YouTube 视频 其中导师使用了一个 Yield 返回方法来打开一个文件并从中读取行 这些行将 Yield 返回给调用者 实际代码位于 FileStream 周围的 using 块中 然后我想知道 在yield ret
  • 超时后消除反应错误消息

    我试图显示一些反应错误消息并在 5 秒超时后隐藏它们 下面是代码 import as React from react import ErrorInfo from Twilio api export const Error type mes
  • 在 C++ 中设置默认浮点打印精度

    我想在比较过程中控制双精度数的精度 然后使用 C 恢复到默认精度 我打算使用setPrecision 设置精度 那么将精度设置回默认值的语法 如果有 是什么 我正在做这样的事情 std setPrecision math log10 m F
  • 向 xml 文档添加注释

    Code from lxml import etree Create the network XML file tree root etree Element network tree etree ElementTree root Crea
  • 编译元素导致输入插入符位置移动到末尾

    我的指令有问题 该指令的目的是轻松添加验证 而无需手动将 ng class 除其他外 添加到元素中以便显示错误状态 我只是想在我的元素上放置一个 验证 指令 并在出现错误状态时生成适当的类 和错误消息 就验证而言 它运行良好 但会产生奇怪的
  • 自定义路由类

    在 symfony 1 4 中 您可以定义自定义路由类 在其中使用自定义逻辑覆盖 url 的生成 例如 custom class sfDoctrineRouteCollection options model Custom prefix p
  • 如何在jquery中选择一个元素及其子元素? [复制]

    这个问题在这里已经有答案了 我有一个 div 其中包含更多 div 这些 div 内部包含 table div 我怎样才能在jquery中选择这个父div及其子div 父 div 有类 AccordionTitle AccordionTit
  • 当我尝试使用 Rakudo 运行脚本时,为什么会出现“被零除”错误?

    我刚刚构建了 Rakudo 和 Parrot 这样我就可以使用它并开始学习 Perl 6 我下载了 Perl 6 书 并愉快地输入了第一个演示程序 网球锦标赛示例 当我尝试运行该程序时 出现错误 Divide by zero current
  • 即使活动发生变化,如何保持 Android 客户端与服务器的连接并向服务器发送数据?

    我最初在我的活动中实现了一个异步任务 将数据发送到服务器 但是当我改变活动时 连接就丢失了 为了避免这种情况 我的方法是实现一个集中网络操作并将数据发送到服务器的服务 该服务的代码如下 import java io BufferedWrit
  • Rxjs 将 Json 文档中的数组映射到新的数组类型

    我正在 Angular 服务中从 PouchDB 检索文档 该文档以以下格式检索 id segments rev 1 4f0ed65cde23fe724db13bea1ae3bb13 segments name Aerospace name
  • 并发 Sql Server 连接数

    我正在创建一个带有 Sql Server 数据库引擎的 net 应用程序 我希望每秒有数千名用户访问我的网站 连接数靠什么 IIS 和 Sql Server 可以容纳多少个连接 首先 连接和连接池之间存在区别 研究一下这一点是不是很好 因为
  • RabbitMQ 用户在预先创建的队列上发布/订阅的权限

    我有一个用例 我需要创建一个用户并授予他仅在现有队列上发布 订阅的权限 这是一个示例 虚拟主机 mainvhost 对于所有用户都相同 在虚拟主机内 我有 A foo 和 Q bar 队列 用户 foo 只能发布 订阅到 Q foo 用户