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. 配置基本安全管理器
以下流程演示了如何配置代理以使用基本安全管理器。
流程
-
打开
<broker-instance-dir>/etc/boostrap.xml
配置文件。 在
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>
由于您无法手动修改保存用户和角色数据的绑定数据,且代理必须正在运行才能管理用户,因此建议您在第一次引导时保护代理的安全。要做到这一点,请定义 bootstrap 用户,其凭证可用于添加其他用户。
在
security-manager
元素中,添加bootstrapUser
、bootstrapPassword
和bootstrapRole
属性并指定值。例如:<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 用户定义了上述属性,则每次启动代理时都会设置这些凭证,不论您在代理运行时进行任何更改。
-
打开
<broker_instance_dir>/etc/broker.xml
配置文件。 在
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>
在之前在此流程中指定的 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>
-
其它资源
-
如需有关
ActiveMQBasicSecurityManager
类的更多信息,请参阅 ActiveMQ Artemis 核心 API 文档中的 Class ActiveMQBasicSecurityManager。 - 要了解如何在配置文件中加密密码,请参阅 第 5.9 节 “加密配置文件中的密码”。