【问题标题】:ActiveMQ Artemis JMX accessActiveMQ Artemis JMX 访问
【发布时间】:2019-03-11 09:43:53
【问题描述】:

我想知道是否有办法在 Apache Artemis 中访问 MBean 的值。问题是MBeans 访问受到management.xml 中定义的角色访问的保护。当您访问 MBean 时,您应该在设置中具有所需的角色,但是在我的 Java 应用程序中,当我访问 MBean 时我无法应用角色。当我使用 VisualVM 时也会发生同样的情况,我可以看到 MBean 列表,但由于访问限制,我看不到 MBean 的值。

一种解决方法是从management.xml 中实际删除<authorization> 元素,或者在<whitelist> 元素中简单地添加org.apache.activemq.artemis

如果我可以通过运行时的反射来做到这一点,那就太好了。我已经尝试了几次,但没有太大的成功。有没有办法在运行时覆盖 Artemis 的任何属性,从而使访问成为可能?

【问题讨论】:

  • “从我的 Java 应用程序中我无法申请角色”是什么意思?代理应用角色以响应客户端的凭据(即用户名和密码或 SSL 证书)。您无需从客户端应用程序中指定与角色相关的任何内容。
  • 我没有将 Artemis 与客户端库一起使用。我正在尝试使用 JMX 在我的 Java 应用程序中读取 MBean 值。问题是我无法访问 MBean 值,因为我的 Java 应用程序没有必要的访问权限来获取每个 Artemis MBean 的值。
  • 奇怪的是,如果我在调试模式下运行 Artemis,所有 MBean 值都存在,而且 VisualVM 也可以访问这些值。
  • 为什么不能使用 JMX 从应用程序中传递用户名和密码?
  • 好吧,我试图不使用连接端口 (1099) 来访问 MBean。这就是为什么我问反射是否可以帮助我访问这些 MBean。有JMXAccessControlList,我可以用org.apache.activemq.artemis(白名单)扩展它,但是当我尝试通过反射使用它时发生了一些有趣的事情。

标签: jmx activemq-artemis


【解决方案1】:

MBean 访问限制是代理安全性的一部分。有一种方法可以规避这种安全性,或者在没有适当的身份验证和授权的情况下在运行时禁用它,这将是一个重大的安全漏洞。如果 MBean 访问不受限制,那么任何具有远程访问权限的人都可以关闭代理,甚至删除队列中的所有消息。

如果您想不受限制地访问 MBean,您需要按照您的说明更改 management.xml

您也可以从您的应用程序中提交正确的用户名和密码,以便代理授予您访问权限。

【讨论】:

  • 我是这么认为的。那我就擅自去management.xml。感谢您的澄清。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-19
  • 2013-03-28
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 2011-12-05
  • 2023-04-04
相关资源
最近更新 更多