WebSphere Application Server Version 6.1 Feature Pack for Web Services   
             オペレーティング・システム: AIX , HP-UX, i5/OS, Linux, Solaris, Windows, Windows Vista, z/OS

             目次と検索結果のパーソナライズ化

アプリケーションへの was.policy ファイルの追加

アプリケーションは、デフォルトの 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 ファイルに 組み込んでください。

app.policy ファイルは profile_root/config/cells/cell_name/nodes/node_name ディレクトリー内にあります。app.policy ファイルの内容は、次の例のとおりです。

重要: 次のコード例では、JavaMail に必要な 2 つのアクセス権が、表示上の理由で 2 行に分割されています。
// 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${/}mail-impl.jar","read";
   permission java.io.FilePermission "
        ${was.install.root}${/}lib${/}activation-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 行に分割されています。
// 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 を使用したポリシー・ファイルの編集 を参照してください。
  2. ポリシー・ツールを使用して、必要なアクセス権を was.policy ファイルに追加します。
  3. was.policy ファイルを、META-INF ディレクトリー の下のアプリケーションのエンタープライズ・アーカイブ (EAR) ファイルに置いてください。 jar コマンドを使用して、新しく作成した was.policy ファイル でアプリケーションの EAR ファイルを更新します。
  4. was.policy ファイルが挿入されていること確認して、 アセンブリー・ツールを開始します。
    [i5/OS] [z/OS] 注: アセンブリー・ツールは使用できません。 Linux Intel または Windows などの別のプラットフォームでアセンブリー・ツールを使用します。
  5. アプリケーション内の was.policy ファイルが構文的に正しいことを確認します。 アセンブリー・ツールで、 エンタープライズ・アプリケーション・モジュールを右マウス・ボタン・クリックして、 「Run Validation」をクリックします。

結果

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

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

[AIX HP-UX Linux Solaris Windows] [z/OS] アクセス権の欠落という症状は、例外 java.security.AccessControlException で示されます。不足している アクセス権は、例外データにリストされます。例えば次のようになります。
java.security.AccessControlException: access denied (java.io.FilePermission
app_server_root/lib/mail-impl.jar read)
[i5/OS]
java.security.AccessControlException: access denied (java.io.FilePermission
app_server_root/lib/mail-impl.jar read)
[i5/OS] アクセス権の欠落という症状は、例外 java.security.AccessControlException で示されます。不足している アクセス権は、例外データにリストされます。例えば次のようになります。
java.security.AccessControlException: access denied (java.io.FilePermission
app_server_root/lib/mail-impl.jar read)

前の行は表示の都合上 2 行になっていますが、1 つの連続した行と考えてください。

アプリケーション・プログラムがこの例外を受け取り、 このアクセス権を追加することが妥当であると判断した場合は、 例えば以下のようにアクセス権を was.policy ファイルに追加してください。
grant codeBase "file:${application}" {
  permission java.io.FilePermission
 "app_server_root/lib/mail-impl.jar", "read";
  };

この例では、表示上の理由で行が分割されています。

次の作業

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



関連概念
J2EE コネクター・セキュリティー
関連タスク
Java 2 セキュリティー・ポリシー・ファイルの構成
関連資料
Java 2 セキュリティー・ポリシー・ファイル
セキュリティー: 学習用リソース
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 4:10:06 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.wsfep.multiplatform.doc/info/ae/ae/tsec_waspolicy.html