Verwendung der HTTP-Authentifizierung und -Autorisierung für Amazon MQ für RabbitMQ - 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.

Verwendung der HTTP-Authentifizierung und -Autorisierung für Amazon MQ für RabbitMQ

In diesem Tutorial wird beschrieben, wie Sie die HTTP-Authentifizierung und -Autorisierung für Ihre Amazon MQ for RabbitMQ-Broker mithilfe eines externen HTTP-Servers konfigurieren.

Anmerkung

Das HTTP-Authentifizierungs-Plugin ist nur für Amazon MQ für RabbitMQ Version 4 und höher verfügbar.

Voraussetzungen für die Konfiguration der HTTP-Authentifizierung und -Autorisierung

Sie können die in diesem Tutorial erforderlichen AWS Ressourcen einrichten, indem Sie den AWS CDK-Stack für Amazon MQ für die HTTP-Authentifizierungsintegration von RabbitMQ bereitstellen.

Dieser CDK-Stack erstellt automatisch alle erforderlichen AWS Ressourcen, einschließlich des HTTP-Authentifizierungsservers, der Zertifikate und der IAM-Rollen. Eine vollständige Liste der vom Stack erstellten Ressourcen finden Sie in der README-Datei des Pakets.

Wenn Sie die Ressourcen manuell einrichten, anstatt den CDK-Stack zu verwenden, stellen Sie sicher, dass Sie über die entsprechende Infrastruktur verfügen, bevor Sie die HTTP-Authentifizierung auf Ihrem Amazon MQ für RabbitMQ-Broker konfigurieren.

Voraussetzung für die Einrichtung von Amazon MQ

AWS CLI-Version >= 2.28.23, um das Hinzufügen eines Benutzernamens und Kennworts bei der Brokererstellung optional zu machen.

Konfiguration der HTTP-Authentifizierung in RabbitMQ mit CLI AWS

