将 ActiveMQ 经纪商与 LDAP - Amazon MQ

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 ActiveMQ 经纪商与 LDAP

重要

LDAPRabbitMQ 代理不支持集成。

Amazon MQ 不支持私有 CA 颁发的服务器证书。

在启用后,您可以使用以下协议访问您的 ActiveMQ 代理:TLS

Amazon MQ 提供了在本地 ActiveMQ 身份验证和身份验证以及LDAP用于管理用户权限的授权之间进行选择。有关与 ActiveMQ 用户名和密码相关的限制的信息,请参阅用户

要授权 ActiveMQ 用户和组使用队列和主题,必须编辑您的代理的配置。Amazon MQ 使用 ActiveMQ 的简单身份验证插件来限制读取和写入到目标。有关详细信息和示例,请参阅始终配置授权映射authorizationEntry

注意

目前,Amazon MQ 不支持客户端证书身份验证。

LDAP与 ActiveMQ 集成

您可以通过存储在轻量级目录访问协议 (LDAP) 服务器中的凭证对 Amazon MQ 用户进行身份验证。您还可以添加、删除和修改 Amazon MQ 用户,并借此为主题和队列分配权限。诸如创建、更新和删除代理之类的管理操作仍需要IAM凭证,并且未与之集成LDAP。

想要使用服务器简化和集中其 Amazon MQ 代理身份验证和授权LDAP的客户可以使用此功能。将所有用户凭据保存在LDAP服务器中可以为存储和管理这些凭据提供一个中心位置,从而节省时间和精力。

亚马逊 MQ 使用 Apache Activ JAAS eMQ 插件提供LDAP支持。Amazon MQ 还支持该插件支持的任何LDAP服务器LDAP,例如微软 Active Directory 或 Open。有关插件的更多信息,请参阅 Active MQ 文档的 Security (安全) 部分。

除了用户之外,您还可以通过LDAP服务器为特定群组或用户指定对主题和队列的访问权限。为此,您可以创建代表LDAP服务器中主题和队列的条目,然后向特定LDAP用户或组分配权限。然后,您可以将代理配置为从LDAP服务器检索授权数据。

先决条件

在向新的或现有的 Amazon MQ 经纪商添加LDAP支持之前,您必须设置服务账户。此服务帐户是启动与LDAP服务器的连接所必需的,并且必须具有正确的权限才能建立此连接。此服务账户将为您的经纪人设置LDAP身份验证。任何连续的客户端连接都将通过同一连接进行身份验证。

服务帐户是您LDAP服务器中的一个帐户,它有权启动连接。这是一项标准LDAP要求,您只需提供一次服务帐号凭证。建立连接后,所有未来的 Client 端连接都将通过您的LDAP服务器进行身份验证。您的服务账户凭证以加密形式安全存储,只有 Amazon MQ 才能访问。

要与 ActiveMQ 集成,需要在服务器上安装特定的目录信息树 DIT ()。LDAP有关清楚显示此结构的示例ldif文件,请参阅 ActiveMQ 文档的 安全” 部分中的将以下LDIF文件导入LDAP服务器

入门 LDAP

首先,请导航到 Amazon MQ 控制台,并在创建新的 Amazon MQ 或编辑现有代理实例时选择LDAP身份验证和授权

提供有关服务账户的以下信息:

  • 完全限定域名要向其发出身份验证和授权请求的LDAP服务器的位置。

    注意

    您提供的LDAP服务器的完全限定域名不得包含协议或端口号。Amazon MQ 会在完全限定域名前加上协议 ldaps,并将附加端口号 636

    例如,如果您提供以下完全限定的域:example.com,Amazon MQ 将使用以下URL方式访问您的LDAP服务器:。ldaps://example.com:636

    为了使代理主机能够成功地与LDAP服务器通信,完全限定的域名必须是可公开解析的。为了保持LDAP服务器的私密性和安全,请在服务器的入站规则中限制入站流量,使其仅允许来自代理内部的流量VPC。

  • 服务帐户用户名用于执行与LDAP服务器的初始绑定的用户的可分辨名称。

  • 服务账户密码:执行初始绑定的用户的密码。

下图突出显示了提供这些详细信息的位置。

在哪里指定LDAP服务帐号的详细信息。

