Integration von ActiveMQ-Brokern in LDAP - Amazon MQ

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Integration von ActiveMQ-Brokern in LDAP

Wichtig

Die LDAP-Integration wird für RabbitMQ-Broker nicht unterstützt.

Sie können über die folgenden Protokolle mit aktiviertem TLS auf Ihre ActiveMQ-Broker zugreifen:

Amazon MQ bietet die Wahl zwischen nativer ActiveMQ-Authentifizierung und LDAP-Authentifizierung und -Autorisierung, um Benutzerberechtigungen zu verwalten. Weitere Informationen über Einschränkungen im Zusammenhang mit ActiveMQ-Benutzernamen und -Passwörtern finden Sie unter Benutzer.

Um ActiveMQ-Benutzer und -Gruppen für die Arbeit mit Warteschlangen und Themen zu autorisieren, müssen Sie die Konfiguration Ihres Brokers bearbeiten. Amazon MQ verwendet zum Einschränken des Lese- und Schreibzugriffs auf Ziele das Simple Authentication Plugin von ActiveMQ. Weitere Informationen und Beispiele finden Sie unter Immer eine Autorisierungszuordnung konfigurieren und authorizationEntry.

Anmerkung

Derzeit unterstützt Amazon MQ keine Clientzertifikat-Authentifizierung.

Integrieren von LDAP mit ActiveMQ

Sie können Amazon MQ Benutzer über die Anmeldeinformationen authentifizieren, die in Ihrem LDAP-Server (Lightweight Directory Access Protocol) gespeichert sind. Außerdem können Sie Amazon-MQ-Benutzer hinzufügen, löschen und ändern und Themen und Warteschlangen Berechtigungen zuweisen. Verwaltungsvorgänge wie das Erstellen, Aktualisieren und Löschen von Brokern erfordern weiterhin IAM-Anmeldeinformationen und sind nicht in LDAP integriert.

Kunden, die ihre Amazon-MQ-Broker-Authentifizierung und -Autorisierung mithilfe eines LDAP-Servers vereinfachen und zentralisieren möchten, können diese Funktion nutzen. Das Speichern aller Benutzeranmeldeinformationen auf dem LDAP-Server spart Zeit und Aufwand, da ein zentraler Speicherort für die Speicherung und Verwaltung dieser Anmeldeinformationen bereitgestellt wird.

Amazon MQ bietet LDAP-Unterstützung mit dem Apache-ActiveMQ-JAAS-Plugin. Alle vom Plugin unterstützten LDAP-Server wie Microsoft Active Directory oder OpenLDAP werden ebenfalls von Amazon MQ unterstützt. Weitere Informationen zum Plugin finden Sie unter dem Abschnitt Sicherheit in der Active-MQ-Dokumentation.

Zusätzlich zu Benutzern können Sie den Zugriff auf Themen und Warteschlangen für eine bestimmte Gruppe oder einen Benutzer über Ihren LDAP-Server festlegen. Dazu erstellen Sie Einträge, die Themen und Warteschlangen auf Ihrem LDAP-Server darstellen und dann Berechtigungen einem bestimmten LDAP-Benutzer oder einer Gruppe zuweisen. Anschließend können Sie den Broker so konfigurieren, dass er Autorisierungsdaten vom LDAP-Server abruft.

Voraussetzungen

Bevor Sie LDAP-Support zu einem neuen oder vorhandenen Amazon-MQ-Broker hinzufügen, müssen Sie ein Service-Konto einrichten. Dieses Servicekonto ist erforderlich, um eine Verbindung zu einem LDAP-Server herzustellen und muss über die richtigen Berechtigungen verfügen, um diese Verbindung herzustellen. Dieses Dienstkonto richtet die LDAP-Authentifizierung für Ihren Broker ein. Alle aufeinanderfolgenden Clientverbindungen werden über dieselbe Verbindung authentifiziert.

Ein Servicekonto ist ein Konto auf Ihrem LDAP-Server, das eine Verbindung initiieren kann. Es handelt sich um eine standardmäßige LDAP-Anforderung, und Sie müssen die Anmeldeinformationen des Servicekontos nur einmal angeben. Nachdem die Verbindung eingerichtet wurde, werden alle zukünftigen Clientverbindungen über Ihren LDAP-Server authentifiziert. Ihre Anmeldeinformationen für das Dienstkonto werden sicher in verschlüsselter Form gespeichert, auf die nur Amazon MQ zugegriffen werden kann.

Für die Integration mit ActiveMQ ist eine bestimmte Directory Information Tree (DIT) auf dem LDAP-Server erforderlich. Eine beispielshafte ldif-Datei, die diese Struktur deutlich zeigt, finden Sie unterImportieren Sie die folgende LDIF-Datei in den LDAP-Server im Abschnitt Sicherheit in der ActiveMQ-Dokumentation.

