Java 2 セキュリティーは、いくつかのポリシー・ファイルを使用して、それぞれの Java プログラムごとに認可されたアクセス権を判別します。
これらのファイルに加えられた変更は、Network Deployment セル内の他のノードに複製されます。
grant codeBase "file:${application}" { permission java.lang.RuntimePermission "stopThread"; permission java.lang.RuntimePermission "modifyThread"; permission java.lang.RuntimePermission "modifyThreadGroup"; };
エンタープライズ・アプリケーションのデフォルトのアクセス権 (java.policy ファイル、server.policy ファイル、および app.policy ファイルで定義されたアクセス権を結合したもの) が十分であれば、アクションは不要です。 デフォルトの app.policy ファイルは自動的に使用されます。セル内のすべてのエンタープライズ・アプリケーションに対して、特定の変更が必要な場合は、app.policy ファイルを更新してください。ポリシー・ファイルに構文エラーがあると、アプリケーション・サーバーは始動に失敗します。 これらのポリシー・ファイルの編集は、慎重に行ってください。
ポリシー・ファイルを抽出するには、 コマンド・プロンプトを使用し、ご使用の環境に適切な変数値を使用して以下のコマンドを 1 行で入力します。
wsadmin> set obj [$AdminConfig extract profiles/profile_name/cells/cell_name/node/
node_name/app.policy /temp/test/library.policy]
ポリシー・ツールを使用して、抽出された app.policy ファイルを編集します。詳しくは、PolicyTool を使用したポリシー・ファイルの編集 を参照してください。app.policy ファイルに対する変更は、 ノード上でローカルに行われます。
ポリシー・ファイルをチェックインするには、 コマンド・プロンプトを使用し、ご使用の環境に適切な変数値を使用して以下のコマンドを 1 行で入力します。
wsadmin> $AdminConfig checkin profiles/profile_name/cells/cell_name/nodes/
node_name/app.policy temp/test/library.policy $obj
アクセス権リストと特定のタイプのリソースを関連付けるために、製品の予約済みシンボルがいくつか定義されています。
シンボル | 意味 |
---|---|
file:${application} | アクセス権は、アプリケーション内のすべてのリソースに適用されます。 |
file:${jars} | アクセス権は、アプリケーション内のすべてのユーティリティー Java アーカイブ (JAR) ファイルに適用されます。 |
file:${ejbComponent} | アクセス権は、アプリケーション内のエンタープライズ Bean リソースに適用されます。 |
file:${webComponent} | アクセス権は、アプリケーション内の Web リソースに適用されます。 |
file:${connectorComponent} | アクセス権は、 アプリケーション内のコネクター・リソースと、 スタンドアロンのコネクター・リソース内のコネクター・リソースの、 両方に適用されます。 |
シンボル | 意味 |
---|---|
${app.installed.path} | アプリケーションがインストールされているパス |
${was.module.path} | モジュールがインストールされているパス |
${current.cell.name} | 現在のセル名 |
${current.node.name} | 現在のノード名 |
${current.server.name} | 現在のサーバー名 |
WebSphere Application Server に用意されている app.policy ファイルは、app_server_root/profiles/profile_name/config/cells/cell_name/nodes/node_name/app.policy にあり、これには以下のデフォルトのアクセス権が含まれています。
grant codeBase "file:${application}" { // The following are required by Java mail permission java.io.FilePermission "${was.install.root}${/}lib${/}mail-impl.jar", "read"; permission java.io.FilePermission "${was.install.root}${/}lib${/}activation-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, 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.net.SocketPermission "*", "connect"; permission java.util.PropertyPermission "*", "read"; };
セル内のすべての WebSphere Application Server エンタープライズ・アプリケーションが、java.policy ファイル、server.policy ファイル、および app.policy ファイルでデフォルトとして定義されていないアクセス権を必要とする場合は、app.policy ファイルを更新してください。 アクセス権の欠落という症状は、例外 java.security.AccessControlException で示されます。
欠落しているアクセス権は、例外データにリストされます。 例えば、java.security.AccessControlException: access denied (java.io.FilePermission C:¥WebSphere¥AppServer¥java¥jre¥lib¥ext¥mail.jar read) というように表示されます。
Java プログラムがこの例外を受け取り、このアクセス権の追加が認められると、 アクセス権を server.policy ファイルに追加します。 以下に例を示します。
grant codeBase "file:user_client_installed_location" { permission java.io.FilePermission "C:/WebSphere/AppServer/java/jre/lib/ext/mail.jar", "read"; };
アクセス権を追加するかどうかを判断するには、AccessControlException のトピックを参照してください。
すべての WebSphere Application Server エンタープライズ・アプリケーションを再始動して、更新済みの app.policy ファイルが有効になっていることを確認してください。