LDAP登录配置部分,提供以下必需信息:

  • 用户群目录信息树中要搜索用户的节点的可分辨名称 (DIT)。

  • 用户搜索匹配将用于在中查找用户的LDAP搜索过滤器userBase。客户端的用户名将替换搜索筛选条件中的 {0} 占位符。有关更多信息,请参阅身份验证授权

  • 角色基础中要搜索角色DIT的节点的可分辨名称。可以将角色配置为目录中的显式LDAP组条目。典型角色条目可能由角色名称的一个属性(例如公用名(CN))和另一个属性(例如 member)组成,其中的值表示属于角色组的用户的可分辨名称或用户名。例如,鉴于组织部门 group,您可以提供以下可分辨名称:ou=group,dc=example,dc=com

  • 角色搜索匹配LDAP搜索过滤器将用于在中查找角色roleBase. userSearchMatching 匹配的用户的可分辨名称将替换为搜索筛选条件中的 {0} 占位符。客户端的用户名将替换为 {1} 占位符。例如,如果目录中的角色条目包含名为 member 的属性(包含该角色中所有用户的用户名),则可以提供以下搜索筛选条件:(member:=uid={1})

下图突出显示了指定这些详细信息的位置。

在何处指定LDAP登录详细信息。

Optional settings (可选设置) 部分中,您可以提供以下可选信息:

  • 用户角色名称用户目录条目中该用户的组成员资格LDAP属性的名称。在某些情况下,用户角色可能由用户目录条目中属性的值来标识。userRoleName 选项允许您提供此属性的名称。例如,让我们考虑以下用户条目:

    dn: uid=jdoe,ou=user,dc=example,dc=com objectClass: user uid: jdoe sn: jane cn: Jane Doe mail: j.doe@somecompany.com memberOf: role1 userPassword: password

    要为上述示例提供正确的 userRoleName,您需要指定 memberOf 属性。如果身份验证成功,则会向用户分配角色 role1

  • 角色名称:角色条目中的组名属性,值为该角色的名称。例如,您可以为组条目的通用名称指定 cn。如果身份验证成功,则会为用户分配其作为成员的每个角色条目的 cn 属性值。

  • 用户搜索子树定义LDAP用户搜索查询的范围。如果为 true,则搜索范围设置为由 userBase 定义的节点下的整个子树。

  • 角色搜索子树定义LDAP角色搜索查询的范围。如果为 true,则搜索范围设置为由 roleBase 定义的节点下的整个子树。

下图突出显示了指定这些可选设置的位置。

Optional settings for LDAP attributes and search scope in role search matching.

LDAP整合的工作原理

您可以将集成分为两大类:身份验证结构和授权结构。

身份验证

对于身份验证,客户端凭证必须有效。这些凭据是针对LDAP服务器用户群中的用户进行验证的。

提供给 ActiveMQ 代理的用户群必须指向服务器中DIT存储用户的节点。LDAP例如,如果您正在使用 AWS Managed Microsoft AD,并且有域组件corpexamplecom、和,并且在这些组件中包含组织单位corpUsers,则应使用以下内容作为用户群:

OU=Users,OU=corp,DC=corp,DC=example,DC=com
                

ActiveMQ 代理将在中的DIT此位置搜索用户,以便对客户端向代理发出的连接请求进行身份验证。

搜索用户的位置

由于 ActiveMQ 源代码对用户的属性名称硬编码为 uid,您必须确保每个用户都设置了此属性。为简单起见,您可以使用用户的连接用户名。有关更多信息,请参阅 activemq 源代码和在 Windows Server 2016(及后续)版本的 Active Directory 用户和计算机中配置 ID 映射

要为特定用户启用 ActiveMQ 控制台访问,请确保他们属于 amazonmq-console-admins 组。

授权

对于授权,权限搜索基础在代理配置中指定。授权通过代理的 activemq.xml 配置文件中的 cachedLdapAuthorizationMap 元素在每个目标(或通配符,目标集)上完成。有关更多信息,请参阅缓存LDAP授权模块

注意

为了能够使用代理activemq.xml配置文件中的cachedLDAPAuthorizationMap元素,您必须在通过创建配置时选择 “LDAP身份验证和授权” 选项 AWS Management Console,或者在使用 Amazon M API Q 创建新配置LDAP时将该authenticationStrategy属性设置为。