Erste Schritte mit LDAP

Um zu beginnen, navigieren Sie zur Amazon MQ Konsole und wählen Sie LDAP-Authentifizierung und -Autorisierung, wenn Sie eine neue Amazon MQ erstellen oder eine vorhandene Broker-Instance bearbeiten.

Geben Sie die folgenden Informationen zum Servicekonto ein:

  • Vollqualifizierter Domänenname Der Speicherort des LDAP-Servers, an den Authentifizierungs- und Autorisierungsanforderungen ausgegeben werden sollen.

    Anmerkung

    Der vollqualifizierte Domänenname des von Ihnen angegebenen LDAP-Servers darf nicht das Protokoll oder die Portnummer enthalten. Amazon MQ wird dem vollqualifizierten Domänennamen das Protokoll ldaps vorangestellt, und fügt die Portnummer 636 hinzu.

    Wenn Sie beispielsweise die folgende vollqualifizierte Domäne angeben: example.com, greift Amazon MQ über die folgende URL auf Ihren LDAP-Server zu: ldaps://example.com:636.

    Damit der Brokerhost erfolgreich mit dem LDAP-Server kommunizieren kann, muss der vollqualifizierte Domänenname öffentlich aufgelöst werden. Um den LDAP-Server privat und sicher zu halten, beschränken Sie den eingehenden Datenverkehr in den eingehenden Regeln des Servers, so dass nur Datenverkehr zugelassen wird, der aus der VPC des Brokers stammt.

  • Benutzername für Service-Konto Der definierte Name des Benutzers, der verwendet wird, um die anfängliche Bindung an den LDAP-Server durchzuführen.

  • Passwort des Service-Kontos Das Passwort des Benutzers, der die anfängliche Bindung ausführt.

In der folgenden Abbildung wird hervorgehoben, wo diese Details angegeben werden sollen.

Geben Sie die Details des LDAP-Dienstkontos an.

In der Konfiguration der LDAP-Anmeldung geben Sie die folgenden erforderlichen Informationen ein:

  • Benutzerbasis Der definierte Name des Knotens im Directory Information Tree (DIT, Verzeichnisinformationsbaum), der nach Benutzern durchsucht werden soll.

  • Benutzer-Suchabgleich Der LDAP-Suchfilter, der für die Suche nach Benutzern innerhalb der userBase verwendet wird. Der Benutzername des Kunden wird im Suchfilter mit dem Platzhalter {0} ersetzt. Weitere Informationen finden Sie unter Authentifizierung und Autorisierung.

  • Rollenbasis Der definierte Name des Knotens im DIT, der nach Rollen durchsucht werden soll. Rollen können als explizite LDAP-Gruppeneinträge in Ihrem Verzeichnis konfiguriert werden. Ein typischer Rolleneintrag kann aus einem Attribut für den Namen der Rolle bestehen, z. B. common name (CN, allgemeiner Name) und ein anderes Attribut, wie member, mit Werten, die die definierten Namen oder Benutzernamen der Benutzer der Rollengruppe darstellen. Zum Beispiel, angesichts der Organisationseinheit, group, können Sie den folgenden definierten Namen angeben: ou=group,dc=example,dc=com.

  • Rollen-Suchabgleich Der LDAP-Suchfilter, der zum Suchen von Rollen innerhalb der roleBase verwendet wird. Der definierte Name des Benutzers, der mit userSearchMatching übereinstimmt, wird mit dem Platzhalter {0} im Suchfilter ersetzt. Der Benutzername des Kunden wird anstelle des {1}-Platzhalters eingesetzt. Wenn Rolleneinträge in Ihrem Verzeichnis beispielsweise ein Attribut mit dem Namen member enthalten, das die Benutzernamen für alle Benutzer in dieser Rolle enthält, können Sie den folgenden Suchfilter bereitstellen: (member:=uid={1}).

In der folgenden Abbildung wird hervorgehoben, wo diese Details angegeben werden sollen.

Wo LDAP-Anmeldedaten angegeben werden sollen.

