搜索

5.3.2.2.2. 基于角色的访问示例

download PDF

本节演示了以下应用基于角色的访问控制的示例:

下例演示了如何使用 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 或 whitelist 配置来处理的每个方法调用的 catch- all 元素。default-accessrole-access 元素具有同样的 匹配 元素语义。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.