搜索

5.6. 指定安全管理器

download PDF

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

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

  • ActiveMQJAASSecurityManager 安全管理器.此安全管理器提供与 JAAS 和 Red Hat JBoss Enterprise Application Platform (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 代理组,您在实时代理上复制的任何用户管理都会在故障切换时自动反映在备份代理中。这可避免单独管理 LDAP 服务器,这是实现此行为的替代方法。

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

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

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

先决条件

下载了 自定义安全管理器示例

流程

  1. 导航到包含自定义安全管理器示例的目录。以下示例假设您将示例下载到名为 amq-broker-examples 的目录。

    $ cd amq-broker-examples/examples/features/standard/security-manager
  2. 运行示例。

    $ mvn verify
注意

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

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.