将 ActiveMQ 代理程序与 LDAP 集成 - Amazon MQ
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

将 ActiveMQ 代理程序与 LDAP 集成

重要

RabbitMQ 代理程序不支持 LDAP 集成。

您可以使用以下启用 TLS 的协议访问 ActiveMQ 代理程序:

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

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

注意

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

将 LDAP 与 ActiveMQ 集成

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

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

Amazon MQ 使用 Apache ActiveMQ JAAS 插件提供 LDAP 支持。该插件支持的任何 LDAP 服务器,如微软活动目录或 OpenLDAP 也受 Amazon MQ 的支持。有关插件的更多信息,请参阅安全部分中的 “活动 MQ” 文档。

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

Prerequisites

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

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

要与 ActiveMQ 集成,LDAP 服务器上需要一个特定的目录信息树 (DIT)。例如,ldif文件,可以清楚地显示此结构,请参阅将以下 LDIF 文件导入 LDAP 服务器中的安全部分中的相关内容。

LDAP 入门

要开始操作,请导航到 Amazon MQ 控制台,然后选择LDAP 身份验证和授权当您创建新的 Amazon MQ 或编辑现有经纪商实例时。

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

  • 完全限定域名要向其发出身份验证和授权请求的 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}在搜索筛选器中占位符。有关更多信息,请参阅 AuthenticationAuthorization

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

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

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


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

可选设置部分中,可提供以下可选信息:

  • 用户角色名称用户组成员资格的用户目录条目中 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

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

LDAP 集成的工作方式

您可以考虑集成在两个主要类别:身份验证结构和授权结构。

Authentication

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

提供给 ActiveMQ 代理的用户群必须指向 DIT 中用户存储在 LDAP 服务器中的节点。例如,如果您使用的是Amazon托管微软 AD,并且您拥有域组件corpexample, 和com, 并在那些你有组织单位corpUsers,您可以使用以下内容作为您的用户群:

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

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


                    搜索用户的位置

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

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

Authorization

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

注意

为了能够使用cachedLdapAuthorizationMap元素中的activemq.xml配置文件中,您必须选择LDAP 身份验证和授权选项时创建配置通过Amazon Web Services Management Console,或者将authenticationStrategy属性为LDAP使用 Amazon MQ API 创建新配置时。

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

  • queueSearchBase

  • topicSearchBase

  • tempSearchBase

重要

为了防止敏感信息直接放置在经纪商的配置文件中,Amazon MQ 阻止以下属性在cachedLdapAuthorizationMap

  • connectionURL

  • connectionUsername

  • connectionPassword

当您创建经纪商时,Amazon MQ 会替换您通过Amazon Web Services Management Console,或者在ldapServerMetadata属性,用于上述属性。

下面演示了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 中指定每种目标类型的权限的位置。所以对于上面的例子Amazon托管微软 AD,使用corpexample, 和com,则应指定一个名为destination以包含所有目标类型。在该 OU 中,您将为queues,一个用于topics,另一个用于temp目标。

这意味着您的队列搜索库(为队列类型的目标提供授权信息)将在 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
            

在每种目标类型(队列、主题、临时)的 OU 中,可以提供通配符或特定目标名称。例如,若要为以前缀 DEO.EVENT.$. 开头的所有队列提供授权规则,您可以创建以下 OU:

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

这些区域有:DEMO.EVENTS.$OU 位于QueueOU.

有关 ActiveMQ 中通配符的详细信息,请参阅通配符

要为特定队列提供授权规则(如 DEO.MYQUEUE),请指定类似以下内容:

OU=DEMO.MYQUEUE,OU=Queue,OU=Destination,OU=corp,DC=corp,DC=example,DC=com

                    特定队列的授权规则

安全组

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

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


                    安全组
注意

创建管理组时,将与组名称发生冲突。发生此冲突的原因是,传统的 Windows 2000 之前规则不允许组共享相同的名称,即使这些组位于 DIT 的不同位置。位置在窗口前 2000文本框对设置没有影响,但它必须是全局唯一的。为了避免这种冲突,您可以在uuid后缀admin组中)。


                        这是我的图像。

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

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

若要执行此操作,请按照与uid的用户。请参阅在 Windows 服务器 2016 年(及后续)版本的活动目录用户和计算机中配置 ID 映射