app.policy ファイルのアクセス権

Java™ 2 セキュリティーは、いくつかのポリシー・ファイルを使用して、それぞれの Java プログラムごとに認可されたアクセス権を判別します。 以下のファイルに含まれるアクセス権の組み合わせが、WebSphere® Application Server エンタープライズ・アプリケーションに適用されます。この組み合わせは、認可されたアクセス権を判別します。

WebSphere Application Server がサポートする使用可能なポリシー・ファイルのリストについては、Java 2 セキュリティー・ポリシー・ファイルに関するトピックを参照してください。app.policy ファイルは、すべての WebSphere Application Server エンタープライズ・アプリケーションによって共有されるデフォルトのポリシー・ファイルです。 以下のファイルに含まれるアクセス権の組み合わせが、WebSphere Application Server エンタープライズ・アプリケーションに適用されます。
  • java.security ファイル内の policy.url.* properties で指定されるすべてのポリシー・ファイル。
  • 構成およびファイル複製のサービスで管理される app.policy ファイル。
  • server.policy ファイル。
  • java.policy ファイル。
  • アプリケーション was.policy ファイル。
  • ra.xml ファイルの許可仕様。
  • library.policy ファイルである共有ライブラリー。

これらのファイルに加えられた変更は、WebSphere Application Server Network Deployment セル内の他のノードに複製されます。

WebSphere Application Server では、スレッドを操作するアプリケーションには、was.policy または app.policy ファイルで指定された適切なスレッド許可が必要です。スレッド許可が指定されていない場合、アプリケーションはスレッドを操作することができず、WebSphere Application Server は例外 java.security.AccessControlException を作成します。管理者が app.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";
}; 
重要: Signed By および Java Authentication and Authorization Service (JAAS) プリンシパル・キーワードは app.policy ファイルではサポートされていません。 ただし、Signed By キーワードは、java.policyserver.policy、 および client.policy ファイルではサポートされます。JAAS プリンシパル・キーワードは、 Java 仮想マシン (JVM) システム・プロパティー java.security.auth.policy により指定されている場合、 JAAS ポリシー・ファイル内でサポートされます。 java.security.auth.policy プロパティー内の許可ポリシー・ファイルを auth.policy.url.n=URL で静的に設定できます。 ここで、URL は許可ポリシーのロケーションです。
エンタープライズ・アプリケーションのデフォルトのアクセス権 (java.policy ファイル、server.policy ファイル、および app.policy ファイルで定義されたアクセス権を結合したもの) が十分であれば、アクションは不要です。 デフォルトの app.policy ファイルは自動的に使用されます。セル内のすべてのエンタープライズ・アプリケーションに対して、特定の変更が必要な場合は、app.policy ファイルを更新してください。ポリシー・ファイルに構文エラーがあると、アプリケーション・サーバーは始動に失敗します。 これらのポリシー・ファイルの編集は、慎重に行ってください。
注: app.policy ファイルへの更新は、app.policy ファイルが属するノード上のエンタープライズ・アプリケーションにのみ適用されます。

ポリシー・ファイルを抽出するには、 コマンド・プロンプトを使用し、ご使用の環境に適切な変数値を使用して以下のコマンドを 1 行で入力します。

[Windows]
wsadmin> set obj [$AdminConfig extract cells/cell_name/node/node_name/app.policy c:¥temp¥test¥app.policy]
[IBM i][z/OS]
wsadmin> set obj [$AdminConfig extract  cells/cell_name/node/node_name/app.policy /temp/test/app.policy]

ポリシー・ツールを使用して、抽出された app.policy ファイルを編集します。詳しくは、 PolicyTool を使用した Java 2 セキュリティー用のポリシー・ファイルの編集を参照してください。app.policy ファイルに対する変更は、 ノード上でローカルに行われます。

ポリシー・ファイルをチェックインするには、 コマンド・プロンプトを使用し、ご使用の環境に適切な変数値を使用して以下のコマンドを 1 行で入力します。

