Java 2 セキュリティー用の was.policy ファイルの構成

アプリケーションにアクセスする特定のリソースがある場合、was.policy ファイルを更新してください。

始める前に

Java™ 2 セキュリティーは、いくつかのポリシー・ファイルを使用して、各 Java プログラムの付与された権限を決定します。 was.policy ファイルは、WebSphere® Application Server エンタープライズ・アプリケーションのアプリケーション固有のポリシー・ファイルです。 このファイルは、META-INF/was.policy エンタープライズ・アーカイブ (.EAR) ファイルに組み込まれています。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 ファイルである共有ライブラリー。

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

表 1. アクセス権リストを特定のタイプのリソースと関連付けるために定義されているシンボル. アクセス権リストと特定のタイプのリソースを関連付けるために、製品の予約済みシンボルがいくつか定義されています。
シンボル 定義
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.policyserver.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";
};
表 2. java.io.FilePermission アクセス権のパスと名前を指定するために提供されている組み込みシンボル. java.io.FilePermission アクセス権のパスと名前を指定するために、5 つの組み込みシンボルが提供されています。これらのシンボルによって、アクセス権を柔軟に指定することができます。 ファイルの絶対パスは、アプリケーションのインストール後に修正されます。
シンボル 定義
${app.installed.path} アプリケーションがインストールされているパス
${was.module.path} モジュールがインストールされているパス
${current.cell.name} 現在のセル名
${current.node.name} 現在のノード名
${current.server.name} 現在のサーバー名

このタスクについて

エンタープライズ・アプリケーションのデフォルトのアクセス権が十分である場合は、アクションは必要ありません。 デフォルトのアクセス権は、java.policy ファイル、server.policy ファイル、および app.policy ファイルで 定義されたアクセス権を結合したものです。アプリケーションが特定のリソースにアクセスする必要がある場合は、was.policy ファイルを 更新してください。最初の 2 つのステップは、新規ポリシー・ファイルを作成することを想定しています。
ヒント: ポリシー・ファイルに構文エラーが あると、アプリケーション・サーバーは失敗します。 これらのポリシー・ファイルを編集する際は、注意してください。

手順

  1. PolicyTool を使用して、新規 was.policy ファイルを作成し、編集します。 詳しくは、PolicyTool を使用した Java 2 セキュリティー用のポリシー・ファイルの編集を参照してください。
  2. was.policy ファイルをエンタープライズ・アーカイブ (EAR) ファイルにパッケージします。

    詳しくは、was.policy ファイルの Java 2 セキュリティーのアプリケーションへの追加を参照してください。

    以下の説明では、was.policy ファイルのインポート方法について示します。
    1. EAR ファイルをアセンブリー・ツールにインポートします。
    2. 「Project Navigator」ビューを開きます。
    3. EAR ファイルを展開して、「META-INF」をクリックします。 META-INF ディレクトリーに、was.policy ファイルがあります。 このファイルを削除するには、ファイル名を右マウス・ボタン・クリックして、「削除」を選択します。
    4. 「プロジェクト・ナビゲーター」ビューで、「J2EE 階層」をクリックします。
    5. デプロイメント記述子内で Modules ディレクトリーを 右クリックし、 「インポート」>「インポート」>「ファイル・システム」とクリックすることによって、was.policy ファイルをインポートします。
    6. 次へ」をクリックします。
    7. From directory」フィールドに was.policy ファイルへのパス名を入力するか、 「参照」をクリックしてファイルを検索します。
    8. Into directory」フィールドにリストされているパス・ディレクトリーに、 有効な META-INF ディレクトリーがリストされていることを検証します。
    9. 終了」をクリックします。
    10. EAR ファイルの妥当性検査を行うには、Modules ディレクトリーを含んでいる EAR ファイルを右マウス・ボタン・クリックして、 「Run Validation」をクリックします。
    11. この新しい EAR ファイルを保存するため、EAR ファイルを 右クリックし、「エクスポート」>「EAR ファイルのエクスポート」とクリックします。 改訂した EAR ファイルを保存しない場合には、その EAR ファイルには新規 was.policy ファイルが含まれます。 ただし、ワークスペースが破壊されると、改訂した EAR ファイルは失われます。
    12. デプロイメント・コードを生成するには、EAR ファイルを右マウス・ボタン・クリックして、「Generate Deployment Code」をクリックします。
  3. 既存のインストール済みアプリケーションがあれば、それを更新します。 ポリシー・ツールを使用して was.policy ファイルを変更します。詳しくは、PolicyTool を使用した Java 2 セキュリティー用のポリシー・ファイルの編集を参照してください。[z/OS]
    1. ポリシー・ファイルを抽出します。コマンド・プロンプトで以下のコマンドを入力します。
      wsadmin> set obj [$AdminConfig extract profiles/profile_name/cells/cell_name
      /application/ear_file_name/deployments/application_name
      /META_INF/was.policy c:/temp/test/was.policy]

      上記の 3 行は、1 行に続けて 入力してください。表示の都合上このようになっているだけです。

    2. ポリシー・ツールを使用して、抽出された was.policy ファイルを編集します。詳しくは、PolicyTool を使用した Java 2 セキュリティー用のポリシー・ファイルの編集を参照してください。
    3. ポリシー・ファイルにチェックインします。コマンド・プロンプトで次のように入力します。
      wsadmin> $AdminConfig checkin profiles/profile_name/cells/cell_name/application/
      ear_file_name/deployments/application_name/META_INF/was.policy 
      c:/temp/test/was.policy $obj

      上記の 3 行は、1 行に続けて 入力してください。表示の都合上このようになっているだけです。

タスクの結果

更新された was.policy ファイルが、アプリケーションの再始動後、 アプリケーションに適用されます。

[IBM i][z/OS]
java.security.AccessControlException: access denied (java.io.FilePermission 
${was.install.root}/java/ext/mail.jar read)
[z/OS][IBM i]アプリケーションが、java.policy ファイル、server.policy ファイル、および app.policy で デフォルトとして定義されていない特定のリソースにアクセスする必要がある場合は、そのアプリケーションの was.policy ファイルを 削除してください。 アクセス権の欠落という症状は、例外 java.security.AccessControlException で示されます。不足している アクセス権は、例外データにリストされます。
注: 以下の例でいくつかの行に分けられているのは、 表示の都合上そうなっているだけです。実際には、1 行でアクセス権を入力してください。
[IBM i][z/OS]
java.security.AccessControlException: access denied (java.io.FilePermission 
${was.install.root}/java/ext/mail.jar read)

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

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

アクセス権を追加するかどうかを判断するには、 『Java 2 セキュリティーのアクセス制御例外』を参照してください。

次のタスク

更新された app.policy ファイルを有効にするために、すべてのアプリケーションを再始動します。

トピックのタイプを示すアイコン タスク・トピック



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