Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 拡張編


8.8.2 セキュリティポリシーの設定

ここでは,セキュリティポリシーの設定について説明します。

アプリケーションのソースプログラム上で,J2SE1.4仕様のLoggerクラスの構成を変更したり,FileHandlerクラスを作成したりして,J2SE標準のロギング機能を直接実装する場合,セキュリティポリシーを設定する必要があります。セキュリティポリシーは,server.policy(J2EEサーバ用セキュリティポリシーファイル)またはweb.policy(SecurityManager定義ファイル)に定義します。

なお,server.policyにセキュリティポリシーを定義する場合は,Smart Composer機能のコマンドでシステムを構築したあとに設定してください。

簡易構築定義ファイルのパラメタを基に構築されたロガーに対して出力指定をする場合,セキュリティポリシーを設定する必要はありません。セキュリティポリシーの設定が必要なのは,次のような場合です。

この場合には,JavaロギングAPI操作用のセキュリティポリシーが必要になります。必要に応じて次のセキュリティパーミッションを指定してください。

server.policyの設定内容を次に示します。

〈この項の構成〉

(1) フィルタやフォーマッタをリフレクションで作成する場合

FilterクラスやFormatterクラスなどをリフレクションで作成する場合は,次に示す行を追加します。

permission java.lang.reflect.ReflectPermission "suppressAccessChecks";

それぞれのHandlerクラスは,ログマネジャ(LogManager)からプロパティを取得して,実行時にReflection機能を使ってFormatterクラスまたはFilterクラスを生成します。このため,Reflectionに関する権限が必要です。

(2) ログマネジャ(LogManager)のプロパティを設定する場合

ログマネジャのプロパティを設定する場合は,次に示す行を追加します。

permission java.util.PropertyPermission "*", "read, write";

ログマネジャがログ出力用のプロパティの値を読み込んだり,書き込んだりするための権限(Propertyのset**)が必要となります。

(3) J2SE標準のファイルハンドラを使用する場合(File出力を行うクラス(FileHandler,CJMessageFileHandler)を使用する場合)

File出力を行うクラス(FileHandler,CJMessageFileHandler)を使用する場合は,次に示す行を追加します。

permission java.io.FilePermission "<<ALL FILES>>", "read, write";

ログを実際にファイルに出力するための権限が必要です。ログのファイルへの出力には,読み取り権限だけではなく,書き込み権限も必要です。

(4) JavaロギングAPIのLogger.addHandlerメソッドなどを使用してログ体系を変更する場合

J2SE1.4仕様のロギングAPIを使用する場合は,次に示す行を追加します。

permission java.util.logging.LoggingPermission "control";

JavaロギングAPIを使用するためのセキュリティパーミッションの指定が必要です。この値を指定しないと,ロギングAPIが使用できません。

(5) 設定例

J2EEアプリケーションのサーブレットから,JavaロギングAPIのLogger.addHandlerメソッドなどを使用してログ体系を変更する場合のserver.policy(J2EEサーバ用セキュリティポリシーファイル)の設定例を次に示します。

設定例
//
// Grant permissions to JSP/Servlet
// 
grant codeBase "file:${ejbserver.http.root}/web/${ejbserver.serverName}/-" {
   permission java.lang.RuntimePermission "loadLibrary.*";
   permission java.lang.RuntimePermission "queuePrintJob";
   permission java.net.SocketPermission "*", "connect";
   permission java.io.FilePermission "<<ALL FILES>>", "read, write";
   permission java.util.PropertyPermission "*", "read";
   permission javax.security.auth.AuthPermission "getSubject";
   permission javax.security.auth.AuthPermission "createLoginContext.*";
 
   //For J2SE Logging Source
   permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
   permission java.util.PropertyPermission "*", "read, write";
   permission java.util.logging.LoggingPermission "control";
 
};

server.policy(J2EEサーバ用セキュリティポリシーファイル)の定義方法については,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「2.2.4 server.policy(J2EEサーバ用セキュリティポリシーファイル)」を参照してください。