was.policy ファイルの Java 2 セキュリティーのアプリケーションへの追加
アプリケーションは、デフォルトの app.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 ファイルの内容は、次の例のとおりです。
// 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 ファイルに 追加する方法を示しています。
// 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 で示されます。不足しているアクセス権は、例外データにリストされます。 例えば次のようになります。
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
java.security.AccessControlException: access denied (java.io.FilePermission
${was.install.root}/java/ext/mail.jar read)
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
grant codeBase "file:user_client_installed_location" {
permission java.io.FilePermission
"${was.install.root}$(/)java$(/)jre$(/)lib$(/)ext$(/)mail.jar", "read";
};
前述のアクセス権に関する情報行は、表示上の理由で分割されています。 アクセス権は、1 行で入力してください。