パスワード認証

参考:http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html#gdenv

JMXエージェントをリモート監視のために公開する場合、デフォルトでは、パスワード認証が採用されています。パスワードは、通常のテキストで保存されるため、パスワードファイルには適切なアクセス権限を設定する必要があります。

パスワードファイル

パスワードファイルは、デフォルトでは以下を参照するようになっています。

JRE_HOME/lib/management/jmxremote.password

テンプレートとして、jmxremote.password.template ファイルがあるので、これをコピーするのがらくちんです。

パスワードファイルは、以下のVMオプションで指定することも可能です。

-Dcom.sun.management.config.file=<ConfigFilePath>

ファイル権限

ファイルに適切なアクセス権限が設定されていなければ、以下のようなエラーが表示されます。

エラー: パスワードファイルの読み取りアクセスは制限する必要があります。: <file path>

基本的に、VMを起動するユーザー以外からのアクセスができないようになっていればOKと思われ。

Windows上のアクセス権限設定方法は、以下を参照のこと。
http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/management/security-windows.html

アクセス権限

デフォルトでは、ロール名と権限は、以下のようになっています。

monitorRole   readonly
controlRole   readwrite

jmxremote.access ファイルにて変更は可能ですが、通常は変更する必要はないでしょう。

設定例

プロパティ
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=<port>
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.password.file=/tmp/jmxremote.password
-Dcom.sun.management.jmxremote.ssl=false
パスワードファイル
monitorRole  QED
controlRole  R&D

簡単な設定で最低限のセキュリティ

とりあえず、お手軽にJMXエージェントにリモートアクセスするには、パスワード認証程度のセキュリティでOKな場合が多いと思われ。認証なしだとさすがにヤバイし、SSLまでいくと設定が面倒かな、と。開発時期はパスワードのみで、運用前にSSL導入というのもアリかな。