將 ActiveMQ 代理程式與 整合 LDAP - Amazon MQ

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將 ActiveMQ 代理程式與 整合 LDAP

重要

LDAP RabbitMQ 代理程式不支援 整合。

Amazon MQ 不支援私有 CA 發行的伺服器憑證。

您可以使用下列TLS已啟用的通訊協定來存取 ActiveMQ 代理程式:

Amazon MQ 提供原生 ActiveMQ 身分驗證與LDAP身分驗證和授權之間的選擇,以管理使用者許可。如需與 ActiveMQ 使用者名稱和密碼相關限制的相關資訊,請參閱使用者

若要授權 ActiveMQ 使用者和群組使用佇列和主題,您必須編輯代理程式的組態。Amazon MQ 使用 ActiveMQ 的簡單身分驗證外掛程式,將讀取和寫入限制於目的地。如需詳細資訊和範例,請參閱 一律設定授權映射authorizationEntry

注意

目前,Amazon MQ 不支援用戶端憑證身分驗證。

LDAP 與 ActiveMQ 整合

您可以透過儲存在輕量型目錄存取通訊協定 (LDAP) 伺服器的憑證來驗證 Amazon MQ 使用者。您也可以新增、刪除和修改 Amazon MQ 使用者,並指派主題和佇列的許可。建立、更新和刪除代理程式等管理操作仍需要IAM憑證,且未與 整合LDAP。

想要使用LDAP伺服器簡化和集中 Amazon MQ 代理程式身分驗證和授權的客戶可以使用此功能。保留LDAP伺服器中的所有使用者登入資料可集中儲存和管理這些登入資料,從而節省時間和精力。

Amazon MQ 使用 Apache ActiveMQ JAAS外掛程式LDAP提供支援。Amazon MQ 也支援外掛程式支援的任何LDAP伺服器,例如 Microsoft Active Directory 或 OpenLDAP。如需外掛程式的詳細資訊,請參閱 Active MQ 文件的安全一節。

除了使用者之外,您還可以透過LDAP伺服器指定特定群組或使用者的主題和佇列存取權。您可以透過建立代表LDAP伺服器中主題和佇列的項目,然後將許可指派給特定LDAP使用者或群組來執行此操作。然後,您可以設定代理程式從LDAP伺服器擷取授權資料。

必要條件

在新增LDAP支援至新的或現有的 Amazon MQ 代理程式之前,您必須設定服務帳戶。需要此服務帳戶才能啟動與LDAP伺服器的連線,且必須具有正確的許可才能進行此連線。此服務帳戶會為您的代理程式設定LDAP身分驗證。任何連續的用戶端連線都會透過相同的連線進行驗證。

服務帳戶是LDAP伺服器中的帳戶,具有啟動連線的存取權。這是標準LDAP要求,您只需要提供一次服務帳戶憑證。設定連線後,所有未來的用戶端連線都會透過您的LDAP伺服器進行身分驗證。您的服務帳戶登入資料會以加密形式安全地儲存,只有 Amazon MQ 可以存取。

若要與 ActiveMQ 整合,LDAP伺服器上需要特定的目錄資訊樹狀目錄 (DIT)。如需清楚顯示此結構的範例ldif檔案,請參閱 ActiveMQ 文件的安全區段中的將下列LDIF檔案匯入LDAP伺服器

入門 LDAP

若要開始使用,請導覽至 Amazon MQ 主控台,並在建立新 Amazon MQ 或編輯現有代理程式執行個體時選擇LDAP身分驗證和授權

提供服務帳戶的相關資訊:

  • 完整網域名稱 發出身分驗證和授權請求的LDAP伺服器位置。

    注意

    您提供的LDAP伺服器的完整網域名稱不得包含通訊協定或連接埠號碼。Amazon MQ 會在完整網域名稱前面加上通訊協定 ldaps,並附加連接埠號碼 636

    例如,如果您提供下列完全合格的網域:example.com,Amazon MQ 將使用下列 存取您的LDAP伺服器URL:ldaps://example.com:636

    若要讓代理程式主機能夠成功與LDAP伺服器通訊,完整網域名稱必須可公開解析。若要保護LDAP伺服器隱私和安全,請限制伺服器傳入規則中的傳入流量,以僅允許源自代理程式 的流量VPC。

  • 服務帳戶使用者名稱 將用於執行初始繫結至LDAP伺服器的使用者的區分名稱。

  • Service account password (服務帳戶密碼) 執行初始繫結之使用者的密碼。

下圖突顯提供這些詳細資料的位置。

在何處指定LDAP服務帳戶詳細資訊。

