7.2. 保护目标
除了保护远程连接到消息传递服务器外,您还可以配置特定目的地的安全性。这可以通过使用 security-setting
配置元素添加安全约束来实现。JBoss EAP 消息传递默认配置有 security-setting
,如以下管理 CLI 命令的输出所示:
security-setting
选项在 name
字段中使用通配符来处理要应用安全性约束的目的地。单个 #
的值将匹配任何地址。有关在安全约束中使用通配符的更多信息,请参阅基于角色的安全性。
7.2.1. 地址基于角色的安全性 复制链接链接已复制到粘贴板!
JBoss EAP 消息传递包含一种灵活的基于角色的安全模型,用于根据队列的地址将安全性应用到队列中。
核心 JBoss EAP 消息传递服务器主要由绑定至地址的队列集组成。将消息发送到地址时,服务器首先查找绑定到该地址的一组队列,然后将消息路由到绑定队列。
JBoss EAP 消息传递具有一组权限,可以根据队列的地址对其应用。可以使用地址上的完全字符串匹配,也可以使用通配符字符 #
和 *
。有关如何使用通配符语法的更多信息,请参阅地址设置。
您可以为每个 security-setting
创建多个角色,并且有 7 个权限设置可应用于角色。以下是可用权限的完整列表:
-
create-durable-queue
允许角色在匹配的地址下创建持久队列。 -
delete-durable-queue
允许角色删除匹配地址下的持久队列。 -
create-non-durable-queue
允许角色在匹配地址下创建不可处理队列。 -
delete-non-durable-queue
允许角色删除匹配地址下的不可解析队列。 -
send
允许角色发送消息到匹配的地址。 -
使用
时,该角色可以使用绑定到匹配地址的队列中的消息。 -
管理
允许角色通过发送管理消息到管理地址来调用管理操作。
配置基于角色的安全性
要开始将基于角色的安全性用于 security-setting
,您必须首先创建一个:例如,下方创建了一个 security-setting
of news.europe.#
。它适用于从 news.europe 开始的任何目的地,
如 news.europe.fr 或
news.europe.tech.uk
。
/subsystem=messaging-activemq/server=default/security-setting=news.europe.#:add() {"outcome" => "success"}
/subsystem=messaging-activemq/server=default/security-setting=news.europe.#:add()
{"outcome" => "success"}
接下来,您要将角色添加到您创建的 security-setting
中并为它声明权限。在以下示例中,创建 dev
角色并授予使用和发送到队列的权限,以及创建和删除不可调度队列的权限。由于默认值为 false
,因此您必须仅告知 JBoss EAP 要打开的权限。
/subsystem=messaging-activemq/server=default/security-setting=news.europe.#/role=dev:add(consume=true,delete-non-durable-queue=true,create-non-durable-queue=true,send=true) {"outcome" => "success"}
/subsystem=messaging-activemq/server=default/security-setting=news.europe.#/role=dev:add(consume=true,delete-non-durable-queue=true,create-non-durable-queue=true,send=true)
{"outcome" => "success"}
为了进一步说明权限的使用,以下示例创建了 管理员
角色,并允许它通过切换管理权限来发送 管理
消息。另外,也会切换和删除持久队列的权限:
/subsystem=messaging-activemq/server=default/security-setting=news.europe.#/role=admin:add(manage=true,create-durable-queue=true,delete-durable-queue=true) {"outcome" => "success"}
/subsystem=messaging-activemq/server=default/security-setting=news.europe.#/role=admin:add(manage=true,create-durable-queue=true,delete-durable-queue=true)
{"outcome" => "success"}
若要确认 security-setting
的配置,可使用管理 CLI。记得使用 recursive=true
选项来完全显示权限:
上面,管理 CLI 完全 显示以字符串 news.europe
. 开头的地址的权限。总之,只有具备 admin 角色的用户
才能创建或删除持久队列,而只有具有 dev
角色的用户才能创建或删除不可覆盖的队列。此外,具有 dev 角色的用户
可以发送或消耗消息,但 管理员用户
不能。但是,他们可以发送管理消息,因为其 管理
权限已设为 true
。
如果多个匹配项适用于一组地址,则更具体的匹配项具有优先权。例如,地址 news.europe.tech.uk.#
比 news.europe.tech.#
更具体。由于不会继承权限,因此您可以通过不指定权限来有效地拒绝更具体的 security-setting
块中的权限。否则,将无法拒绝地址子组的权限。
用户之间的映射和他们拥有的角色之间的映射由安全管理器处理。JBoss EAP 附带了一个用户经理,从磁盘上的文件读取用户凭据,也可插入 JAAS 或 JBoss EAP 安全性。
有关配置安全管理器的更多信息,请参阅 JBoss EAP 安全架构指南。
7.2.1.1. 使用传统安全子系统授予未经身份验证的客户端角色 复制链接链接已复制到粘贴板!
如果您希望 JBoss EAP 自动向未经身份验证的客户端授予客户端,客户机
角色将进行以下两项更改:
将新
模块选项
添加到其他
安全域。新选项(unauthenticatedIdentity
)将告知 JBoss EAP 向未经身份验证的客户端授予guest
访问权限。推荐的做法是使用管理 CLI:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,在发出 命令后,服务器需要重新加载。您可以使用以下管理 CLI 命令确认新选项:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,在执行该命令后,您的服务器配置文件应类似如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过删除
#
字符,取消注释application-roles.properties
文件中的以下行。该文件位于EAP_HOME/standalone/configuration/ 或
EAP_HOME/domain/configuration/
中,具体取决于您是分别使用单机服务器还是域控制器。#guest=guest
#guest=guest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
远程客户端现在应当能够访问服务器,而无需进行身份验证。他们将获得与 guest
角色相关联的权限。