Usando autenticação e autorização HTTP para Amazon MQ para RabbitMQ - Amazon MQ

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando autenticação e autorização HTTP para Amazon MQ para RabbitMQ

Este tutorial descreve como configurar a autenticação e autorização HTTP para seus corretores Amazon MQ para RabbitMQ usando um servidor HTTP externo.

nota

O plug-in de autenticação HTTP está disponível somente para o Amazon MQ for RabbitMQ versão 4 e superior.

Pré-requisitos para configurar a autenticação e autorização HTTP

Você pode configurar os AWS recursos necessários neste tutorial implantando a pilha AWS CDK para Amazon MQ para integração de autenticação HTTP RabbitMQ.

Essa pilha de CDK cria automaticamente todos os AWS recursos necessários, incluindo o servidor de autenticação HTTP, certificados e funções do IAM. Consulte o pacote README para obter uma lista completa dos recursos criados pela pilha.

Se você estiver configurando os recursos manualmente em vez de usar a pilha CDK, certifique-se de ter a infraestrutura equivalente antes de configurar a autenticação HTTP em seus corretores Amazon MQ para RabbitMQ.

Pré-requisito para configurar o Amazon MQ

AWS Versão CLI >= 2.28.23 para tornar opcional a adição de um nome de usuário e senha durante a criação do broker.

Configurando a autenticação HTTP no RabbitMQ usando CLI AWS

Esse procedimento usa a AWS CLI para criar e configurar os recursos necessários. No procedimento a seguir, certifique-se de substituir os valores do espaço reservado por seus valores reais.

  1. Crie uma nova configuração usando o comando create-configuration AWS CLI, conforme mostrado no exemplo a seguir.

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

    Esse comando retorna uma resposta semelhante ao exemplo a seguir.

    { "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. Crie um arquivo de configuração chamado rabbitmq.conf para usar HTTP como método de autenticação e autorização, conforme mostrado no exemplo a seguir. Substitua todos os valores de espaço reservado no modelo (marcados com${...}) pelos valores reais das saídas de pilha de AWS CDK pré-requisitos implantadas ou da infraestrutura 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. Atualize a configuração usando o update-configuration AWS comando CLI. Use o ID de configuração da Etapa 3.

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

    Esse comando retorna uma resposta semelhante ao exemplo a seguir.

    { "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. Crie um broker com a configuração HTTP. Use o ID de configuração e o número da revisão das etapas 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>}'

    Esse comando retorna uma resposta semelhante ao exemplo a seguir.

    { "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. Verifique se o status do broker muda de CREATION_IN_PROGRESS paraRUNNING, usando o comando describe-broker AWS CLI.

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

    Esse comando retorna uma resposta semelhante ao exemplo a seguir. A estratégia de config_managed autenticação indica que o agente usa o método de autenticação HTTP.

    { "AuthenticationStrategy": "config_managed", ..., "BrokerState": "RUNNING", ... }
  6. Valide o acesso ao RabbitMQ usando um dos usuários de teste criados pela pilha CDK de pré-requisito

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