次の推奨事項に従って、RMIアプリケーションのセキュリティを向上します。
クライアントまたはサーバーでRMIを使用するときには常にセキュリティ・マネージャを実行します。Javaチュートリアルの「The Security Manager」を参照してください。
妥当なセキュリティ・ポリシーを設定します。たとえば、RMIで通信するホスト間のみにSocketPermission
を付与して、listen、accept、connectおよびresolve動作を許可します。セキュリティ・ポリシーでAllPermission
は付与しません。「JDKでのアクセス権」および「デフォルトのPolicyの実装とポリシー・ファイルの構文」を参照してください。
ローカル・ホストのJVM間の通信にのみRMIが使用されている場合は、通信をローカルのみに制限します。そのためには、以前に説明したように、適切なソケット・アクセス権をセキュリティ・ポリシー・ファイルに指定します。または、RMIのAPIを直接使用してローカル・ホストのみに接続を制限できます。この例は、RMISocketFactory
クラスのドキュメントを参照してください。
java.rmi.server.useCodebaseOnly
プロパティの値がtrue
(デフォルト値)であることを確認します。このプロパティをfalse
に設定すると、リモート・コードのローディングが可能になり、システムに対するセキュリティ・リスクのレベルが高まります。「java.rmiプロパティ
」を参照してください。
SSL/TLSでRMIを実行して、サーバーとクライアントの両方で認証を必須にします。詳細は、次を参照してください。