新機能・アップデートAIにより執筆
ActiveMQ 6.4.0、OAuth2のJWT認証と分散トレーシングに対応
メッセージブローカーのApache ActiveMQが6.4.0を公開した。OAuth2のアクセストークン(JWT)による接続の認証、OpenTelemetryの分散トレーシング、IPアドレスでの接続の許可と拒否が加わった。新機能は6.4系列だけで、管理画面を既定でローカルに絞る変更は6.3.3にも入っている。
Apache ActiveMQのブローカーに、OAuth2の認証基盤が発行したアクセストークン(JWT)で接続できるようになった。Apache Software Foundationが10月22日に、GitHubで公開した6.4.0の新機能だ。OpenTelemetryによる分散トレーシングや、IPアドレスでの接続の制限も、この版から使える。1
ただし、新機能が入ったのは6.4系列だけで、同じ日に出た6.3.3と5.19.12は修正が中心だ。
パスワードの欄にトークンを入れる
公式のドキュメントにある認証の例では、ブローカーの設定ファイルに利用者とパスワードを並べている。つなぐアプリが増えるほど、ブローカーの側でパスワードを発行し、入れ替える手間も増える。
6.4.0で加わった「activemq-jaas-oauth2」のモジュールでは、クライアントがパスワードの欄にアクセストークンを入れて接続する。ブローカーはJWKSのURLから公開鍵を取り、署名と発行者、有効期限を検証する。接続のたびにIdPへ問い合わせない設計で、検証はブローカーの中で完結する。
トークンの中の利用者名とグループは、既存のJAASの認証プラグインに渡される。グループ名をIdPの側とそろえれば、宛先ごとの権限の設定を生かせるだろう。受け付ける署名はRSAやEC、EdDSAといった公開鍵の方式に限られ、共通鍵のHMACで署名したトークンは拒否される。
クライアントIDなど、接続の項目で認可する仕組みも加わった。
ほかのブローカーとつなぐネットワーク接続を、決めたグループの利用者だけに許す設定もできる。
導入には一手間かかる。既定の「login.config」は変わらず、モジュールのjarは「lib/optional」に置かれているだけ。使うときはjarを「lib」へ写し、同梱の設定例「login-oauth2.config」をもとに設定を足す。
メッセージの経路を追い、入口を絞る
たとえば注文のメッセージが届かないとき、担当者は送り手とブローカー、受け手のどこで止まったのかを、サーバーごとのログの時刻を突き合わせて探す。OpenTelemetryのプラグインを使うと、この経路を1本のトレースとしてたどれる。
プラグインはメッセージの送信と配信、受信の確認を記録し、W3C Trace Contextの形でトレースの情報を引き継ぐ。ActiveMQにはOpenTelemetryのAPIだけが含まれ、SDKとエクスポーターは利用者が実行時に用意する。トレースの送り先は、環境変数かJavaエージェントで指定する形。
接続口ごとに、IPアドレスで接続を許可または拒否する設定も加わった。これまでは独自のプラグインを書くしかなかったと、開発者は課題で説明している。アドレスはCIDRか個別のIPで指定し、ファイルから読み込むこともできる。ブローカーは拒否した接続を、プロトコルのやり取りに入る前に黙って閉じ、件数だけを数える。
自動で再接続するfailoverのクライアントは、拒否されてもつなぎ直しを続ける。一覧を絞る前に、どのアプリがどこからつないでいるかを洗い出しておくと安心だ。
SSLまわりでは、JMXのコネクタも暗号化できるようになった。鍵ストアの中の鍵を別名で指定でき、接続口ごとに別のSSLの設定も持てる。
パッチ版の6.3.3にも既定の変更
管理画面を、いまどこのブラウザーから開いているだろうか。
意外なのは、新機能のない6.3.3にも、管理画面の既定を変える見直しが入っていることだ。同梱の設定で、Webコンソールを動かすEclipse Jettyが127.0.0.1だけで待ち受けるようになった。設定ファイルの構成を変える前の版と同じ動作に戻した、と開発者は説明する。別のマシンから管理画面を開いている現場では、上げた直後に画面が開かなくなるかもしれない。
待ち受けるアドレスは起動の引数「jetty.host」で変えられ、公式のDockerイメージは起動時にこの値を渡す。「jetty-spring.properties」を自前で持っている場合は、逆に2行を足さないと、ローカルだけの待ち受けにならない。REST APIのJolokiaでは、書き込みと実行の要求が、一覧に載せた読み取りの操作だけに絞られた。監視のツールからJolokiaを呼んでいるなら、Originのヘッダーと許可の一覧を見直したい。
| 項目 | 6.4.0 | 6.3.3 | 5.19.12 |
|---|---|---|---|
| JWT認証やトレーシングなどの新機能 | あり | なし | なし |
| 管理画面とJolokiaの既定の見直し | あり | あり | リリースノートに記載なし |
| LDAPまわりの強化 | あり | あり | あり |
| 対応するJava | 17、21、25 | 17、21、25 | 11、17、21 |
| ブローカーが対応するJMS | Jakarta JMS 2と3.1(一部) | Jakarta JMS 2と3.1(一部) | javax JMS 1.1 |
5.19系列から6.4へ移る場合は、JMSのAPIがjavaxからJakartaに替わり、Java 11にも対応しなくなる。6.3系列と5.19系列も、公式サイトでは今も「Active」の扱いだ。
6.4へは二段で上げる手もある
一方、6.4.0だけの変更もある。鍵ストアの形式の既定がPKCS12になった。開発者の課題では、JKSの形式へ自動で切り替える仕組みも入ったとしている。
公式のDockerイメージは、6.3系列の6.3.1からJDK 25で動いている。6.4.0でも、JDK 25にそろえる更新が入った。そのため、イメージに自前のコードを足している場合は、ビルドに使うJDKも合わせておきたい。
同じApacheのブローカーには、Apache QpidのBroker-Jもある。大全の掲載データでは、ActiveMQはJMSに加えてAMQPやSTOMP、MQTTに対応し、Broker-JはAMQPの各版を受け付けて相互に変換する。6.4.0の依存の更新には、Qpidが開発するAMQPのライブラリproton-jも入っている。2件は比較のページで並べて見られる。
なお、Artemisは2025年11月に別のプロジェクトとして独立しており、今回の6.4.0は従来のActiveMQの版である。
6.3系列を使っているなら、まず6.3.3で管理画面の既定の変更を済ませ、トークン認証やトレーシングが要る時点で6.4へ移る。そんな二段の上げ方も取れる。
注
-
リリースの日付は、GitHubのリリースが2026年10月22日付、公式サイトのリリースのページが10月27日。 ↩
出典
- Apache ActiveMQ 6.4.0 リリースノート(GitHub)
- ActiveMQ 6.4.0 Release(Apache ActiveMQ公式サイト)
- Download ActiveMQ(系列ごとの状態と対応するJava)
- Security(Apache ActiveMQ公式ドキュメント)
- Add OAuth2 support(GitHubの課題)
- Add OAuth2 JWT authentication support via JAAS LoginModule(GitHub)
- Add OpenTelemetry distributed tracing support(GitHub)
- Support Client IP addresses allowlist/denylist on the TransportConnectors(GitHubの課題)
- Feature: IP address allow/deny support(GitHub)
- Modernize SSL support to include per-connector SSLContext, pkcs12 default, keyalias support(GitHubの課題)
- Tighten default Jolokia access policy and bind the web console to loopback(GitHub)
- Apache ActiveMQ 6.3.3 リリースノート(GitHub)
- Apache ActiveMQ 5.19.12 リリースノート(GitHub)
- Apache ActiveMQ 6.3.1 リリースノート(GitHub)
- Apache Artemis Project(Apache ActiveMQ公式サイト)
この記事は公式の発表をもとに AI が執筆し、サービス・システム大全 編集部が確認しています。誤りに気づいたときは 訂正の窓口 からお知らせください。