Im Abschnitt Optionale Einstellungen können Sie die folgenden optionalen Informationen angeben:

  • Benutzerrollen-Name Der Name des LDAP-Attributs im Verzeichniseintrag des Benutzers für die Gruppenmitgliedschaft des Benutzers. In einigen Fällen können Benutzerrollen durch den Wert eines Attributs im Verzeichniseintrag des Benutzers identifiziert werden. Mit der userRoleName-Option können Sie den Namen dieses Attributs angeben. Betrachten wir beispielsweise den folgenden Benutzereintrag:

    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

    Um für das obige Beispiel den richtigen userRoleName bereitzustellen, würden Sie das memberOf-Attribut angeben. Wenn die Authentifizierung erfolgreich ist, wird dem Benutzer die role1-Rolle zugewiesen.

  • Rollenname Das Gruppennamen-Attribut in einem Rolleneintrag, dessen Wert der Name dieser Rolle ist. Sie können beispielsweise cn für einen allgemeinen Namen eines Gruppeneintrags angeben. Wenn die Authentifizierung erfolgreich ist, wird dem Benutzer der Wert des Attributs cn für jeden Rolleneintrag zugewiesen, bei dem er Mitglied ist.

  • Der Teilbaum Benutzersuche Definiert den Bereich für die LDAP-Benutzersuchabfrage. Wenn true, wird der Bereich so eingestellt, dass der gesamte Teilbaum unter dem Knoten durchsucht wird, der durch userBase definiert ist.

  • Der Teilbaum Rollensuche Definiert den Bereich für die LDAP-Rollensuchabfrage. Wenn true, wird der Bereich so eingestellt, dass der gesamte Teilbaum unter dem Knoten durchsucht wird, der durch roleBase definiert wird.

In der folgenden Abbildung wird hervorgehoben, wo diese optionalen Einstellungen festgelegt werden sollen.

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

Funktionsweise der LDAP-Integration

Sie können sich die Integration in zwei Hauptkategorien vorstellen: die Struktur für die Authentifizierung und die Struktur für die Autorisierung.

Authentifizierung

Für die Authentifizierung müssen Clientanmeldeinformationen gültig sein. Diese Anmeldeinformationen werden für Benutzer in der Benutzerbasis auf dem LDAP-Server validiert.

Die Benutzerbasis, die dem ActiveMQ-Broker bereitgestellt wird, muss auf den Knoten im DIT verweisen, auf dem Benutzer auf dem LDAP-Server gespeichert sind. Wenn Sie beispielsweise AWS Managed Microsoft AD verwenden, und Sie die Domänenkomponenten corp, example, und com haben, und innerhalb diesen die Organisationseinheiten corp und Users, würden Sie folgendes als Benutzerbasis verwenden:

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

Der ActiveMQ-Broker würde an diesem Speicherort im DIT nach Benutzern suchen, um Client-Verbindungsanforderungen an den Broker zu authentifizieren.

Suchen nach Benutzern

Da der ActiveMQ-Quellcode den Attributnamen für Benutzer zu uid festcodiert, müssen Sie sicherstellen, dass für jeden Benutzer dieses Attribut festgelegt ist. Der Einfachheit halber können Sie den Verbindungsbenutzernamen des Benutzers verwenden. Weitere Informationen finden Sie im ativemq-Quellcode und Konfigurieren von ID-Zuweisungen in Active-Directory-Benutzer und -Computer für Windows Server 2016 (und nachfolgenden) Versionen.

Um den ActiveMQ-Konsolenzugriff für bestimmte Benutzer zu aktivieren, stellen Sie sicher, dass sie zur amazonmq-console-admins-Gruppe gehören.

Autorisierung

Für die Autorisierung werden Berechtigungen Suchbasen in der Broker-Konfiguration angegeben. Die Autorisierung erfolgt pro Ziel (oder Platzhalter, Zielsatz) über das cachedLdapAuthorizationMap-Element, das sich in der activemq.xml-Konfigurationsdatei des Brokers befindet. Weitere Informationen finden Sie unter Zwischengespeichertes LDAP-Autorisierungsmodul.

Anmerkung

Um das cachedLDAPAuthorizationMap-Element in der activemq.xml-Konfigurationsdatei Ihres Brokers verwenden zu können, müssen Sie die Option LDAP Authentication and Authorization (LDAP-Authentifizierung und -Autorisierung) wählen, wenn Sie eine Konfiguration über den AWS Management Console erstellen, oder die authenticationStrategy-Eigenschaft auf LDAP setzen, wenn Sie eine neue Konfiguration über die Amazon-MQ-API erstellen.

Sie müssen die folgenden drei Attribute im Rahmen des cachedLDAPAuthorizationMap-Elements bereitstellen:

  • queueSearchBase

  • topicSearchBase

  • tempSearchBase

Wichtig

Um zu verhindern, dass vertrauliche Informationen direkt in der Konfigurationsdatei des Brokers platziert werden, blockiert Amazon MQ die folgenden Attribute incachedLdapAuthorizationMap:

  • connectionURL

  • connectionUsername

  • connectionPassword

Wenn Sie einen Broker erstellen, ersetzt Amazon MQ die Werte, die Sie über die AWS Management Console, oder in der ldapServerMetadata-Eigenschaft Ihrer API-Anfrage für die obigen Attribute angeben.

Das folgende Beispiel illustriert die Verwendung von Verschiebungen.

