5.6. 指定安全管理器


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

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

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

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

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

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

5.6.1. 使用基本安全管理器

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

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

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

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

5.6.1.1. 配置基本安全管理器

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

流程

  1. 打开 & lt;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
    boostrap 用户的 Passsword。您还可以指定加密的密码。
    bootstrapRole

    boostrap 用户的角色。

    注意

    如果您在配置中为 bootstrap 用户定义前面的属性,则每次启动代理时都会设置这些凭证,无论代理运行时所做的任何更改是什么。

  4. 打开 & lt;broker_instance_dir&gt; /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. 在为 activemq.management# 地址匹配的地址设置中,对于您在此流程前面指定的 bootstrap 角色名称,添加以下所需的权限:

    • 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>

其他资源

5.6.2. 指定自定义安全管理器

以下流程演示了如何在代理配置中指定自定义安全管理器。

流程

  1. 打开 & lt;broker_instance_dir&gt; /etc/boostrap.xml 配置文件。
  2. security-manager 元素中,对于 class-name 属性,指定 org.apache.activemq.artemis.spi.core.security.security.ActiveMQSecurityManager5 接口的用户定义的实现。例如:

    <broker xmlns="http://activemq.org/schema">
       ...
       <security-manager class-name="com.myclass.MySecurityManager">
          <property key="myKey1" value="myValue1"/>
          <property key="myKey2" value="myValue2"/>
       </security-manager>
       ...
    </broker>

其他资源

5.6.3. 运行自定义安全管理器示例程序

AMQ Broker 包括一个示例程序,演示了如何实现自定义安全管理器。在示例中,自定义安全管理器记录身份验证和授权的详细信息,然后将详细信息传递给 ActiveMQJAASSecurityManager 实例(即默认安全管理器)。

以下流程演示了如何运行自定义安全管理器示例程序。

先决条件

  • 必须设置您的机器才能运行 AMQ Broker 示例程序。如需更多信息,请参阅 运行 AMQ Broker 示例

流程

  1. 导航到包含自定义安全管理器示例的目录。

    $ cd <install_dir>/examples/features/standard/security-manager
  2. 运行示例。

    $ mvn verify
注意

如果您希望在运行示例程序时手动创建并启动代理实例,请将上一步中的命令替换为 mvn -PnoServer verify

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.