5.4.2. 配置 LDAP 授权


LegacyLDAPSecuritySettingPlugin 安全设置插件读取之前由 LDAPAuthorizationMap 和 缓存LDAPAuthorizationMap 在 AMQ 6 中处理的安全信息,并将这些信息转换为对应的 AMQ 7 安全设置(如果可能)。

AMQ 6 和 AMQ 7 中的代理的安全实施与 AMQ 7 中的安全实施不完全匹配。因此,插件会在两个版本之间执行一些转换,以实现近乎相同的功能。

以下示例演示了如何配置插件。

流程

  1. 打开 <broker_instance_dir>/etc/broker.xml 配置文件。
  2. security-settings 元素内,添加 security-setting-plugin 元素。例如:

    <security-settings>
        <security-setting-plugin class-name="org.apache.activemq.artemis.core.server.impl.LegacyLDAPSecuritySettingPlugin">
            <setting name="initialContextFactory" value="com.sun.jndi.ldap.LdapCtxFactory"/>
            <setting name="connectionURL" value="ldap://localhost:1024"/>`ou=destinations,o=ActiveMQ,ou=system`
            <setting name="connectionUsername" value="uid=admin,ou=system"/>
            <setting name="connectionPassword" value="secret"/>
            <setting name="connectionProtocol" value="s"/>
            <setting name="authentication" value="simple"/>
        </security-setting-plugin>
    </security-settings>
    class-name
    其实施为 org.apache.activemq.artemis.core.server.impl.LegacyLDAPSecuritySettingPlugin
    initialContextFactory
    用于连接到 LDAP 的初始上下文工厂。必须始终设置为 com.sun.jndi.ldap.LdapCtxFactory (即默认值)。
    connectionURL
    使用 LDAP URL <ldap://Host:Port> 指定目录服务器的位置。您可以选择添加正斜杠 /,后面跟目录树中特定节点的可分辨名称(DN)来验证这个 URL。例如: ldap://ldapserver:10389/ou=system。默认值为 ldap://localhost:1024
    connectionUsername
    打开与目录服务器的连接的用户的 DN。例如,uid=admin,ou=system。目录服务器通常需要客户端显示用户名/密码凭据才能打开连接。
    connectionPassword
    connectionUsername 中的 DN 匹配的密码。在目录服务器中,在 Directory Information Tree (DIT)中,密码通常作为 userPassword 属性存储在对应的目录条目中。
    connectionProtocol
    当前未使用.以后,此选项可能允许您选择连接到目录服务器的安全套接字层(SSL)。必须显式设置这个选项,因为它没有默认值。
    身份验证

    指定绑定到 LDAP 服务器时使用的身份验证方法。这个参数的有效值为 simple (用户名和密码)或 none (匿名)。默认值为 simple

    注意

    不支持 简单的身份验证和安全层(SASL)身份验证。

以上配置示例中未显示的其他设置有:

destinationBase
指定子项为所有目标提供权限的节点的 DN。在这种情况下,DN 是一个字面值(即,不对属性值执行字符串替换)。例如,此属性的典型值为 ou=destinations,o=ActiveMQ,ou=system The defaults value is ou=destinations,o=ActiveMQ,ou=system
filter
指定 LDAP 搜索过滤器,用于查找任何目的地的权限。搜索过滤器会尝试匹配队列或主题节点的子项或子代之一。默认值为 (cn=*)
roleAttribute
指定与过滤器匹配的节点属性,该 过滤器 的值是角色的 DN。默认值为 uniqueMember
adminPermissionValue
指定与 admin 权限匹配的值。默认值为 admin
readPermissionValue
指定与 读取 权限匹配的值。默认值为 read
writePermissionValue
指定与 写入权限 匹配的值。默认值为 write
enableListener
指定是否启用自动接收 LDAP 服务器中进行的更新的监听程序,并实时更新代理的授权配置。默认值为 true
mapAdminToManage

指定是否将传统(即 AMQ 6) 管理 权限 映射到 AMQ 7 管理 权限。请参阅下表中的映射语义详情。默认值为 false

LDAP 中定义的队列或主题名称充当安全设置的"匹配",权限值从 AMQ 6 类型映射到 AMQ 7 类型,并且该角色按原样映射。由于 LDAP 中定义的队列或主题名称充当安全设置的匹配项,因此安全性设置可能无法如预期应用到 JMS 目的地。这是因为 AMQ 7 始终为 JMS 目的地添加前缀 "jms.queue." 或 "jms.topic."(根据需要)。

AMQ 6 的权限类型有三种 :读取写入管理员。ActiveMQ 网站描述了这些权限类型; 安全性.

AMQ 7 有以下权限类型:

  • createAddress
  • deleteAddress
  • createDurableQueue
  • deleteDurableQueue
  • createNonDurableQueue
  • deleteNonDurableQueue
  • send
  • 使用
  • 管理
  • browse

    下表显示了安全设置插件如何将 AMQ 6 权限类型映射到 AMQ 7 权限类型:

    AMQ 6 权限类型AMQ 7 权限类型

    读取

    使用、浏览

    write

    send

    admin

    createAddress, deleteAddress, createDurableQueue, deleteDurableQueue, createNonDurableQueue, deleteNonDurableQueue, manage(如果 mapAdminToManage 设为 true

    如下所述,在一些情况下,插件在 AMQ 6 和 AMQ 7 权限类型之间执行一些转换以实现等效:

    • 默认情况下,映射不包括 AMQ 7 管理 权限类型,因为 AMQ 6 中没有类似权限类型。但是,如果 mapAdminToManage 设为 true,则插件会将 AMQ 6 admin 权限映射到 AMQ 7 manage 权限。
    • AMQ 6 中的 admin 权限类型确定代理是否自动创建目的地(如果目标不存在),并且用户向其发送消息。如果用户有权向目的地发送消息,AMQ 7 会自动允许自动创建目的地。因此,默认情况下,插件会将旧 管理 权限映射到上面显示的 AMQ 7 权限。如果 mapAdminToManage 设为 true,该插件还会将 AMQ 6 admin 权限映射到 AMQ 7 manage 权限。
allowQueueAdminOnRead

是否要将传统的读取权限映射到 createDurableQueue、createNonDurableQueue 和 deleteDurableQueue 权限,以便 JMS 客户端能够创建持久且不可更改的订阅,而无需 admin 权限。AMQ 6 中允许这样做。默认值为 false。

下表显示了当 allowQueueAdminOnReadtrue 时,安全设置插件如何将 AMQ 6 权限类型映射到 AMQ 7 权限类型:

AMQ 6 权限类型AMQ 7 权限类型

读取

consume, browse, createDurableQueue, createNonDurableQueue, deleteDurableQueue

write

send

admin

createAddress, deleteAddress, deleteNonDurableQueue, manage(如果 mapAdminToManage 设置为 true

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.