<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>

Diese Werte geben die Speicherorte innerhalb des DIT an, an denen Berechtigungen für jeden Zieltyp angegeben werden. Also für das obige Beispiel mit AWS Managed Microsoft AD, wobei die gleichen Domänenkomponenten von corp, example, und com verwendet werden, geben Sie eine Organisationseinheit mit dem Namen destination an, um alle Zieltypen zu enthalten. Innerhalb dieser Organisationseinheit würden Sie jeweils eine für die Ziele queues, topics und temp erstellen.

Dies würde bedeuten, dass Ihre Warteschlangen-Suchbasis, die Autorisierungsinformationen für Ziele vom Typ Warteschlange bereitstellt, den folgenden Speicherort in Ihrem DIT hat:

OU=Queue,OU=Destination,OU=corp,DC=corp,DC=example,DC=com
                
Speicherort der Warteschlangen-Suche.

Ebenso würden Berechtigungsregeln für Themen und temporäre Ziele auf der gleichen Ebene im DIT liegen:

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

Innerhalb der Organisationseinheit für jeden Zieltyp (Warteschlange, Thema, Temp) kann entweder ein Platzhalter oder ein bestimmter Zielname angegeben werden. Um beispielsweise eine Autorisierungsregel für alle Warteschlangen bereitzustellen, die mit dem Präfix DEMO.EVENTS.$ beginnen, können Sie die folgende Organisationseinheit erstellen:

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

Die DEMO.EVENTS.$-Organisationseinheit befindet sich innerhalb der Queue-Organisationseinheit.

Weitere Informationen zu Platzhaltern in ActiveMQ finden Sie unter Platzhalter

Um Autorisierungsregeln für bestimmte Warteschlangen wie DEMO.MYQUEUE bereitzustellen, geben Sie Folgendes an:

OU=DEMO.MYQUEUE,OU=Queue,OU=Destination,OU=corp,DC=corp,DC=example,DC=com
Autorisierungsregeln für bestimmte Warteschlangen

Sicherheitsgruppen

Innerhalb jeder Organisationseinheit, die ein Ziel oder einen Platzhalter darstellt, müssen Sie drei Sicherheitsgruppen erstellen. Wie bei allen Berechtigungen in ActiveMQ handelt es sich hierbei um Lese-/Schreib-/Administratorberechtigungen. Weitere Informationen zu den Funktionen der einzelnen Berechtigungen eines Benutzers finden Sie unter Sicherheit in der ActiveMQ-Dokumentation.

Sie müssen diese Sicherheitsgruppen read, write und admin benennen. Innerhalb jeder dieser Sicherheitsgruppen können Sie Benutzer oder Gruppen hinzufügen, die dann über die Berechtigung zum Ausführen der zugehörigen Aktionen verfügen. Sie benötigen diese Sicherheitsgruppen für jede Platzhalterzielgruppe oder jedes einzelne Ziel.

Sicherheitsgruppen
Anmerkung

Wenn Sie die Admin-Gruppe erstellen, entsteht ein Konflikt mit dem Gruppennamen. Dieser Konflikt tritt auf, weil die Legacy-Regeln vor Windows 2000 nicht zulassen, dass Gruppen denselben Namen verwenden, selbst wenn sich die Gruppen an unterschiedlichen Speicherorten des DIT befinden. Der Wert in dem Dialogfeld pre-Windows 2000 hat keine Auswirkungen auf die Einrichtung, muss jedoch global eindeutig sein. Um diesen Konflikt zu vermeiden, können Sie ein uuid-Suffix jeder admin-Gruppe anknüpfen.

Dies ist mein Image.

Hinzufügen eines Benutzers zur admin-Sicherheitsgruppe für ein bestimmtes Ziel ermöglicht es dem Benutzer, dieses Thema zu erstellen und zu löschen. Sie zur read-Sicherheitsgruppe hinzuzufügen ermöglicht es ihnen, vom Ziel zu lesen und sie der write-Gruppe hinzuzufügen ermöglicht es ihnen, an das Ziel zu schreiben.

Zusätzlich zum Hinzufügen einzelner Benutzer zu Sicherheitsgruppen-Berechtigungen können Sie auch ganze Gruppen hinzufügen. Da ActiveMQ jedoch wieder Attributnamen für Gruppen festcodiert, müssen Sie sicherstellen, dass die Gruppe, die Sie hinzufügen möchten, die Objektklasse groupOfNames hat, wie im activemq-Quellcode beschrieben.

Führen Sie dazu den gleichen Prozess aus wie bei der uid für Benutzer. Siehe Konfigurieren von ID-Zuweisungen in Active-Directory-Benutzern und Computer für Windows Server 2016 (und nachfolgenden) Versionen.