5.3.2.2.2. 基于角色的访问示例
本节演示了以下应用基于角色的访问控制的示例:
下例演示了如何使用 key 属性将
角色映射到指定域中的所有队列。
<match domain="org.apache.activemq.artemis" key="subcomponent=queues"> <access method="list*" roles="view,update,amq"/> <access method="get*" roles="view,update,amq"/> <access method="is*" roles="view,update,amq"/> <access method="set*" roles="update,amq"/> <access method="*" roles="amq"/> </match>
下例演示了如何使用 key 属性将
角色映射到特定指定队列。在本例中,指定队列为 exampleQueue
。
<match domain="org.apache.activemq.artemis" key="queue=exampleQueue"> <access method="list*" roles="view,update,amq"/> <access method="get*" roles="view,update,amq"/> <access method="is*" roles="view,update,amq"/> <access method="set*" roles="update,amq"/> <access method="*" roles="amq"/> </match>
下例演示了如何将角色映射到名称包含指定前缀的每个队列。在本例中,使用星号(*
)通配符运算符匹配以前缀 example 开头的所有队列名称。
<match domain="org.apache.activemq.artemis" key="queue=example*"> <access method="list*" roles="view,update,amq"/> <access method="get*" roles="view,update,amq"/> <access method="is*" roles="view,update,amq"/> <access method="set*" roles="update,amq"/> <access method="*" roles="amq"/> </match>
您可能希望针对同一属性的不同组映射角色(例如,不同的队列集)。在这种情况下,您可以在配置文件中包含多个 匹配
元素。但是,同一域中可以有多个匹配项。
例如,考虑配置如下的两个 <match> 元素
:
<match domain="org.apache.activemq.artemis" key="queue=example*">
和
<match domain="org.apache.activemq.artemis" key="queue=example.sub*">
基于此配置,org.apache.activemq
的队列与两个通配符键表达式都匹配。因此,代理需要一个优先级方案来确定映射到队列的角色集合、第一个 .artemis 域中名为 example.sub.
queue匹配
元素中指定的角色集合,或者第二个 匹配
元素中指定的角色。
当同一域中有多个匹配项时,代理在映射角色时使用以下优先级方案:
- 完全匹配项优先于通配符匹配
- 通配符匹配时间超过较短的通配符匹配
在本例中,由于较长的通配符表达式与 example. sub.queue
的队列名称匹配,所以代理会应用在第二个 <match>
元素中配置的角色映射。
default-access
元素是每个不使用 role-access 或
all 元素。whitelist
配置来处理的每个方法调用的 catch-default-access
和 role-access
元素具有同样的 匹配
元素语义。