本文へ移動

新機能・アップデート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へ移る。そんな二段の上げ方も取れる。

注

  1. リリースの日付は、GitHubのリリースが2026年10月22日付、公式サイトのリリースのページが10月27日。 ↩

出典

この記事は公式の発表をもとに AI が執筆し、サービス・システム大全 編集部が確認しています。誤りに気づいたときは 訂正の窓口 からお知らせください。