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>

以下示例演示了如何将角色映射到名称包含指定前缀的每个队列。在本例中,使用星号(*)通配符运算符匹配以前缀 示例 开头的所有队列名称。

<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.artemis 的队列与两个通配符键表达式匹配。因此,代理需要优先选择一组要映射到队列的角色、第一个匹配元素中指定的角色,或者第二个 匹配 元素中指定的角色。

当同一域中有多个匹配项时,代理在映射角色时会使用以下优先级方案:

  • 完全匹配优先于通配符匹配
  • 较长的通配符匹配优先于较短的通配符匹配

在本例中,由于较长的通配符表达式与 example.sub.queue 最密切的队列名称匹配,因此代理应用在第二个 <match> 元素中配置的 role-mapping。

注意

default-access 元素是每个不使用 role-access白名单 配置处理的方法调用的 catch-all 元素。default-accessrole-access 元素具有相同的 match 元素语义。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.