Dieses Verfahren verwendet AWS CLI, um die erforderlichen Ressourcen zu erstellen und zu konfigurieren. Stellen Sie im folgenden Verfahren sicher, dass Sie die Platzhalterwerte durch ihre tatsächlichen Werte ersetzen.

  1. Erstellen Sie mit dem create-configuration AWS CLI-Befehl eine neue Konfiguration, wie im folgenden Beispiel gezeigt.

    aws mq create-configuration \ --name "rabbitmq-http-config" \ --engine-type "RABBITMQ" \ --engine-version "4.2"

    Dieser Befehl gibt eine Antwort zurück, die dem folgenden Beispiel ähnelt.

    { "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "AuthenticationStrategy": "simple", "Created": "2025-07-17T16:03:01.759943+00:00", "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "LatestRevision": { "Created": "2025-07-17T16:03:01.759000+00:00", "Description": "Auto-generated default for rabbitmq-http-config on RabbitMQ 4.2", "Revision": 1 }, "Name": "rabbitmq-http-config" }
  2. Erstellen Sie eine Konfigurationsdatei, die aufgerufen wirdrabbitmq.conf, um HTTP als Authentifizierungs- und Autorisierungsmethode zu verwenden, wie im folgenden Beispiel gezeigt. Ersetzen Sie alle Platzhalterwerte in der Vorlage (gekennzeichnet mit${...}) durch tatsächliche Werte aus Ihren bereitgestellten AWS CDK Stack-Ausgaben oder einer gleichwertigen Infrastruktur.

    auth_backends.1 = cache auth_backends.2 = http auth_cache.cached_backend = http # HTTP authentication settings # For more information, see https://github.com/rabbitmq/rabbitmq-auth-backend-http # FIXME: Replace the ${...} placeholders with actual values # from your deployed prerequisite CDK stack outputs. auth_http.http_method = post auth_http.user_path = ${HttpServerUserPath} auth_http.vhost_path = ${HttpServerVhostPath} auth_http.resource_path = ${HttpServerResourcePath} auth_http.topic_path = ${HttpServerTopicPath} # TLS/HTTPS configuration auth_http.ssl_options.verify = verify_peer auth_http.ssl_options.sni = test.amazonaws.com # AWS integration for secure credential retrieval # For more information, see https://github.com/amazon-mq/rabbitmq-aws # Replace the ${...} placeholders with actual ARN values # from your deployed prerequisite CDK stack outputs. aws.arns.assume_role_arn = ${AmazonMqAssumeRoleArn} aws.arns.auth_http.ssl_options.cacertfile = ${CaCertArn}
  3. Aktualisieren Sie die Konfiguration mit dem update-configuration AWS CLI-Befehl. Verwenden Sie die Konfigurations-ID aus Schritt 3.

    aws mq update-configuration \ --configuration-id "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>" \ --data "$(cat rabbitmq.conf | base64 --wrap=0)"

    Dieser Befehl gibt eine Antwort zurück, die dem folgenden Beispiel ähnelt.

    { "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "Created": "2025-07-17T16:57:04.520931+00:00", "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "LatestRevision": { "Created": "2025-07-17T16:57:39.172000+00:00", "Revision": 2 }, "Name": "rabbitmq-http-config", "Warnings": [] }
  4. Erstellen Sie einen Broker mit der HTTP-Konfiguration. Verwenden Sie die Konfigurations-ID und die Revisionsnummer aus den vorherigen Schritten.

    aws mq create-broker \ --broker-name "rabbitmq-http-test-1" \ --engine-type "RABBITMQ" \ --engine-version "4.2" \ --host-instance-type "mq.m7g.large" \ --deployment-mode "SINGLE_INSTANCE" \ --logs '{"General": true}' \ --publicly-accessible \ --configuration '{"Id": "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>","Revision": <2>}'

    Dieser Befehl gibt eine Antwort zurück, die dem folgenden Beispiel ähnelt.

    { "BrokerArn": "arn:aws:mq:us-west-2:123456789012:broker:rabbitmq-http-test-1:b-2a1b5133-a10c-49d2-879b-8c176c34cf73", "BrokerId": "b-2a1b5133-a10c-49d2-879b-8c176c34cf73" }
  5. Stellen Sie mithilfe des describe-broker AWS CLI-Befehls sicherRUNNING, dass der Status des Brokers von CREATION_IN_PROGRESS zu wechselt.

    aws mq describe-broker \ --broker-id "<b-2a1b5133-a10c-49d2-879b-8c176c34cf73>"

    Dieser Befehl gibt eine Antwort zurück, die dem folgenden Beispiel ähnelt. Die config_managed Authentifizierungsstrategie gibt an, dass der Broker die HTTP-Authentifizierungsmethode verwendet.

    { "AuthenticationStrategy": "config_managed", ..., "BrokerState": "RUNNING", ... }
  6. Überprüfen Sie den RabbitMQ-Zugriff mit einem der Testbenutzer, die mit dem erforderlichen CDK-Stack erstellt wurden

    # FIXME: Replace ${RabbitMqHttpAuthElbStack.ConsoleUserPasswordArn} with the actual ARN from your deployed prerequisite CDK stack outputs CONSOLE_PASSWORD=$(aws secretsmanager get-secret-value \ --secret-id ${RabbitMqHttpAuthElbStack.ConsoleUserPasswordArn} \ --query 'SecretString' --output text) # FIXME: Replace BrokerConsoleURL with the actual ConsoleURL retrieved by # calling describe-broker for the broker created above # Call management API /api/overview (should succeed) curl -u RabbitMqConsoleUser:$CONSOLE_PASSWORD \ https://${BrokerConsoleURL}/api/overview # Try to create a vhost (should fail - console user only has management permissions) curl -u RabbitMqConsoleUser:$CONSOLE_PASSWORD \ -X PUT https://${BrokerConsoleURL}/api/vhosts/test-vhost \ -H "Content-Type: application/json" \ -d '{}'