Java 2 セキュリティー用の was.policy ファイルの構成
アプリケーションにアクセスする特定のリソースがある場合、was.policy ファイルを更新してください。
始める前に
profile_root/config/cells/cell_name/applications/
ear_file_name/deployments/application_name/META-INF/was.policy
WebSphere Application Server バージョン 6.1 がサポートしている使用可能なポリシー・ファイルのリストについては、Java 2 セキュリティー・ポリシー・ファイルを参照してください。
以下のファイルに含まれるアクセス権を結合したものが、WebSphere Application Server エンタープライズ・アプリケーションに適用されます。
- java.security ファイル内の policy.url.* properties で指定されるすべてのポリシー・ファイル。
- 構成およびファイル複製のサービスで管理される app.policy ファイル。
- server.policy ファイル。
- java.policy ファイル。
- アプリケーション was.policy ファイル。
- ra.xml ファイルの許可仕様。
- library.policy ファイルである共有ライブラリー。
これらのファイルに加えられた変更は、セル内の他のノードに複製されます。
シンボル | 定義 |
---|---|
file:${application} | アクセス権は、アプリケーション内で使用される すべてのリソースに適用されます。 |
file:${jars} | アクセス権は、アプリケーション内のすべてのユーティリティー Java アーカイブ (JAR) ファイルに適用されます。 |
file:${ejbComponent} | アクセス権は、アプリケーション内のエンタープライズ Bean リソースに適用されます。 |
file:${webComponent} | アクセス権は、アプリケーション内の Web リソースに適用されます。 |
file:${connectorComponent} | アクセス権は、アプリケーション内のコネクター・リソースに適用されます。 |
WebSphere Application Server では、
スレッドを操作するアプリケーションには、
was.policy または app.policy ファイルで指定された適切なスレッド許可が必要です。
スレッド許可が指定されていない場合、アプリケーションはスレッドを操作することができず、WebSphere Application Server は
例外 java.security.AccessControlException を作成します。
特定のアプリケーションの was.policy ファイルに許可を追加すると、
WebSphere Application Server を再始動する必要がなくなります。
管理者は、アプリケーションがスレッドを操作できるように、以下のコードを was.policy または app.policy ファイルに追加する必要があります。
grant codeBase "file:${application}" {
permission java.lang.RuntimePermission "stopThread";
permission java.lang.RuntimePermission "modifyThread";
permission java.lang.RuntimePermission "modifyThreadGroup";
};
管理者はスレッド許可を app.policy ファイルに追加することもできますが、
許可の変更により、WebSphere Application Server の再始動が必要になります。重要: Signed By および Java Authentication and Authorization Service (JAAS) プリンシパル・キーワードは、was.policy ファイルではサポートされていません。Signed By キーワードは、ポリシー・ファイル java.policy、server.policy、および client.policy でサポートされています。
JAAS プリンシパル・キーワードは、Java 仮想マシン (JVM) システム・プロパティー java.security.auth.policy により指定されている場合、
JAAS ポリシー・ファイル内でサポートされます。
java.security.auth.policy ファイル内に許可ポリシー・ファイルを
auth.policy.url.n=URL で静的に設定できます。
ここで、URL は許可ポリシーのロケーションです。
これらのブロックのほかに、より細かく設定するためにモジュール名を指定できます。
以下に例を示します。
grant codeBase "file:DefaultWebApplication.war" {
permission java.security.SecurityPermission "printIdentity";
};
grant codeBase "file:IncCMP11.jar" {
permission java.io.FilePermission
"${user.install.root}${/}bin${/}DefaultDB${/}-",
"read,write,delete";
};
シンボル | 定義 |
---|---|
${app.installed.path} | アプリケーションがインストールされているパス |
${was.module.path} | モジュールがインストールされているパス |
${current.cell.name} | 現在のセル名 |
${current.node.name} | 現在のノード名 |
${current.server.name} | 現在のサーバー名 |
このタスクについて
ヒント: ポリシー・ファイルに構文エラーが
あると、アプリケーション・サーバーは失敗します。
これらのポリシー・ファイルを編集する際は、注意してください。
手順
タスクの結果
例
![[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)
![[z/OS]](../images/ngzos.gif)
![[IBM i]](../images/iseries.gif)
注: 以下の例でいくつかの行に分けられているのは、
表示の都合上そうなっているだけです。実際には、1 行でアクセス権を入力してください。
![[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)
Java プログラムがこの例外を受け取り、このアクセス権の追加が認められたら、 次のアクセス権を was.policy ファイルに追加してください。
![[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";
};
アクセス権を追加するかどうかを判断するには、 『Java 2 セキュリティーのアクセス制御例外』を参照してください。