Uso de la autenticación y autorización HTTP para Amazon MQ for RabbitMQ - Amazon MQ

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de la autenticación y autorización HTTP para Amazon MQ for RabbitMQ

En este tutorial se describe cómo configurar la autenticación y la autorización HTTP para sus agentes de Amazon MQ for RabbitMQ mediante un servidor HTTP externo.

nota

El complemento de autenticación HTTP solo está disponible para Amazon MQ para RabbitMQ versión 4 y versiones posteriores.

Requisitos previos para configurar la autenticación y la autorización HTTP

Puede configurar AWS los recursos necesarios en este tutorial mediante la implementación de la pila de AWS CDK para la integración de autenticación HTTP de Amazon MQ para RabbitMQ.

Esta pila de CDK crea automáticamente todos los AWS recursos necesarios, incluidos el servidor de autenticación HTTP, los certificados y las funciones de IAM. Consulte el paquete README para obtener una lista completa de los recursos creados por la pila.

Si va a configurar los recursos manualmente en lugar de utilizar la pila de CDK, asegúrese de disponer de la infraestructura equivalente antes de configurar la autenticación HTTP en su Amazon MQ para agentes de RabbitMQ.

Requisito previo para configurar Amazon MQ

AWS Versión CLI >= 2.28.23 para que agregar un nombre de usuario y una contraseña sea opcional durante la creación del corredor.

Configuración de la autenticación HTTP en RabbitMQ mediante CLI AWS

Este procedimiento utiliza la AWS CLI para crear y configurar los recursos necesarios. En el siguiente procedimiento, asegúrese de reemplazar los valores de los marcadores de posición por sus valores reales.

  1. Cree una nueva configuración mediante el comando create-configuration AWS CLI, como se muestra en el siguiente ejemplo.

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

    Este comando devuelve una respuesta de JSON similar a la siguiente.

    { "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. Cree un archivo de configuración llamado rabbitmq.conf a utilizar HTTP como método de autenticación y autorización, como se muestra en el siguiente ejemplo. Sustituya todos los valores de marcador de posición de la plantilla (marcados con${...}) por valores reales de las salidas de la pila de AWS CDK requisitos previos implementada o de una infraestructura equivalente.

    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. Actualice la configuración mediante el comando update-configuration AWS CLI. Utilice el ID de configuración del paso 3.

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

    Este comando devuelve una respuesta de JSON similar a la siguiente.

    { "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. Cree un intermediario con la configuración HTTP. Utilice el identificador de configuración y el número de revisión de los pasos anteriores.

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

    Este comando devuelve una respuesta de JSON similar a la siguiente.

    { "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. Compruebe que el estado del bróker pasa de CREATION_IN_PROGRESS aRUNNING, mediante el comando describe-broker AWS CLI.

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

    Este comando devuelve una respuesta de JSON similar a la siguiente. La estrategia de config_managed autenticación indica que el agente utiliza el método de autenticación HTTP.

    { "AuthenticationStrategy": "config_managed", ..., "BrokerState": "RUNNING", ... }
  6. Valide el acceso a RabbitMQ con uno de los usuarios de prueba creados con la pila de CDK necesaria

    # 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 '{}'