分散環境での Managed Bean (MBean) 呼び出しを保護することができます。
使用可能な MBean について詳しくは、Managed Beans (MBeans) を使用した管理を参照してください。
JMX では、コネクター・サーバーがリモート・クライアントを認証するメソッドを提供しています。RMI コネクターの場合、認証は、コネクター・サーバーが作成される場合に JMXAuthenticator インターフェースを実装するオブジェクトを提供することにより実行されます。eXtreme Scale は、この JMXAuthenticator インターフェースを実装し、 ObjectGrid Authenticator プラグインを使用してリモート・クライアントを認証します。 eXtreme Scale がどのようにしてクライアントを認証するかについて詳しくは、Java SE セキュリティー・チュートリアル - ステップ 2を参照してください。
JMX クライアントは、JMX API に従って、コネクター・サーバーに接続するための資格情報を提供します。JMX フレームワークは、資格情報をコネクター・サーバーに渡し、認証のため、JMXAuthenticator 実装を呼び出します。前述のように、JMXAuthenticator 実装は、ObjectGrid Authenticator 実装に認証を委任します。
以下の例は、資格情報を使用してコネクター・サーバーに接続する方法を説明していますので、参考にしてください。
javax.management.remote.JMXServiceURL jmxUrl = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://localhost:1099/objectgrid/MBeanServer");
environment.put(JMXConnector.CREDENTIALS, new UserPasswordCredential("admin", "xxxxxx"));
// Create the JMXCconnectorServer
JMXConnector cntor = JMXConnectorFactory.newJMXConnector(jmxUrl, null);
// Connect and invoke an operation on the remote MBeanServer
cntor.connect(environment);
上記の例では、UserPasswordCredential オブジェクトが、ユーザー ID が admin に、パスワードが xxxxx に設定されて提供されます。この UserPasswordCredential オブジェクトは、環境マップに設定され、これは、JMXConnector.connect(Map) メソッドで使用されます。次に、この UserPasswordCredential オブジェクト は、JMX フレームワークによってサーバーに渡され、最終的に認証のために ObjectGrid 認証 フレームワークに渡されます。
クライアント・プログラミング・モデルは、厳格に JMX 仕様に従います。
JMX MBean サーバーは、機密情報に対するアクセス権を持つことがあり、機密操作を実行することができる場合があります。JMX では、どのクライアントがその情報にアクセスでき、どのユーザーがそうした操作を実行できるかを識別する、必要なアクセス制御を提供しています。アクセス制御は、標準 Java セキュリティー・モデルに基づいて、MBean サーバーおよびその操作へのアクセスを制御する許可を定義することによって 構築されます。
JMX 操作のアクセス制御または許可に関して、eXtreme Scale は、JMX 実装で提供される JAAS サポートに 依存しています。プログラム実行の任意の時点で、実行のスレッドが保持する現行の許可セットがあります。 このようなスレッドが JMX 仕様操作を呼び出すとき、これらの許可は保持許可として知られています。 JMX 操作が実行されると、セキュリティー・チェックが行われ、必要な許可が保持許可によって暗黙的に示されているかどうかがチェックされます。
MBean ポリシー 定義は、Java ポリシー形式に 従います。例えば、次のポリシーでは、すべての署名者およびすべてのコード・ベースに PlacementServiceMBean のサーバー JMX アドレスを取得する権限を付与します。 ただし、これらの署名者およびコード・ベースは com.ibm.websphere.objectgrid ドメインに制限されます。
grant {
permission javax.management.MBeanPermission
"com.ibm.websphere.objectgrid.management.PlacementServiceMBean#retrieveServerJMXAddress
[com.ibm.websphere.objectgrid:*,type=PlacementService]",
"invoke";
}
以下のポリシー・サンプルを使用すれば、リモート・クライアント ID に基づく許可を完了することができます。このポリシーでは、前の例に示されたものと同じ MBean 許可を付与していますが、X500Principal 名が CN=Administrator、OU=software、O=IBM、L=Rochester、ST=MN、C=US のユーザーだけは除きます。
grant principal javax.security.auth.x500.X500Principal "CN=Administrator,OU=software,O=IBM,
L=Rochester,ST=MN,C=US" {permission javax.management.MBeanPermission
"com.ibm.websphere.objectgrid.management.PlacementServiceMBean#retrieveServerJMXAddress
[com.ibm.websphere.objectgrid:*,type=PlacementService]",
"invoke";
}
Java ポリシーは、 セキュリティー・マネージャーがオンになっている場合に限ってチェックされます。-Djava.security.manager JVM 引数を設定してカタログ・サーバーおよびコンテナー・サーバーを始動し、MBean 操作のアクセス制御を強制するようにしてください。
JMX クライアントと JMX サーバー間のトランスポートは、TLS/SSL を使用して保護することができます。カタログ・サーバーまたはコンテナー・サーバーの transportType が SSL_Required または SSL_Supported に設定されている場合、SSL を使用して JMX サーバーに接続する必要があります。
カタログ・サーバーからコンテナー・サーバー情報を表示するときは、JMX サービス・ポートを設定する必要があります。 例えば、このポートは、xscmd -c showMapSizes コマンドを使用する場合に必要となります。