Java 2 セキュリティー・ポリシーのマイグレーション
Java™ 2 セキュリティー ポリシーの移行に関するガイダンスについては、このトピックを参照してください。
このタスクの概要
前のWebSphere® Application Serverリリース
WebSphere Application ServerサーバーランタイムでJava 2セキュリティマネージャを使用して、エンタープライズアプリケーションがSystem.exitそしてそのSystem.setSecurityManager方法。 これら 2 つの Java アプリケーション プログラミング インターフェイス (API) は、エンタープライズ アプリケーションによって呼び出されると、望ましくない結果をもたらします。 のSystem.exitたとえば、API を使用すると、Java 仮想マシン (アプリケーション サーバー プロセス) が途中で終了してしまいますが、これはアプリケーション サーバーにとって有益な操作ではありません。
Java 2セキュリティを適切にサポートするには、すべてのサーバーランタイムを次のようにマークする必要があります。privileged(とdoPrivilegedAPI 呼び出しが正しい場所に挿入されているかを確認し、デフォルトの権限セットまたはポリシーを識別します。 アプリケーション・コードは特権を保持せず、ポリシー・ファイルで定義された許可に従います。 のdoPrivilegedインストルメンテーションは、Java 2 セキュリティをサポートするために重要かつ必要です。 これがない場合、アプリケーション・コードは、 サーバー・ランタイムに必要な許可を与えられていなければなりません。 この状況は、Java 2 セキュリティが権限チェックを実施するために使用する設計とアルゴリズムが原因です。 Java 2 セキュリティ チェック権限アルゴリズムを参照してください。
- java.lang.RuntimePermission(exitVM)
- java.lang.RuntimePermission(setSecurityManager)
Java 2 セキュリティ ポリシーの内容に関係なく、アプリケーション コードはこれらの権限へのアクセスを拒否されます。 ただし、サーバーのランタイムには、これらの許可が付与されています。 これ以外のすべての 許可検査は、実行されません。
- java.net.SocketPermission
- java.net.NetPermission
ただ、すべての製品サーバー・ランタイムが特権ありとして適切にマークされているわけではありません。 アプリケーション・コードには、先にリストした 2 つのほかに、すべての許可を与える必要があります。 これを行わないと、エンタープライズ・アプリケーションが実行できない場合があります。 エンタープライズ アプリケーション向けのこの Java 2 セキュリティ ポリシーは自由です。
変更内容
Java 2セキュリティは、 WebSphere Application Serverつまり、すべての権限が適用されます。 エンタープライズアプリケーションのデフォルトのJava 2セキュリティポリシーは、 Java Platform, Enterprise Edition( Java EE ) バージョン1.4仕様。 参照profile_root/config/cells/cell_name/nodes/node_name/app.policyエンタープライズ アプリケーションに付与されるデフォルトの Java 2 セキュリティ ポリシーのファイル。 このポリシーは、前のリリースと比較すると、 はるかに厳格です。
すべてのポリシーは、宣言により施行されます。 製品のセキュリティー・マネージャーは、 ポリシー・ファイルで宣言されるすべてのポリシーに従います。 このルールには例外があります。エンタープライズアプリケーションは、profile_root/config/cells/cell_name/filter.policyを適用します。
アプリケーション・コードで、セキュリティー・マネージャーを設定するために setSecurityManager アクセス権を使用しないでください。 アプリケーションがsetSecurityManager許可、内部セキュリティマネージャーとの競合が発生していますWebSphere Application Server。 RMIの目的でアプリケーションにセキュリティマネージャを設定する必要がある場合は、 Java 2 セキュリティを使用して、ローカル リソースへのアプリケーション アクセスを制限するグローバルセキュリティページのWebSphere Application Server管理コンソール。 WebSphere Application Server次に、セキュリティ マネージャーを登録します。 アプリケーション・コードでは、 このセキュリティー・マネージャーが System.getSecurityManager() アプリ ケーション・プログラミング・インターフェース (API) を使用して登録され ていることを確認することができます。
システム・プロパティーのマイグレーション
- java.security.policy. ポリシー・ファイルの絶対パス (処置が必要です)。 このシステム プロパティには、システム権限 (Java 仮想マシン (JVM) と製品サーバー ランタイムに付与される権限) とエンタープライズ アプリケーション権限の両方が含まれます。 エンタープライズアプリケーションのJava 2セキュリティポリシーを移行するバージョン8.5 。 Java 2 セキュリティ ポリシーの移行については、Java 2 セキュリティ ポリシーの移行手順を参照してください。
- enableJava2Security. Java 2 セキュリティ強制を有効にするために使用されます (アクションは不要です)。 このシステムプロパティは非推奨です。WebSphere構成アプリケーション プログラミング インターフェイス (API) は、Java 2 セキュリティを有効にするかどうかを制御するために使用されます。 このオプションは、 管理コンソールから使用可能にします。
- was.home. インストールディレクトリに展開WebSphere Application Server(アクションが必要になる場合があります)。 このシステム・プロパティーは使用すべきではありません。${user.install.root} および ${was.install.root} プロパティーに置き換えられます。 ディレクトリーにインスタンス固有のデータが含まれている場合は、 ${user.install.root} が使用されます。それ以外の場合は、${was.install.root} が使用されます。 これらのプロパティは、 WebSphere Application ServerまたはWebSphere Application Server Network Deployment環境。 Java 2 セキュリティ ポリシーを移行する手順を参照してください。
Java 2 セキュリティ ポリシーの移行
Javaポリシーファイルを移行する簡単な方法はありません。バージョン8.5同じポリシー ファイル内にシステム権限とアプリケーション権限が混在しているため、自動的に実行されます。 エンタープライズアプリケーションのJava 2セキュリティポリシーを手動でコピーします。was.policyまたはapp.policyを適用します。 しかし、Java 2のセキュリティポリシーをwas.policy絶対コード ベースではなくシンボルまたは相対コード ベースが使用されるため、ファイルの使用が推奨されます。 このプロセスには多くの利点があります。 で定義された権限を付与しますwas.policy特定のエンタープライズアプリケーションのみに権限が付与され、app.policyファイルは、ノード上で実行されるすべてのエンタープライズアプリケーションに適用されます。app.policyファイルが属します。
参照Java 2 セキュリティ ポリシー ファイルポリシー管理の詳細については、トピックを参照してください。
次の例は、以前のリリースからの Java 2 セキュリティ ポリシーの移行を示しています。 内容には、Java 2セキュリティポリシーファイルが含まれています。app1.earエンタープライズ アプリケーションとシステム権限。これらは、Java 仮想マシン (JVM) と製品サーバー ランタイムに付与される権限です。
Java 2セキュリティポリシーファイルのデフォルトの場所はprofile_root/properties/java.policyわかりやすくするためにデフォルトの権限は省略されています。
Java 2セキュリティポリシーファイルのデフォルトの場所はprofile_root/properties/java.policyわかりやすくするためにデフォルトの権限は省略されています。
// For product Samples
grant codeBase "file:${app_server_root}/installedApps/app1.ear/-" {
permission java.security.SecurityPermission "printIdentity";
permission java.io.FilePermission "${app_server_root}${/}temp${/}somefile.txt",
"read";
};図をわかりやすくするため、この例では、すべての許可がアプリケーション・レベル許可としてマイグレーションされています。 ただし、コンポーネント レベル (Web、エンタープライズ Bean、コネクタ、またはユーティリティ Java アーカイブ (JAR) コンポーネント レベル) でより細かいレベルで権限を付与したり、特定のコンポーネントに権限を付与したりすることもできます。