LDAP登入組態區段中,提供下列必要資訊:

  • 使用者基礎 將搜尋使用者的目錄資訊樹狀結構 (DIT) 中節點的辨別名稱。

  • 使用者搜尋比對 搜尋LDAP篩選條件將用於尋找 中的使用者userBase。用戶端的使用者名稱會替換為搜尋篩選條件中的 {0} 預留位置。如需詳細資訊,請參閱 身分驗證授權

  • 角色基礎 中DIT將搜尋角色的節點的區分名稱。角色可以設定為目錄中的明確LDAP群組項目。典型的角色項目可能包含角色名稱的一個屬性,例如一般名稱 (CN),以及另一個屬性 (例如 member),其值代表屬於角色群組之使用者的辨別名稱或使用者名稱。例如,假設組織單位 group,您可以提供以下辨別名稱:ou=group,dc=example,dc=com

  • 角色搜尋比對 用來尋找 中角色的LDAP搜尋篩選條件roleBaseuserSearchMatching 比對的使用者辨別名稱會替換為搜尋篩選條件中的 {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

  • Role Name (角色名稱) 角色項目中的群組名稱屬性,其值為該角色的名稱。例如,您可以為群組項目的一般名稱指定 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,而且在擁有組織單位 corp和 的網域元件 和 中Users,則您會使用下列 作為使用者基礎:

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 群組。

授權

若要授權,會在代理程式組態中指定許可搜尋基礎。授權會依每個目的地 (或萬用字元、目的地集) 透過 cachedLdapAuthorizationMap 元素 (在代理程式的 activemq.xml 組態檔中找到) 進行。如需詳細資訊,請參閱快取LDAP授權模組

注意

若要能夠使用代理程式activemq.xml組態檔案中的 cachedLDAPAuthorizationMap元素,您必須在透過 建立組態 AWS Management Console時選擇LDAP身分驗證和授權選項,或使用 Amazon MQ 建立新組態LDAP時將 authenticationStrategy 屬性設定為 API。

您必須提供下列三個屬性做為 cachedLDAPAuthorizationMap 元素的一部分:

  • queueSearchBase

  • topicSearchBase

  • tempSearchBase

重要

為了防止敏感資訊直接放入代理程式的組態檔中,Amazon MQ 會阻止下列屬性使用於 cachedLdapAuthorizationMap 中:

  • connectionURL

  • connectionUsername

  • connectionPassword

當您建立代理程式時,Amazon MQ 會將您透過 或 提供的值替換為上述屬性 AWS Management Console,以取代在API請求的 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許可的位置。因此,對於上述 範例 AWS Managed Microsoft AD,使用 corpexample和 的相同網域元件com,您會指定名為 的組織單位destination,以包含所有目的地類型。在該 OU 內,您會分別為 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
            

在每種目的地類型 (佇列、主題、暫存) 的 OU 中,可以提供萬用字元或特定目的地名稱。例如,若要為所有以字首 DEMO.EVENTS.$. 開頭的佇列提供授權規則,您可以建立下列 OU:

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

DEMO.EVENTS.$ OU 位於 Queue OU 內。

如需 ActiveMQ 中萬用字元的詳細資訊,請參閱萬用字元

若要提供特定佇列的授權規則,例如 DEMO。MYQUEUE,請指定類似下列內容:

OU=DEMO.MYQUEUE,OU=Queue,OU=Destination,OU=corp,DC=corp,DC=example,DC=com
特定佇列的授權規則

安全群組

在代表目的地或萬用字元的每個 OU 中,您必須建立三個安全群組。如同 ActiveMQ 中的所有許可,這些是讀取/寫入/管理員許可。如需各個許可允許使用者執行的動作詳細資訊,請參閱 ActiveMQ 文件中的安全

您必須將這些安全群組命名為 readwriteadmin。在這些安全群組中,您可以新增使用者或群組,而後這些使用者或群組就會有執行相關動作的許可。每個萬用字元目的地集或個別目的地都需要這些安全群組。

安全群組
注意

當您建立管理員群組時,群組名稱會發生衝突。發生此衝突是因為舊版 Windows 2000 前規則不允許群組共用相同的名稱,即使群組位於 的不同位置DIT。Windows 2000 之前文字方塊中的值對設定沒有影響,但它必須是全域唯一的。為了避免這種衝突,您可以將 uuid 字尾附加至 admin 群組。

這是我的映像。

將使用者新增至特殊目的地的 admin 安全群組,可讓使用者建立和刪除該主題。將它們新增至 read 安全群組可讓它們從目的地讀取,而將它們新增至 write 群組可讓它們能夠寫入至目的地。

除了將個別使用者新增至安全群組許可之外,您也可以新增整個群組。不過,因為 ActiveMQ 再次硬式編碼群組的屬性名稱,所以您必須確定要新增的群組具有物件類別 groupOfNames,如 activemq 原始程式碼所示。

如果要執行這項操作,請讓使用者遵循 uid 的相同程序。請參閱在 Windows Server 2016 (及後續) 版本的 Active Directory 使用者和電腦中設定 ID 映射