RabbitMQ 設定での ARN サポート - Amazon MQ

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

RabbitMQ 設定での ARN サポート

Amazon MQ for RabbitMQ は、一部の RabbitMQ 設定の値の AWS ARNs をサポートしています。これは、RabbitMQ コミュニティプラグイン rabbitmq-aws によって有効になります。このプラグインは Amazon MQ によって開発および保守されており、Amazon MQ によって管理されていないセルフホスト RabbitMQ ブローカーでも使用できます。 Amazon MQ

重要な考慮事項
  • aws プラグインによって取得された解決された ARN 値は、実行時に RabbitMQ プロセスに直接渡されます。RabbitMQ ノードの他の場所には保存されません。

  • Amazon MQ for RabbitMQ には、設定された ARNs にアクセスするために Amazon MQ が引き受けることができる IAM ロールが必要です。これは、 を設定することによって設定されますaws.arns.assume_role_arn

  • IAM ロールを含むブローカー設定で CreateBroker または UpdateBroker APIs を呼び出すユーザーには、そのロールに対する iam:PassRole アクセス許可が必要です。

  • IAM ロールは、RabbitMQ ブローカーと同じ AWS アカウントに存在する必要があります。設定内のすべての ARNs は、RabbitMQ ブローカーと同じ AWS リージョンに存在する必要があります。

  • Amazon MQ は、IAM ロールを引き受けるaws:SourceArnときに IAM グローバル条件キーaws:SourceAccountと を追加します。これらの値は、混乱した代理保護のためにロールにアタッチされた IAM ポリシーで使用する必要があります。

サポートされるキー

必要な IAM ロール
aws.arns.assume_role_arn

Amazon MQ が他の AWS リソースにアクセスするために引き受ける IAM ロール ARN。他の ARN 設定を使用する場合に必要です。

設定キー 説明
aws.arns.ssl_options.cacertfile SSL/TLS クライアント接続の認証機関ファイル。Amazon MQ では、Amazon S3 または を使用して証明書を保存する必要があります。
設定キー 説明
aws.arns.management.ssl.cacertfile 管理インターフェイス SSL/TLS 接続の認証機関ファイル。Amazon MQ では、Amazon S3 または を使用して証明書を保存する必要があります。
設定キー 説明
aws.arns.auth_oauth2.https.cacertfile OAuth 2.0 HTTPS 接続の認証機関ファイル。Amazon MQ では、Amazon S3 または を使用して証明書を保存する必要があります。
設定キー 説明
aws.arns.auth_http.ssl_options.cacertfile HTTP 認証 SSL/TLS 接続の認証機関ファイル。Amazon MQ では、Amazon S3 または を使用して証明書を保存する必要があります。
aws.arns.auth_http.ssl_options.certfile Amazon MQ と HTTP 認証サーバー間の相互 TLS 接続用の証明書ファイル。Amazon MQ では、Amazon S3 または を使用して証明書を保存する必要があります。
aws.arns.auth_http.ssl_options.keyfile Amazon MQ と HTTP 認証サーバー間の相互 TLS 接続用のプライベートキーファイル。Amazon MQ では AWS Secrets Manager 、 を使用してプライベートキーを保存する必要があります。
設定キー 説明
aws.arns.auth_ldap.ssl_options.cacertfile LDAP SSL/TLS 接続の認証機関ファイル。Amazon MQ では、Amazon S3 または を使用して証明書を保存する必要があります。
aws.arns.auth_ldap.ssl_options.certfile Amazon MQ と LDAP サーバー間の相互 TLS 接続用の証明書ファイル。Amazon MQ では、Amazon S3 または を使用して証明書を保存する必要があります。
aws.arns.auth_ldap.ssl_options.keyfile Amazon MQ と LDAP サーバー間の相互 TLS 接続用のプライベートキーファイル。Amazon MQ では AWS Secrets Manager 、 を使用してプライベートキーを保存する必要があります。
aws.arns.auth_ldap.dn_lookup_bind.password LDAP DN ルックアップバインドのパスワード。Amazon MQ では AWS Secrets Manager 、 を使用してパスワードをプレーンテキスト値として保存する必要があります。
aws.arns.auth_ldap.other_bind.password LDAP の他のバインドのパスワード。Amazon MQ では AWS Secrets Manager 、 を使用してパスワードをプレーンテキスト値として保存する必要があります。

IAM ポリシーのサンプル

ロールの引き受けポリシードキュメントやロールポリシードキュメントを含む IAM ポリシーの例については、CDK サンプル実装を参照してください。

AWS Secrets Manager と Amazon S3 リソースをセットアップする手順LDAP 認証と認可の使用については、「」を参照してください。

アクセス検証

ARN 値を取得できないシナリオをトラブルシューティングするために、aws プラグインは、Amazon MQ がロールと resolveARN を正常に引き受けることができるかどうかを確認するために呼び出すことができる RabbitMQ 管理 API エンドポイントをサポートしています。 Amazon MQ AWS ARNs これにより、ブローカー設定を更新したり、新しい設定リビジョンでブローカーを更新したり、設定変更をテストするためにブローカーを再起動したりする必要がなくなります。

注記

この API を使用するには、既存の RabbitMQ 管理者ユーザーが必要です。Amazon MQ では、他のアクセス方法に加えて、内部ユーザーを使用してテストブローカーを作成することをお勧めします。OAuth 2.0 と簡易 (内部) 認証の両方を有効にするを参照してください。その後、このユーザーを使用して検証 API にアクセスできます。

注記

aws プラグインは検証 API への入力として新しいロールを渡すことをサポートしていますが、このパラメータは Amazon MQ ではサポートされていません。検証に使用する IAM ロールは、ブローカー設定aws.arns.assume_role_arnの の値と一致する必要があります。

関連するブローカーの隔離状態

ARN サポートの問題に関連するブローカーの隔離状態については、以下を参照してください。

シナリオの例

  • ブローカーb-f0fc695e-2f9c-486b-845a-988023a3e55bは、IAM ロールを使用して AWS Secrets Manager シークレット<role>にアクセスするように設定されています <arn>

  • Amazon MQ に提供されたロールに AWS Secrets Manager シークレットに対する読み取りアクセス許可がない場合、RabbitMQ ログに次のエラーが表示されます。

    [error] <0.254.0> aws_arn_config: {handle_assume_role,{error,{assume_role_failed,"AWS service is unavailable"}}}

    さらに、ブローカーはINVALID_ASSUMEROLE隔離状態になります。詳細については、「INVALID_ASSUMEROLE」を参照してください。

  • LDAP 認証の試行は、次のエラーで失敗します。

    [error] <0.254.0> LDAP bind failed: invalid_credentials
  • 適切なアクセス許可を持つ IAM ロールを修正する

  • 検証エンドポイントを呼び出して、RabbitMQ がシークレットにアクセスできるかどうかを確認します。

    curl -4su 'guest:guest' -XPUT -H 'content-type: application/json' <broker-endpoint>/api/aws/arn/validate -d '{"assume_role_arn":"arn:aws:iam::<account-id>:role/<role-name>","arns":["arn:aws:secretsmanager:<region>:<account-id>:secret:<secret-name>"]}' | jq '.'