

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon MQ for RabbitMQ での HTTP 認証と認可の使用
<a name="rabbitmq-http-tutorial"></a>

このチュートリアルでは、外部 HTTP サーバーを使用して Amazon MQ for RabbitMQ ブローカーの HTTP 認証と認可を設定する方法について説明します。

**注記**  
HTTP 認証プラグインは、Amazon MQ for RabbitMQ バージョン 4 以降でのみ使用できます。

**Topics**
+ [HTTP 認証と認可を設定するための前提条件](#rabbitmq-http-tutorial-prerequisites)
+ [CLI を使用した RabbitMQ での HTTP AWS 認証の設定](#rabbitmq-http-tutorial-configure-cli)

## HTTP 認証と認可を設定するための前提条件
<a name="rabbitmq-http-tutorial-prerequisites"></a>

このチュートリアルで必要な AWS リソースを設定するには、[AWS Amazon MQ for RabbitMQ HTTP 認証統合用の CDK スタック](https://github.com/aws-samples/amazon-mq-samples/blob/main/rabbitmq-samples/rabbitmq-http-sample/)をデプロイします。

この CDK スタックは、HTTP 認証サーバー、証明書、IAM ロールなど、必要なすべての AWS リソースを自動的に作成します。スタックによって作成されたリソースの完全なリストについては、パッケージ README を参照してください。

CDK スタックを使用する代わりにリソースを手動で設定する場合は、Amazon MQ for RabbitMQ ブローカーで HTTP 認証を設定する前に、同等のインフラストラクチャが整っていることを確認してください。

### Amazon MQ をセットアップするための前提条件
<a name="rabbitmq-http-tutorial-prerequisite-cli"></a>

AWS CLI バージョン >= 2.28.23。ブローカーの作成時にユーザー名とパスワードをオプションで追加します。

## CLI を使用した RabbitMQ での HTTP AWS 認証の設定
<a name="rabbitmq-http-tutorial-configure-cli"></a>

この手順では、 CLI AWS を使用して必要なリソースを作成および設定します。次の手順では、プレースホルダー値を実際の値に置き換えてください。

1. 次の例に示すように、`create-configuration` AWS CLI コマンドを使用して新しい設定を作成します。

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

   このコマンドでは、次の例のようなレスポンスが返されます。

   ```
   {
       "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"
   }
   ```

1. 次の例に示すように、HTTP `rabbitmq.conf`を認証および認可方法として使用する という設定ファイルを作成します。テンプレート内のすべてのプレースホルダー値 ( でマーク) を`${...}`、デプロイされた AWS CDK 前提条件スタック出力または同等のインフラストラクチャの実際の値に置き換えます。

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

1. `update-configuration` AWS CLI コマンドを使用して設定を更新します。ステップ 3 の設定 ID を使用します。

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

   このコマンドでは、次の例のようなレスポンスが返されます。

   ```
   {
       "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": []
   }
   ```

1. HTTP 設定でブローカーを作成します。前のステップの設定 ID とリビジョン番号を使用します。

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

   このコマンドでは、次の例のようなレスポンスが返されます。

   ```
   {
       "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"
   }
   ```

1. `describe-broker` AWS CLI コマンドを使用して`RUNNING`、ブローカーのステータスが から `CREATION_IN_PROGRESS`に移行していることを確認します。

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

   このコマンドでは、次の例のようなレスポンスが返されます。`config_managed` 認証戦略は、ブローカーが HTTP 認証方法を使用していることを示します。

   ```
   {
       "AuthenticationStrategy": "config_managed",
       ...,
       "BrokerState": "RUNNING",
       ...
   }
   ```

1. 前提条件の CDK スタックによって作成されたテストユーザーの 1 人を使用して RabbitMQ アクセスを検証する

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