was.policy ファイルの Java 2 セキュリティーのアプリケーションへの追加

アプリケーションは、デフォルトの app.policy ファイルで与えられている より多くのアクセス権を必要とするリソースにアクセスする場合 には、was.policy ファイルを必要とする場合があります。

このタスクについて

Java™ 2 セキュリティーが WebSphere® Application Server に対して 使用可能になると、WebSphere Application Server 上で稼働するすべてのアプリケーションは、 システム・リソースにアクセスする前にセキュリティー・チェックを受けます。 アプリケーションは、デフォルトの app.policy ファイルで与えられている より多くのアクセス権を必要とするリソースにアクセスする場合 には、was.policy ファイルを必要とする場合があります。デフォルトでは、本製品のセキュリティーは、それぞれのノードにある app.policy ファイルを読み取り、 すべてのアプリケーションに app.policy 内のアクセス権を与えます。 必要な追加のアクセス権を was.policy ファイルに組み込んでください。was.policy ファイルは、アプリケーションが追加のアクセス権を必要とする場合に限り必要です。

すべてのアプリケーションのデフォルト・ポリシー・ファイルは、app.policy ファイルで指定されます。 このファイルは、本製品のセキュリティーによって提供されるものであり、 すべてのアプリケーションに共通で、変更することはできません。 アプリケーションに必要な新規アクセス権を was.policy ファイルに 組み込んでください。

WebSphere Application Server に用意されている app.policy ファイルは、 app_server_root/config/cells/profile/profile_name/config/cell_name/nodes/node_name/app.policy にあります。app.policy ファイルの内容は、次の例のとおりです。

重要: 次のコード例では、JavaMail に必要な 2 つのアクセス権が、表示上の理由で 2 行に分割されています。 実際は、アクセス権を 1 行で入力します。
// The following permissions apply to all the components under the application.

grant codeBase "file:${application}" {
   // The following are required by JavaMail

  permission java.io.FilePermission "
        ${was.install.root}${/}lib${/}activation-impl.jar",
"read";

  permission java.io.FilePermission "
        ${was.install.root}${/}lib${/}mail-impl.jar","read";

  };
   // The following permissions apply to all utility .jar files  (other 
   //  than enterprise beans JAR files) in the application.
grant codeBase "file:${jars}" {
  permission java.net.SocketPermission "*", "connect";
  permission java.util.PropertyPermission "*", "read";
};

// The following permissions apply to connector resources within the application
grant codeBase "file:${connectorComponent}" {
  permission java.net.SocketPermission "*", "connect";
  permission java.util.PropertyPermission "*", "read";
};

// The following permissions apply to all the Web modules (.war files)
// within the application.
grant codeBase "file:${webComponent}" {
  permission java.io.FilePermission "${was.module.path}${/}-", "read, write";
       //  where "was.module.path" is the path where the Web module is
       //  installed. Refer to Dynamic policy concepts for other symbols.
  permission java.lang.RuntimePermission "loadLibrary.*";
  permission java.lang.RuntimePermission "queuePrintJob";
  permission java.net.SocketPermission "*", "connect";
  permission java.util.PropertyPermission "*", "read";
};

// The following permissions apply to all the EJB modules within the application.
grant codeBase "file:${ejbComponent}" {
 permission java.lang.RuntimePermission "queuePrintJob";
 permission java.net.SocketPermission "*", "connect";
 permission java.util.PropertyPermission "*", "read";
};

アプリケーション、またはアプリケーションの 1 つ以上の モジュールに追加のアクセス権が必要な場合は、そのアプリケーションの was.policy ファイルを使用してください。 例えば、アプリケーション全体に追加のアクセス権を与えるには、 ${application} のコードベースを使用して、必要なアクセス権を追加します。 同様に、${webComponent} および ${ejbComponent} というコードベースを使用して、アプリケーション内のすべての Web モジュールとすべてのエンタープライズ Bean モジュールに追加のアクセス権を与えます。追加のアクセス権は、次の例で示すように、各モジュール (.war ファイルまたは .jar ファイル) に割り当てることができます。

この例では、アプリケーションの追加アクセス権を was.policy ファイルに 追加する方法を示しています。

重要: 次のコード例では、EJB モジュールのアクセス権が、表示上の理由で 2 行に分割されています。 実際は、アクセス権を 1 行で入力します。
// grant additional permissions to a Web module
grant codeBase " file:aWebModule.war" {
 permission java.security.SecurityPermission "printIdentity";
};

// grant additional permission to an EJB module
grant codeBase "file:aEJBModule.jar"  {
    permission java.io.FilePermission "
       ${user.install.root}${/}bin${/}DefaultDB${/}-", "read,write,delete";
    // where, ${user.install.root} is the system property whose value is
    // located in the app_server_root directory.
 };

アプリケーションの was.policy ファイルを使用するには、以下のステップを実行します。

手順

  1. ポリシー・ツールを使用して、was.policy ファイルを作成します。 ポリシー・ツールの使用法について詳しくは、PolicyTool を使用した Java 2 セキュリティー用のポリシー・ファイルの編集を参照してください。
  2. ポリシー・ツールを使用して、必要なアクセス権を was.policy ファイルに追加します。
  3. was.policy ファイルを、META-INF ディレクトリー の下のアプリケーションのエンタープライズ・アーカイブ (EAR) ファイルに置いてください。 jar コマンドを使用して、新しく作成した was.policy ファイル でアプリケーションの EAR ファイルを更新します。
  4. was.policy ファイルが挿入されていること確認して、 アセンブリー・ツールを開始します。
    [IBM i][z/OS]注: アセンブリー・ツールは使用できません。 Linux Intel または Windows などの別のプラットフォームでアセンブリー・ツールを使用します。
  5. アプリケーション内の was.policy ファイルが構文的に正しいことを確認します。 アセンブリー・ツールで、 エンタープライズ・アプリケーション・モジュールを右マウス・ボタン・クリックして、 「Run Validation」をクリックします。

タスクの結果

Java 2 セキュリティーが使用可能になると、アプリケーション EAR ファイルをすぐに実行することができます。

Java 2 セキュリティーが使用可能な場合、 アプリケーションが正しく稼働するために、このステップは必要です。was.policy ファイルが作成されず、必要なアクセス権が含まれていない場合、 アプリケーションがシステム・リソースにアクセスできない可能性があります。

アクセス権の欠落という症状は、例外 java.security.AccessControlException で示されます。不足しているアクセス権は、例外データにリストされます。 例えば次のようになります。

[IBM i][z/OS]
java.security.AccessControlException: access denied (java.io.FilePermission
${was.install.root}/java/ext/mail.jar read)
アプリケーション・プログラムがこの例外を受け取り、 このアクセス権を追加することが妥当であると判断した場合は、 例えば以下のようにアクセス権を was.policy ファイルに追加してください。[IBM i][z/OS]
grant codeBase "file:user_client_installed_location" {
  permission java.io.FilePermission
"${was.install.root}$(/)java$(/)jre$(/)lib$(/)ext$(/)mail.jar", "read";
};

前述のアクセス権に関する情報行は、表示上の理由で分割されています。 アクセス権は、1 行で入力してください。

次のタスク

アプリケーションをインストールします。

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_waspolicy
ファイル名:tsec_waspolicy.html