BEA ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Server > WebLogic Security プログラマーズ ガイド > Java セキュリティを使用しての WebLogic リソースの保護 |
WebLogic Security プログラマーズ ガイド
|
Java セキュリティを使用しての WebLogic リソースの保護
J2EE セキュリティを使用しての WebLogic リソースの保護
WebLogic Server では、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-1 security-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 の構文に準拠する、「codebase」句や「signedBy」句を含まない単一の grant 文をここに記述します。次に例を示します。
-->
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 リソースの保護
Java セキュリティ マネージャと WebLogic Server を一緒に使用すると、Java 仮想マシン (JVM) 内で実行されているリソースのセキュリティを強化できます。Java セキュリティ マネージャは、任意のセキュリティ手順です。 以下の節では、WebLogic Server で Java セキュリティ マネージャを使用する方法について説明します。
Java セキュリティ マネージャの詳細については、http://java.sun.com/j2se/1.4/docs/guide/security/index.html の Java Security ページを参照してください。
Java 2 (SDK 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...-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.3/docs/api/index.html にある java.lang.SecurityManager クラスに関する Javadoc を参照してください。
サーブレット、EJB、および J2EE コネクタ リソース アダプタのデフォルト セキュリティ ポリシーを、Java セキュリティ ポリシー ファイルで設定します。 サーブレット、EJB、およびリソース アダプタのデフォルト セキュリティ ポリシーは、以下のコードベースで Java セキュリティ ポリシー ファイルに定義します。
注意: これらのセキュリティ ポリシーは、WebLogic Server の特定のインスタンスにデプロイされるすべてのサーブレット、EJB、およびリソース アダプタに適用されます。
特定のサーブレット、EJB、またはリソース アダプタのセキュリティ ポリシーを設定するには、セキュリティ ポリシーをそれらのデプロイメント記述子に追加します。デプロイメント記述子は、以下のファイルに定義されます。
注意: リソース アダプタのセキュリティ ポリシーは J2EE 仕様に準拠し、サーブレットおよび EJB のセキュリティ ポリシーは WebLogic Server の J2EE 仕様拡張に準拠します。
リスト7-2 はセキュリティ ポリシーをデプロイメント記述子に追加するための構文です。
<security-permission>
<description>
//foo 操作を保護
</description>
<security-permission-spec>
// grant 文
grant {
permission java.lang.RuntimePermission "foo";
}
</security-permission-spec>
</security-permission>
注意: 現時点では、<security-permission-spec> タグは weblogic-application.xml ファイルに追加できません。このタグを使用できるのは、weblogic-ejb-jar.xml、rar.xml、および weblogic.xml ファイルの中だけです。また、<security-permission-spec> 属性では変数はサポートされていません。
レコーディング セキュリティ マネージャ ユーティリティの使い方
レコーディング セキュリティ マネージャ ユーティリティを使用すると、WebLogic Server の起動時または動作中に発生するパーミッションの問題を検出できます。このユーティリティで出力されるパーミッションを Java セキュリティ ポリシー ファイルに追加して、発見されたパーミッションの問題を解決できます。 レコーディング セキュリティ マネージャは BEA dev2dev Online で入手できます。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |