【问题标题】:ActiveMQ: how can one define permissions per queue/topic?ActiveMQ:如何定义每个队列/主题的权限?
【发布时间】:2021-12-28 10:47:55
【问题描述】:

我正在为我们基于 Apache ActiveMQ 的环境设置消息队列服务。为此,我试图找到有关如何定义每个队列或每个主题的访问权限的信息。

使用默认机制,我可以定义新用户和密码,但显然有了​​这个,所有用户都可以访问所有队列/主题(这对于其他用例可能没问题,但在这里不行)。

在我使用过的以前的 JMS 设置 (Tibco EMS) 中,能够基于每个队列定义队列访问权限(和相应的凭据)。我还没有找到关于如何使用 ActiveMQ 执行此操作的任何描述或说明。任何提示或指针任何人?

注意:我在这里谈论的是对 ActiveMQ 服务器的编程队列/主题访问(从 Java 客户端),而不是管理员的 Web 控制台。

【问题讨论】:

  • 如果您正在开始一个 项目,我建议您使用来自 ActiveMQ 的下一代代理 ActiveMQ Artemis。您可以找到有关安全配置的文档here
  • 您阅读过the security documentation 的 ActiveMQ“经典”吗?
  • 抱歉懒惰的回复。是的,我读过它,但在第一次阅读时对我来说没有意义。我重新阅读,现在我开始明白了。

标签: activemq


【解决方案1】:

您需要添加授权。

特点:

  • 每个队列的权限完全匹配(即 QUOTE.INPUT)
  • namespace 的权限(即 ORDER.> 所有以前缀开头的队列)
  • 权限包括 readwriteadmin(通过发送或读取自动创建目的地的能力)
<broker...> 
  .. 
    <plugins> 
      .. 
      <authorizationPlugin> 
        <map> 
          <authorizationMap> 
            <authorizationEntries> 
              <authorizationEntry queue="QUOTE.INPUT" read="quote-group,admin-role" write="quote-role,admin-role" admin="quote-role,admin-role" /> 
              <authorizationEntry queue="ORDER.>" read="order-group,admin-role" write="order-role,admin-role" admin="order-role,admin-role" /> 
              <authorizationEntry topic="ActiveMQ.Advisory.>" read="*" write="*" admin="*"/> 
            </authorizationEntries> 
            <tempDestinationAuthorizationEntry> 
              <tempDestinationAuthorizationEntry read="admin-role" write="admin-role" admin="admin-role"/> 
            </tempDestinationAuthorizationEntry> 
          </authorizationMap> 
        </map> 
      </authorizationPlugin> 
      .. 
    </plugins> 
  .. 
</broker>

【讨论】:

  • 这与我的想法很接近。我在第一次阅读文档时没有意识到这一点。将其与 users.properties 和 groups.properties 中定义的用户和组/角色(参见 Justin Bertram 上面的参考文献)结合起来,这一切都开始变得有意义了。谢谢!
猜你喜欢
  • 2014-08-08
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
  • 2023-03-16
  • 2020-10-08
  • 2017-06-09
相关资源
最近更新 更多