您必须提供以下三个属性作为 cachedLDAPAuthorizationMap 元素的一部分:

  • queueSearchBase

  • topicSearchBase

  • tempSearchBase

重要

为了防止敏感信息直接放置在代理的配置文件中,Amazon MQ 阻止以下属性在 cachedLdapAuthorizationMap 中使用:

  • connectionURL

  • connectionUsername

  • connectionPassword

当您创建经纪商时,Amazon MQ 会使用您通过或API请求ldapServerMetadata属性提供的值来代替上述属性。 AWS Management Console

以下演示了 cachedLdapAuthorizationMap 的工作示例。

<authorizationPlugin> <map> <cachedLDAPAuthorizationMap queueSearchBase="ou=Queue,ou=Destination,ou=corp,dc=corp,dc=example,dc=com" topicSearchBase="ou=Topic,ou=Destination,ou=corp,dc=corp,dc=example,dc=com" tempSearchBase="ou=Temp,ou=Destination,ou=corp,dc=corp,dc=example,dc=com" refreshInterval="300000" legacyGroupMapping="false" /> </map> </authorizationPlugin>

这些值标识了指定每种目的地类型权限DIT的位置。因此,对于上面的示例 AWS Managed Microsoft AD,使用corpexample、和的相同域组件com,您可以指定一个名为的组织单位destination来包含所有目标类型。在该组织部门中,您将为 queuestopicstemp 目标分别创建一个。

这意味着你的队列搜索库(提供队列类型目的地的授权信息)将在你的以下位置DIT:

OU=Queue,OU=Destination,OU=corp,DC=corp,DC=example,DC=com
                
队列搜索基础位置。

同样,主题和临时目标的权限规则将位于以下内容的同一级别:DIT

OU=Topic,OU=Destination,OU=corp,DC=corp,DC=example,DC=com
OU=Temp,OU=Destination,OU=corp,DC=corp,DC=example,DC=com
            

在每个目标类型(队列、主题、临时)的组织部门中,可以提供通配符或特定目标名称。例如,为所有以该前缀开头的队列提供授权规则DEMO。 EVENTS.$.,你可以创建以下 OU:

OU=DEMO.EVENTS.$,OU=Queue,OU=Destination,OU=corp,DC=corp,DC=example,DC=com
注意

DEMO.EVENTS.$ 组织部门位于 Queue 组织部门内。

有关 ActiveMQ 中通配符的更多信息,请参阅 Wildcards (通配符)

为特定队列提供授权规则,例如DEMO。 MYQUEUE,请指定类似以下内容的内容:

OU=DEMO.MYQUEUE,OU=Queue,OU=Destination,OU=corp,DC=corp,DC=example,DC=com
特定队列的授权规则

安全组

在每个表示目标或通配符的组织部门中,您必须创建三个安全组。与 ActiveMQ 中的所有权限一样,这些是读/写/管理权限。有关每个权限允许用户执行哪些操作的更多信息,请参阅 ActiveMQ 文档中的安全性

您必须命名这些安全组 readwriteadmin。在这些安全组中,您可以添加用户或组,他们将有权执行相关操作。对于每个通配符目标集或单个目标,您都需要这些安全组。

安全组
注意

创建管理组时,将与组名称发生冲突。之所以发生这种冲突,是因为 Windows 2000 之前的旧规则不允许群组共享相同的名称,即使这些群组位于不同的位置。DITWindows 2000 之前版本文本框中的值对设置没有影响,但必须是全局唯一的。为了避免这一冲突,可以为每个 admin 组添加 uuid 后缀。

这是我的映像。

将用户添加到特定目标的 admin 安全组将允许用户创建和删除该主题。将他们添加到 read 安全组将使他们能够从目标读取,而将他们添加到 write 组则将使他们能够写入目标。

除了将单个用户添加到安全组权限之外,您还可以添加整个组。但是,由于 ActiveMQ 再次对组的属性名称进行硬编码,因此必须确保要添加的组具有对象类 groupOfNames,如 activemq 源代码中所示。

要执行此操作,请遵循与用户 uid 相同的流程。请参阅在 Windows Server 2016(及后续)版本的 Active Directory 用户和计算机中配置 ID 映射