アプリケーション開発用のシステム・リソースおよび API (Java 2 セキュリティー) の保護
Java™ 2 セキュリティーは、非常に汎用性の高いプログラミング・モデルで、アプリケーション開発の広範囲に多大な影響を与えます。
始める前に
Java 2 セキュリティーは Java 2 Platform, Enterprise Edition (Java EE) のロール・ベースのセキュリティーと直交しているため、管理セキュリティーとは別個に使用不可または使用可能にすることができます。
ただし、Java 2 許可は、Java EE のロール・ベースの許可に、アクセス制御保護の追加のレベルを提供しています。 特に、システム・リソースおよびアプリケーション・プログラミング・インターフェース (API) の保護に対応しています。 管理者は、Java 2 セキュリティーを使用不可にした場合のリスクと利点を比較検討する必要があります。
- アプリケーションが必ず Java 2 セキュリティー・プログラミング・モデルを使用して開発されるようにしてください。 開発者は、アプリケーション内で使用される API が Java 2 セキュリティーによって保護されるかどうかを把握しておく必要があります。 使用される API のための必要なアクセス権がポリシー・ファイル was.policy 内に宣言されていることは非常に重要であり、そうでない場合、Java 2 セキュリティーが使用可能にされるとアプリケーションは実行に失敗します。開発者は、Java 2 セキュリティーで保護されている Development Kit API の Web サイトを参照することができます。この Web サイトを参照するには、セキュリティー: 学習用リソースのトピックのプログラミング・モデルおよび決定のセクションを参照してください。
- 前のリリースからマイグレーションされたアプリケーションに、必要なアクセス権が与えられていることを確認してください。
Java 2 セキュリティーは、前の WebSphere® Application Server リリースではサポートされていないか、あるいは部分的にしかサポートされていないため、バージョン 5 より前に開発されたアプリケーションは、ほとんどの場合 Java 2 セキュリティー・プログラミング・モデルを使用していません。そのアプリケーションに必要なアクセス権をすべて検出するのは、容易ではありません。
以下のアクティビティーを実行すると、アプリケーションに必要な追加のアクセス権を判別できます。
- コードの検討およびコードの検査
- アプリケーション資料の検討
- 実動前の環境で Java 2 セキュリティーが使用可能になっているマイグレーション済みエンタープライズ・アプリケーションのサンドボックス・テスト。WebSphere Java 2 セキュリティー・マネージャーでトレースを使用可能にすると、アプリケーション・ポリシー・ファイルに不足しているアクセス権を判別するのに役立ちます。 トレースの指定は、com.ibm.ws.security.core.SecurityManager=all=enabled です。
- com.ibm.websphere.java2secman.norethrow システム・プロパティーを使用して、デバッグを補助します。
このプロパティーは、
実稼働環境では使用しないでください。
Java 2 セキュリティーを参照してください。
アプリケーションのデフォルトのアクセス権セットは、J2EE 1.3 仕様で定義された、推奨されるアクセス権セットです。
このデフォルトは、全ユーザーにアクセス権を認可する Development Kit ポリシー・ファイル (JAVA_HOME/jre/lib/security/java.policy) に定義されているアクセス権を持つ app_server_root/profiles/profile_name/config/cells/cell_name/nodes/node_name/app.policy ポリシー・ファイルで宣言されています。ただし、アプリケーションでは、profiles/profile_name/config/cells/cell_name/filter.policy ファイルで宣言されるアクセス権は拒否されます。
filter.policy ファイルで宣言されている、アプリケーションに対するアクセス権は、アクセス権の検証中に、フィルター操作により除外されます。
アプリケーションのデフォルトのアクセス権セットは、J2EE 1.3 仕様で定義された、推奨されるアクセス権セットです。
このデフォルトは、全ユーザーにアクセス権を認可する Development Kit ポリシー・ファイルに定義されているアクセス権を持つ profile_root/config/cells/cell_name/nodes/node_name/app.policy ポリシー・ファイルで宣言されています。
java.policy ファイルは、そのプロファイルで使用可能な Java 仮想マシン (JVM) に応じて異なる java_home ディレクトリーに配置されます。
どの Java 仮想マシンでも、java.policy ファイルがシステム全体で使用されます。
サーバーで java.policy ファイルを編集しないでください。アプリケーションでは、profile_root/config/cells/cell_name/filter.policy ファイルで宣言されるアクセス権は拒否されます。filter.policy ファイルで宣言されている、アプリケーションに対するアクセス権は、アクセス権の検証中に、フィルター操作により除外されます。
![[IBM i]](../images/iseries.gif)
- QShell を入力します。
- cd to profile_root/bin
- 以下のコマンドを実行します。
wsadmin -conntype NONE -c '$AdminTask showVariables {-scope Node=myNode -variableName JAVA_HOME}'
アプリケーションに必要なアクセス権を was.policy ファイルに定義し、その was.policy ファイルを YOURAPP.ear/META-INF/was.policy としてアプリケーション・エンタープライズ・アーカイブ (EAR) ファイルに組み込みます。詳しくは、Java 2 セキュリティー・ポリシー・ファイルの構成を参照してください。
以下のステップは、WebSphere Application Server Network Deployment において、セル・レベルで Java 2 セキュリティーを実施する方法について説明しています。
手順
- 「セキュリティー」>「グローバル・セキュリティー」とクリックします。 「グローバル・セキュリティー」パネルが表示されます。
- 「Java 2 セキュリティーを使用してアプリケーションのアクセスをローカル・リソースに制限する」オプションを選択します。
- 「OK」または「適用」をクリックします。
- 「保存」をクリックして、変更を保存します。
- 変更を有効にするには、サーバーを再始動してください。
タスクの結果
- システム・リソースの保護を使用可能にします。例えば、ソケット接続のオープンまたは listen 時、オペレーティング・システムのファイル・システムの読み取りまたは書き込み時、 Java 仮想マシンのシステム・プロパティーの読み取りまたは書き込み時などです。
- アプリケーション・コードが破壊 API を呼び出さないようにする場合。例えば、System.exit メソッドを呼び出すと、アプリケーション・サーバーがダウンします。
- アプリケーション・コードが、特権情報 (パスワード) を取得したり、あるいは追加特権を取得する (サーバー・クレデンシャルを取得する) のを防ぐ場合。
次のタスク
- 「サーバー」>「アプリケーション・サーバー」>「server_name」をクリックします。
- 「セキュリティー」の下の「サーバー・セキュリティー」をクリックします。
- 「Security settings for this server override cell settings」オプションを選択します。
- 「Java 2 セキュリティーを使用してアプリケーションのアクセスをローカル・リソースに制限する」オプションを選択します。
- 「OK」または「適用」をクリックします。
- 「保存」をクリックして、変更を保存します。
- 変更を有効にするには、サーバーを再始動してください。
詳しくは、セキュリティー問題判別ガイドを参照してください。