[Windows]
wsadmin> $AdminConfig checkin cells/cell_name/nodes/node_name/app.policy c:¥temp¥test¥app.policy $obj
[IBM i][z/OS]
wsadmin> $AdminConfig checkin cells/cell_name/nodes/node_name/app.policy  temp/test/app.policy $obj
表 1. アクセス権リストを特定のタイプのリソースに関連付けるために使用されるシンボル. アクセス権リストと特定のタイプのリソースを関連付けるために、製品の予約済みシンボルがいくつか定義されています。
シンボル 意味
file:${application} アクセス権は、アプリケーション内のすべてのリソースに適用されます。
file:${jars} アクセス権は、アプリケーション内のすべてのユーティリティー Java アーカイブ (JAR) ファイルに適用されます。
file:${ejbComponent} アクセス権は、アプリケーション内のエンタープライズ Bean リソースに適用されます。
file:${webComponent} アクセス権は、アプリケーション内の Web リソースに適用されます。
file:${connectorComponent} アクセス権は、アプリケーション内のコネクター・リソースと、スタンドアロンのコネクター・リソース内のコネクター・リソースの、両方に適用されます。
表 2. java.io.FilePermission アクセス権のパスと名前を指定するために提供されているシンボル. java.io.FilePermission アクセス権のパスと名前を指定するために、5 つの組み込みシンボルが提供されています。これらのシンボルによって、アクセス権を柔軟に指定することができます。 ファイルの絶対パスは、アプリケーションのインストール後に修正されます。
シンボル 意味
${app.installed.path} アプリケーションがインストールされているパス
${was.module.path} モジュールがインストールされているパス
${current.cell.name} 現在のセル名
${current.node.name} 現在のノード名
${current.server.name} 現在のサーバー名
ヒント: ${application} エントリーでは ${was.module.path} は使用することはできません。

[IBM i][z/OS]WebSphere Application Server で用意されている app.policy ファイル は、profile_root/config/cells/cell_name/nodes/node_name/app.policy に あります。 これには、以下のデフォルトのアクセス権が含まれています。

重要: 次のコード・サンプルでは、java.io.FilePermission アクセス権に関連する最初の 2 行は、表示上の理由で 2 行に分割されています。
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";
};

grant codeBase "file:${jars}" {
  permission java.net.SocketPermission "*", "connect";
  permission java.util.PropertyPermission "*", "read";
};

grant codeBase "file:${connectorComponent}" {
  permission java.net.SocketPermission "*", "connect";
  permission java.util.PropertyPermission "*", "read";
};

grant codeBase "file:${webComponent}" {
  permission java.io.FilePermission "${was.module.path}", "read";
  permission java.io.FilePermission "${was.module.path}${/}-", "read, write"
  permission java.lang.RuntimePermission "loadLibrary.*";
  permission java.lang.RuntimePermission "queuePrintJob";
  permission java.net.SocketPermission "*", "connect";
  permission java.util.PropertyPermission "*", "read";
};
grant codeBase "file:${ejbComponent}" {
 permission java.lang.RuntimePermission "queuePrintJob";
 permission java.lang.RuntimePermission "loadLibrary.*";
 permission java.net.SocketPermission "*", "connect";
 permission java.util.PropertyPermission "*", "read";
 permission java.io.FilePermission "*", "read,write";
};
セル内のすべての WebSphere Application Server エンタープライズ・アプリケーションが、java.policy ファイル、server.policy ファイル、および app.policy ファイルでデフォルトとして定義されていないアクセス権を必要とする場合は、app.policy ファイルを更新してください。アクセス権の欠落という症状は、例外 java.security.AccessControlException で示されます。
注: app.policy ファイルへの更新は、app.policy ファイルが属するノード上のエンタープライズ・アプリケーションにのみ適用されます。
[Windows] 不足しているアクセス権は、例外データにリストされます。 例えば次のようになります。
java.security.AccessControlException: access denied 
(java.io.FilePermission 
C:¥WebSphere¥AppServer¥java¥jre¥lib¥ext¥mail.jar read)

Java プログラムがこの例外を受け取り、このアクセス権の追加が認められたら、 アクセス権を server.policy ファイルに追加してください。以下に例を示します。

[Windows]
grant codeBase "file:user_client_installed_location" {   
  permission java.io.FilePermission
"C:¥WebSphere¥AppServer¥java¥jre¥lib¥ext¥mail.jar", "read";
 };
[IBM i]
grant codeBase "file:user_client_installed_location" {   
  permission java.io.FilePermission
"${was.install.root}$(/)java$(/)jre$(/)lib$(/)ext$(/)mail.jar", "read";
 };

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

アクセス権を追加するかどうかを判断するには、AccessControlException のトピックを参照してください。

更新した app.policy ファイルが有効になるように、すべての WebSphere Application Server エンタープライズ・アプリケーションを再始動します。


トピックのタイプを示すアイコン 参照トピック



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