アプリケーションは、デフォルトの app.policy ファイルで与えられている より多くのアクセス権を必要とするリソースにアクセスする場合 には、was.policy ファイルを必要とする場合があります。
すべてのアプリケーションのデフォルト・ポリシー・ファイルは、app.policy ファイルで指定されます。 このファイルは、本製品のセキュリティーによって提供されるものであり、 すべてのアプリケーションに共通で、変更することはできません。 アプリケーションに必要な新規アクセス権を was.policy ファイルに 組み込んでください。
app.policy ファイルは profile_root/config/cells/cell_name/nodes/node_name ディレクトリー内にあります。app.policy ファイルの内容は、次の例のとおりです。
// 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 ファイルに 追加する方法を示しています。
// 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 ファイルを使用するには、以下のステップを実行します。
Java 2 セキュリティーが使用可能な場合、 アプリケーションが正しく稼働するために、このステップは必要です。 was.policy ファイルが作成されず、必要なアクセス権が含まれていない場合、 アプリケーションがシステム・リソースにアクセスできない可能性があります。
java.security.AccessControlException: access denied (java.io.FilePermission app_server_root/lib/mail-impl.jar read)
java.security.AccessControlException: access denied (java.io.FilePermission app_server_root/lib/mail-impl.jar read)
java.security.AccessControlException: access denied (java.io.FilePermission app_server_root/lib/mail-impl.jar read)
前の行は表示の都合上 2 行になっていますが、1 つの連続した行と考えてください。
grant codeBase "file:${application}" { permission java.io.FilePermission "app_server_root/lib/mail-impl.jar", "read"; };
この例では、表示上の理由で行が分割されています。