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 セキュリティ チェック権限アルゴリズムを参照してください。

次の2つの権限は、Java 2セキュリティマネージャ(ハードコード)によって強制されます。 WebSphere Application Server:
  • java.lang.RuntimePermission(exitVM)
  • java.lang.RuntimePermission(setSecurityManager)

Java 2 セキュリティ ポリシーの内容に関係なく、アプリケーション コードはこれらの権限へのアクセスを拒否されます。 ただし、サーバーのランタイムには、これらの許可が付与されています。 これ以外のすべての 許可検査は、実行されません。

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を適用します。

注記:エンタープライズアプリケーションのデフォルトのJava 2セキュリティポリシーははるかに厳格であり、すべての権限はWebSphere Application Serverバージョン8.5 。 アプリケーション・コードに必要な許可が付与されていないため、セキュリティー・ポリシーは失敗する可能性がありますが、システム・リソース (例えばファイル入出力) には方針に基づいてアクセスすることができ、許可チェックを受けるようになりました。

アプリケーション・コードで、セキュリティー・マネージャーを設定するために setSecurityManager アクセス権を使用しないでください。 アプリケーションがsetSecurityManager許可、内部セキュリティマネージャーとの競合が発生していますWebSphere Application Server。 RMIの目的でアプリケーションにセキュリティマネージャを設定する必要がある場合は、 Java 2 セキュリティを使用して、ローカル リソースへのアプリケーション アクセスを制限するグローバルセキュリティページのWebSphere Application Server管理コンソール。 WebSphere Application Server次に、セキュリティ マネージャーを登録します。 アプリケーション・コードでは、 このセキュリティー・マネージャーが System.getSecurityManager() アプリ ケーション・プログラミング・インターフェース (API) を使用して登録され ていることを確認することができます。

システム・プロパティーのマイグレーション

以前のリリースでは、Java 2 セキュリティに関連して次のシステム プロパティが使用されています。
  • 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) と製品サーバー ランタイムに付与される権限です。

[AIX Solaris HP-UX Linux Windows][z/OS]Java 2セキュリティポリシーファイルのデフォルトの場所はprofile_root/properties/java.policyわかりやすくするためにデフォルトの権限は省略されています。

[IBM i]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) コンポーネント レベル) でより細かいレベルで権限を付与したり、特定のコンポーネントに権限を付与したりすることもできます。

手順

  1. アプリケーション サーバーで Java 2 セキュリティが無効になっていることを確認します。
  2. 新規作成was.policyファイルが存在しない場合はファイルを更新するか、was.policy構成リポジトリ内の移行されたアプリケーションのファイルには、次の内容が含まれます。
    grant codeBase "file:${application}" {
         permission java.security.SecurityPermission "printIdentity";
         permission java.io.FilePermission "
                 ${user.install.root}${/}temp${/}somefile.txt", "read";
       };

    上記のコード・サンプルの 3 行目と 4 行目は、説明の都合上 2 行で表示されています。

    このwas.policyファイルはprofile_root/config/cells/cell_name/applications/app.ear/deployments/app/META-INF/directory.

  3. 組み立てツールを使用してwas.policyファイルをエンタープライズ アーカイブ (EAR) ファイルに追加します。

    アセンブリツールを使用して、was.policyを適用します。 詳細については、設定was.policyJava 2 セキュリティ用のファイル

  4. エンタープライズアプリケーションが、移行されたJava 2セキュリティ権限と、${user.install.root}/config/cells/cell_name/nodes/node_name/app.policyを適用します。 この検証には、実稼働前の環境で Java 2 セキュリティを有効にして移行されたエンタープライズ アプリケーションのコード レビュー、コード検査、アプリケーション ドキュメントのレビュー、およびサンドボックス テストが必要です。 Java 2 セキュリティーによって保護されている API の詳細については、「Java 2 セキュリティーによって保護されている開発キット API」を参照してください。 サードパーティのライブラリを使用する場合は、Java 2 セキュリティで保護されている API のベンダーのドキュメントを参照してください。 アプリケーションに必要なすべての権限が付与されていることを確認してください。付与されていない場合、Java 2 セキュリティーが有効になっているときに実行に失敗する可能性があります。
  5. Java 2 セキュリティを有効にして、移行されたエンタープライズ アプリケーションの実稼働前テストを実行します。
    トレースを有効にするWebSphere Application Server次のトレース文字列を持つ実稼働前テスト環境の Java 2 セキュリティ マネージャー:com.ibm.ws.security.core.SecurityManager=all=enabledこのトレース機能は、AccessControlExceptionアプリケーションに必要な権限が付与されていない場合、または一部のシステム コードが特権として適切にマークされていない場合に作成される例外。 このトレースは、例外が作成されると、スタック・トレース、 およびクラスに与えられた許可を呼び出しスタック上にダンプします。

    詳細については、 Java 2 セキュリティのアクセス制御例外

    注記: Java 2 セキュリティ ポリシーは以前のリリースに比べてはるかに厳格になっているため、管理者またはデプロイヤーは、Java 2 セキュリティを有効にする前に、エンタープライズ アプリケーションを確認して追加の権限が必要かどうかを確認する必要があります。 エンタープライズ・アプリケーションに必要な許可が与えられていないと、 その実行は失敗します。