WebLogic Security プログラマーズ ガイド
|
|
WebLogic Server は、URL (Web)、エンタープライズ JavaBean (EJB)、およびコネクタのコンポーネントを保護する J2EE セキュリティをサポートしています。さらに、WebLogic Server では、デプロイメント記述子を使って追加のセキュリティ ポリシーを指定するコネクタ モデルが、URL および EJB のコンポーネントに拡張されています。
注意 : Connector 1.0 仕様 (11.2 節を参照) と同じように、J2EE では異なるアプリケーション タイプ (J2EE 1.3 仕様 6.2.2 節を参照) の Java 2 セキュリティのデフォルト パーミッションに対する要件が規定されています。これらの仕様は、http://java.sun.com/j2ee/download.html#platformspec で参照できます。
さらに、J2EE 仕様では、デプロイヤがこれらのセキュリティ ポリシーを追加できることが示唆されています。URL および EJB コンポーネントの場合、これはデプロイメント記述子のコメントを通して行われますが、仕様では「この仕様の将来のバージョンでは、アプリケーション コンポーネントに対するデプロイメント記述子の中でこれらのセキュリティ要件を指定することが認められる」と記されています。コネクタ仕様では、すでに次の例のように <security-permission> タグを使って追加セキュリティ ポリシーを指定するデプロイメント記述子に対応しています (コード リスト 7-1 を参照)。
コード リスト 7-1security-permission タグのサンプル
<security-permission>
<description> Optional explanation goes here </description>
<security-permission-spec>
<!--http://java.sun.com/j2se/1.3/docs/guide/security/PolicyFiles.html#FileSyntaxの構文にしたがって、単一の grant 文をここに記述する。このとき、「codebase」および「signedBy」句は使用しない。次に例を示す-->
grant {
permission java.net.SocketPermission "*", "resolve";
};
</security-permission-spec>
</security-permission>
リソース アダプタ用の rar.xml ファイルでの <security-permission> タグのサポートに加えて、WebLogic Server では weblogic.xml ファイルと weblogic-ejb-jar.xml ファイルに <security-permission> タグを追加しています。これらは、コネクタ モデルを他の 2 つのアプリケーション タイプ (Web アプリケーションと EJB) に拡張し、すべてのコンポーネント タイプでセキュリティ ポリシーへのインタフェースを統一すると共に、将来の J2EE 仕様の変更に備えるためのものです。
Java セキュリティ マネージャと WebLogic Server を一緒に使用すると、Java 仮想マシン (JVM) 内で実行されているリソースのセキュリティを強化できます。Java セキュリティ マネージャは、任意のセキュリティ手順です。以下の節では、WebLogic Server で Java セキュリティ マネージャを使用する方法について説明します。
Java セキュリティ マネージャの詳細については、http://java.sun.com/j2se/1.4/docs/guide/security/index.html の Java セキュリティに関する Web ページを参照してください。
Java 2 (JDK 1.2 以降) 環境で WebLogic Server を実行する場合、WebLogic Server は Java 2 の Java セキュリティ マネージャを使用して、信頼性のないコードが Java セキュリティ ポリシー ファイルによって制限されているアクションを実行しないようにできます。
Java 仮想マシン (JVM) には、Java セキュリティ ポリシー ファイルでコードに制約を設定するセキュリティ メカニズムが組み込まれています。Java セキュリティ マネージャは、Java セキュリティ ポリシー ファイルを使用して一連のパーミッションをクラスに強制的に付与します。これらのパーミッションを使用すると、JVM のインスタンスで実行される指定されたクラスに特定の実行時処理を許可するかどうかを設定できます。多くの場合、脅威モデルでは悪意あるコードが JVM で実行されることを想定していないため、Java セキュリティ マネージャは必要ありません。しかし、信頼されていないサードパーティが WebLogic Server を使用し、信頼されていないクラスが実行される場合、Java セキュリティ マネージャが役立ちます。
WebLogic Server で Java セキュリティ マネージャを使用するには、WebLogic Server の起動時に -Djava.security.policy 引数と -Djava.security.manager 引数を指定します。-Djava.security.policy 引数は、Java 2 セキュリティ ポリシーを格納するファイル名を、相対パス名または絶対パス名で指定します。
WebLogic Server には、編集および使用可能なサンプル Java セキュリティ ポリシー ファイルが用意されています。そのファイルは、WL_HOME\server\lib\weblogic.policy にあります。
セキュリティ ポリシー ファイルを指定しないで Java セキュリティ マネージャを有効にする場合、Java セキュリティ マネージャでは、$JAVA_HOME\jre\lib\security ディレクトリの java.policy ファイルに定義されるデフォルトのセキュリティ ポリシーを使用します。
Java セキュリティ マネージャのセキュリティ ポリシーは、以下のいずれかの方法で定義します。
WebLogic Server デプロイメントで Java セキュリティ マネージャのセキュリティ ポリシー ファイルを使用するには、WebLogic Server の起動時に Java セキュリティ マネージャに weblogic.policy ファイルの場所を指定する必要があります。これを行うには、サーバの起動に使用する Java コマンドラインで次の引数を設定します。
java.security.manager ‐ JVM に Java セキュリティ ポリシー ファイルを使用するよう指示します。java.security.policy ‐ JVM に使用する Java セキュリティ ポリシー ファイルの場所を指示します。この引数は、Java セキュリティ ポリシーの完全修飾名 (この場合は weblogic.policy) です。java...-Djava.security.manager \
-Djava.security.policy==c:\weblogic\weblogic.policy
注意 : java.security.policy 引数を指定するときには、Java セキュリティ マネージャによって weblogic.policy ファイルだけが使用されるよう、= の代わりに == を使用します。== を使用すると、weblogic.policy ファイルはデフォルトのセキュリティ ポリシーをオーバーライドします。単一の等号記号 (=) を使用した場合、weblogic.policy ファイルが既存のセキュリティ ポリシーに付加されます。
CLASSPATH に追加のディレクトリがある場合、または追加のディレクトリにアプリケーションをデプロイしている場合は、それらのディレクトリに対する特定のパーミッションを weblogic.policy ファイルに追加します。
weblogic.policy ファイルを使用する際には、次のような注意事項を考慮することをお勧めします。
警告 : Java セキュリティ マネージャは、管理サーバと管理対象サーバの起動時に部分的に無効にされます。起動シーケンス中は、現在の Java セキュリティ マネージャが無効化され、checkRead() メソッドが無効化された Java セキュリティ マネージャに置き換えられます。このメソッドを無効化した場合、起動シーケンスのパフォーマンスは飛躍的に向上しますが、セキュリティは最低レベルに下がります。WebLogic Server のスタートアップ クラスは、この部分的に無効にされた Java セキュリティ マネージャと一緒に実行されます。このため、スタートアップ クラスを十分にチェックして、セキュリティ (ファイルの読み取りなど) を検討する必要があります。
Java セキュリティ マネージャの詳細については、Web 上の http://java.sun.com/j2se/1.4.1/docs/api/index.html にある java.lang.SecurityManager クラスに関する Javadoc を参照してください。
サーブレット、EJB、および J2EE コネクタ リソース アダプタのデフォルト セキュリティ ポリシーを、Java セキュリティ ポリシー ファイルで設定します。サーブレット、EJB、およびリソース アダプタのデフォルト セキュリティ ポリシーは、以下のコードベースで Java セキュリティ ポリシーに定義します。
"file:/weblogic/application/defaults/Web""file:/weblogic/application/defaults/EJB""file:/weblogic/application/defaults/Connectors"注意 : これらのセキュリティ ポリシーは、WebLogic Server の特定のインスタンスにデプロイされるすべてのサーブレット、EJB、およびリソース アダプタに適用されます。
特定のサーブレット、EJB、またはリソース アダプタのセキュリティ ポリシーを設定するには、セキュリティ ポリシーをそれらのデプロイメント記述子に追加します。デプロイメント記述子は、以下のファイルに定義されます。
注意 : リソース アダプタのセキュリティ ポリシーは J2EE 仕様に準拠し、サーブレットおよび EJB のセキュリティ ポリシーは WebLogic Server の J2EE 仕様拡張に準拠します。
コード リスト 7-2 は、セキュリティ ポリシーをデプロイメント記述子に追加するための構文です。
<security-permission>
<description>
Allow getting the J2EEJ2SETest4 property
</description>
<security-permission-spec>
grant {
permission java.util.PropertyPermission "welcome.J2EEJ2SETest4","read";
};
</security-permission-spec>
</security-permission>
注意 : <security-permission-spec> タグは、weblogic-application.xml ファイルに追加できません。このタグを使用できるのは、weblogic-ejb-jar.xml、 rar.xml、または weblogic.xml ファイルの中だけです。また、<security-permission-spec> 属性では変数はサポートされていません。
|
|
|