翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon MQ for RabbitMQ での IAM 認証と認可の使用
次の手順は、Amazon MQ for RabbitMQ AWS ブローカーの IAM 認証と認可を有効にする方法を示しています。IAM を有効にすると、ユーザーは IAM AWS 認証情報を使用して RabbitMQ Management API にアクセスし、AMQP 経由で接続するための認証を行うことができます。Amazon MQ for RabbitMQ での IAM 認証の仕組みの詳細については、「」を参照してくださいAmazon MQ for RabbitMQ の IAM 認証と認可。
前提条件
-
AWS Amazon MQ for RabbitMQ ブローカーを所有する AWS アカウントの管理者認証情報
-
これらの管理者認証情報で設定されたシェル環境 (CLI AWS プロファイルまたは環境変数を使用)
-
AWS CLI のインストールと設定
-
jqコマンドライン JSON プロセッサがインストールされている -
curlコマンドラインツールのインストール
を使用した IAM 認証と認可の設定 AWS CLI
-
環境変数を設定する
ブローカーに必要な環境変数を設定します。
export AWS_DEFAULT_REGION=<region>export BROKER_ID=<broker-id> -
アウトバウンド JWT トークンを有効にする
AWS アカウントのアウトバウンドウェブ ID フェデレーションを有効にします。
ISSUER_IDENTIFIER=$(aws iam enable-outbound-web-identity-federation --query 'IssuerIdentifier' --output text) echo $ISSUER_IDENTIFIER出力には、アカウントの一意の発行者識別子 URL が 形式で表示されます
https://<id>.tokens.sts.global.api.aws。 -
IAM ポリシードキュメントを作成する
ウェブ ID トークンを取得するアクセス許可を付与するポリシードキュメントを作成します。
cat > policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "sts:GetWebIdentityToken", "sts:TagGetWebIdentityToken" ], "Resource": "*" } ] } EOF -
信頼ポリシーを作成する
発信者 ID を取得し、信頼ポリシードキュメントを作成します。
CALLER_ARN=$(aws sts get-caller-identity --query Arn --output text) cat > trust-policy.json << EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "$CALLER_ARN" }, "Action": "sts:AssumeRole" } ] } EOF -
IAM ロールを作成する
IAM ロールを作成し、ポリシーをアタッチします。
aws iam create-role --role-name RabbitMqAdminRole --assume-role-policy-document file://trust-policy.json aws iam put-role-policy --role-name RabbitMqAdminRole --policy-name RabbitMqAdminRolePolicy --policy-document file://policy.json -
RabbitMQ OAuth2 設定を構成する
OAuth2 認証および認可設定を使用して RabbitMQ 設定ファイルを作成します。
cat > rabbitmq.conf << EOF auth_backends.1 = oauth2 auth_backends.2 = internal auth_oauth2.jwks_url = ${ISSUER_IDENTIFIER}/.well-known/jwks.json auth_oauth2.resource_server_id = rabbitmq auth_oauth2.scope_prefix = rabbitmq/ auth_oauth2.additional_scopes_key = sub auth_oauth2.scope_aliases.1.alias = arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/RabbitMqAdminRole auth_oauth2.scope_aliases.1.scope = rabbitmq/tag:administrator rabbitmq/read:*/* rabbitmq/write:*/* rabbitmq/configure:*/* auth_oauth2.https.hostname_verification = wildcard management.oauth_enabled = true EOF -
ブローカー設定を更新する
新しい設定をブローカーに適用します。
# Retrieve the configuration ID CONFIG_ID=$(aws mq describe-broker --broker-id $BROKER_ID --query 'Configurations[0].Id' --output text) # Create a new configuration revision REVISION=$(aws mq update-configuration --configuration-id $CONFIG_ID --data "$(cat rabbitmq.conf | base64 --wrap=0)" --query 'LatestRevision.Revision' --output text) # Apply the configuration to the broker aws mq update-broker --broker-id $BROKER_ID --configuration Id=$CONFIG_ID,Revision=$REVISION # Reboot the broker to apply changes aws mq reboot-broker --broker-id $BROKER_IDブローカーのステータスが に戻るのを待って
RUNNINGから、次のステップに進みます。 -
JWT トークンを取得する
IAM ロールを引き受け、ウェブ ID トークンを取得します。
# Assume the RabbitMqAdminRole ROLE_CREDS=$(aws sts assume-role --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/RabbitMqAdminRole --role-session-name rabbitmq-session) # Configure the session with temporary credentials export AWS_ACCESS_KEY_ID=$(echo "$ROLE_CREDS" | jq -r '.Credentials.AccessKeyId') export AWS_SECRET_ACCESS_KEY=$(echo "$ROLE_CREDS" | jq -r '.Credentials.SecretAccessKey') export AWS_SESSION_TOKEN=$(echo "$ROLE_CREDS" | jq -r '.Credentials.SessionToken') # Obtain the web identity token TOKEN_RESPONSE=$(aws sts get-web-identity-token \ --audience "rabbitmq" \ --signing-algorithm ES384 \ --duration-seconds 300 \ --tags Key=scope,Value="rabbitmq/tag:administrator") # Extract the token TOKEN=$(echo "$TOKEN_RESPONSE" | jq -r '.WebIdentityToken') -
RabbitMQ 管理 API にアクセスする
JWT トークンを使用して RabbitMQ Management API にアクセスします。
BROKER_URL=<broker-id>.mq.<region>.on.aws curl -u ":$TOKEN" \ -X GET https://${BROKER_URL}/api/overview \ -H "Content-Type: application/json"応答が成功すると、IAM 認証が正しく動作していることが確認されます。レスポンスには、JSON 形式のブローカーの概要情報が含まれています。
-
JWT トークンを使用して AMQP 経由で接続する
パフォーマンステストツールで JWT トークンを使用して AMQP 接続をテストします。
BROKER_DNS=<broker-endpoint>CONNECTION_STRING=amqps://:${TOKEN}@${BROKER_DNS}:5671 docker run -it --rm --ulimit nofile=40960:40960 pivotalrabbitmq/perf-test:latest \ --queue-pattern 'test-queue-%d' --queue-pattern-from 1 --queue-pattern-to 1 \ --producers 1 --consumers 1 \ --uri ${CONNECTION_STRING} \ --flag persistent --rate 1ACCESS_REFUSEDエラーが発生した場合は、ブローカーの CloudWatch ログを使用して設定をトラブルシューティングできます。ブローカーの CloudWatch Logs ロググループのリンクは、Amazon MQ コンソールにあります。