概要
Java Remote Method Invocation (Java RMI)を使用すると、Javaで分散アプリケーションを作成できます。
RMIでは、おそらく異なるホスト上にある、別のJava仮想マシン(JVM)上で実行しているリモートJavaオブジェクトのメソッドを呼び出すことができます。RMIは、オブジェクトの直列化を使用してパラメータを整列化および非整列化します。また、型を切り捨てないため、真のオブジェクト指向の多相性をサポートします。
RMIのセキュリティの推奨事項
RMIアプリケーションのセキュリティを向上させるには、次の推奨事項に従ってください。
- シリアライズ・フィルタリングを参照し、示されたベスト・プラクティスに従ってアプリケーションを保護します。
-
クライアントまたはサーバーでRMIを使用するときには、セキュリティ・マネージャを実行することを確認します。セキュリティ・マネージャを参照してください。
-
妥当なセキュリティ・ポリシーを設定します。たとえば、RMIで通信するホスト間のみに
SocketPermission
を付与して、listen、accept、connectおよびresolve動作を許可します。セキュリティ・ポリシーでAllPermission
は付与しません。Java Development Kitでのアクセス権およびデフォルトのPolicyの実装とポリシー・ファイルの構文を参照してください。 -
ローカル・ホストのJVM間の通信にのみRMIが使用されている場合は、通信をローカルに制限します。このためには、適切なソケット・アクセス権をセキュリティ・ポリシー・ファイルに指定します。または、RMIのAPIを直接使用してローカル・ホストのみに接続を制限できます。
RMISocketFactory
クラスを参照してください。 -
java.rmi.server.useCodebaseOnly
プロパティの値がTrueであることを確認します。デフォルトでは、java.rmi.server.useCodebaseOnly
プロパティはTrueに設定されています。このプロパティをFalseに設定すると、リモート・コードのローディングが有効になり、システムに対するセキュリティ・リスクのレベルが高まります。 -
Secure Sockets Layer (SSL)/Transport Layer Security (TLS)経由でRMIを実行し、サーバーとクライアントの両方の認証をリクエストします。これは、カスタム・ソケット・ファクトリを使用すれば可能です。アプリケーションで、リモート・オブジェクトをエクスポートし、必要なタイプのソケット(SSLソケットなど)を作成するカスタム・ソケット・ファクトリを使用できます。この手法を使用すると、アプリケーションはデフォルトのソケット通信のかわりに、SSLソケット通信を使用できます。次を参照してください。
ドキュメントのアクセシビリティについて
Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。
Oracle Supportへのアクセス
サポートをご購入のOracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info) か、聴覚に障害のあるお客様は (http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。
Java Platform, Standard Edition Javaリモート・メソッド呼び出しAPIガイド, リリース15
F35318-01
2020年9月
Copyright © 1993, 2020, Oracle and/or its affiliates.
このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。
ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。
このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。
U.S. GOVERNMENT END USERS: Oracle programs (including any operating system, integrated software, any programs embedded, installed or activated on delivered hardware, and modifications of such programs) and Oracle computer documentation or other Oracle data delivered to or accessed by U.S. Government end users are "commercial computer software" or "commercial computer software documentation" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, the use, reproduction, duplication, release, display, disclosure, modification, preparation of derivative works, and/or adaptation of i) Oracle programs (including any operating system, integrated software, any programs embedded, installed or activated on delivered hardware, and modifications of such programs), ii) Oracle computer documentation and/or iii) other Oracle data, is subject to the rights and limitations specified in the license contained in the applicable contract.The terms governing the U.S. Government’s use of Oracle cloud services are defined by the applicable contract for such services.No other rights are granted to the U.S. Government.
このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、このソフトウェアまたはハードウェアを安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。
OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。
Intel、Intel Insideは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Epyc、AMDロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。
このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。