5.6. 指定安全管理器


代理使用名为 安全管理器 的组件来处理身份验证和授权。

AMQ Broker 包括两个安全管理器:

  • ActiveMQJAASSecurityManager 安全管理器.此安全经理提供与 JAAS 和红帽 JBoss 企业应用平台(JBoss EAP)安全性的集成。这是 AMQ Broker 使用 的默认 安全管理器。
  • ActiveMQBasicSecurityManager 安全管理器.这个基本安全管理器不支持 JAAS。相反,它支持通过用户名和密码凭据进行身份验证和授权。此安全管理器支持使用管理 API 添加、删除和更新用户。所有用户和角色数据都存储在代理绑定日志中。这意味着,对 live 代理所做的任何更改也适用于其备份代理。

作为包含的安全管理器的替代方案,系统管理员可能需要对代理安全性的实施进行更多控制。在这种情况下,也可以在代理配置中指定 自定义 安全管理器。自定义安全管理器是一个用户定义的类,它实施 org.apache.activemq.artemis.spi.core.security.ActiveMQSecurityManager5 接口。

以下子部分中的示例显示了如何配置代理使用:

  • 基本安全管理器,而不是默认的 JAAS 安全管理器
  • 自定义安全管理器

5.6.1. 使用基本安全管理器

除了默认的 ActiveMQJAASSecurityManager 安全管理器外,AMQ Broker 还包含 ActiveMQBasicSecurityManager 安全管理器。

当您使用基本安全管理器时,所有用户和角色数据存储在绑定日志中(如果您使用 JDBC 持久性,则为绑定 )。因此,如果您配置了 live-backup 代理组,则在 live 代理上执行的任何用户管理都会在故障转移时自动反映在备份代理中。这免除了单独管理 LDAP 服务器的需要,这也是实现此行为的替代方法。

在配置和使用基本安全管理器前,请注意以下几点:

  • 基本安全管理器不可插拔,与默认的 JAAS 安全管理器一样。
  • 基本安全管理器不支持 JAAS。相反,它只支持通过用户名和密码凭据进行身份验证和授权。
  • AMQ 管理控制台需要 JAAS.因此,如果您使用基本安全管理器并希望使用控制台,您还需要配置 login.config 配置文件以进行用户和密码身份验证。有关配置用户和密码身份验证的详情请参考 第 5.2.2.1 节 “配置基本用户和密码身份验证”
  • 在 AMQ Broker 中,用户管理由代理管理 API 提供。此管理包括添加、列出、更新和删除用户和角色的功能。您可以使用 JMX、管理消息、HTTP(使用 Jolokia 或 AMQ 管理控制台)和 AMQ Broker 命令行界面来执行这些功能。因为代理会直接存储这些数据,所以代理必须正在运行才能管理用户。无法手动修改绑定数据。
  • 任何通过 HTTP 的管理访问(例如,使用 Jolokia 或 AMQ 管理控制台)都由控制台 JAAS 登录模块处理。MBean 通过 JConsole 或其他远程 JMX 工具进行访问由基本安全经理处理。管理消息由基本安全管理器处理。

5.6.1.1. 配置基本安全管理器

以下流程演示了如何配置代理以使用基本安全管理器。

流程

  1. 打开 <broker-instance-dir>/etc/boostrap.xml 配置文件。
  2. security-manager 元素的 class-name 属性中,指定完整的 ActiveMQBasicSecurityManager 类名称。

    <broker xmlns="http://activemq.org/schema">
       ...
       <security-manager class-name="org.apache.activemq.artemis.spi.core.security.ActiveMQBasicSecurityManager">
       </security-manager>
       ...
    </broker>
  3. 由于您无法手动修改保存用户和角色数据的绑定数据,且代理必须正在运行才能管理用户,因此建议您在第一次引导时保护代理的安全。要做到这一点,请定义 bootstrap 用户,其凭证可用于添加其他用户。

    security-manager 元素中,添加 bootstrapUserbootstrapPasswordbootstrapRole 属性并指定值。例如:

    <broker xmlns="http://activemq.org/schema">
       ...
       <security-manager class-name="org.apache.activemq.artemis.spi.core.security.ActiveMQBasicSecurityManager">
            <property key="bootstrapUser" value="myUser"/>
            <property key="bootstrapPassword" value="myPass"/>
            <property key="bootstrapRole" value="myRole"/>
       </security-manager>
       ...
    </broker>
    bootstrapUser
    bootstrap 用户的名称。
    bootstrapPassword
    提升用户的 Passsword.您还可以指定加密的密码。
    bootstrapRole

    提升用户的角色.

    注意

    如果您在配置中为 bootstrap 用户定义了上述属性,则每次启动代理时都会设置这些凭证,不论您在代理运行时进行任何更改。

  4. 打开 <broker_instance_dir>/etc/broker.xml 配置文件。
  5. broker.xml 配置文件中,找到 activemq.management# 地址匹配默认定义的 address-setting 元素。这些默认地址设置如下所示:

    <address-setting match="activemq.management#">
        <dead-letter-address>DLQ</dead-letter-address>
        <expiry-address>ExpiryQueue</expiry-address>
        <redelivery-delay>0</redelivery-delay>
        <!--...-->
        <max-size-bytes>-1</max-size-bytes>
        <message-counter-history-day-limit>10</message-counter-history-day-limit>
        <address-full-policy>PAGE</address-full-policy>
        <auto-create-queues>true</auto-create-queues>
        <auto-create-addresses>true</auto-create-addresses>
        <auto-create-jms-queues>true</auto-create-jms-queues>
        <auto-create-jms-topics>true</auto-create-jms-topics>
    </address-setting>
  6. 在之前在此流程中指定的 bootstrap 角色名称的 activemq.management# 地址匹配的地址设置中,添加以下所需的权限:

    • createNonDurableQueue
    • createAddress
    • 使用
    • 管理
    • send

    例如:

    <address-setting match="activemq.management#">
        ...
        <permission type="createNonDurableQueue" roles="myRole"/>
        <permission type="createAddress" roles="myRole"/>
        <permission type="consume" roles="myRole"/>
        <permission type="manage" roles="myRole"/>
        <permission type="send" roles="myRole"/>
    </address-setting>

其它资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.