Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

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

ここでは,J2SE標準のロギング機能をユーザのアプリケーションで直接実装して利用するために必要なセキュリティポリシーの設定について説明します。セキュリティポリシーは,server.policy(J2EEサーバ用セキュリティポリシーファイル)またはweb.policy(SecurityManager定義ファイル)に定義します。

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

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

フィルタやフォーマッタをリフレクションで作成する場合
 
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
 
それぞれのHandlerクラスは,LogManagerからプロパティを取得して,実行時にReflection機能を使ってFormatterクラスまたはFilterクラスを生成します。このため,Reflectionに関する権限が必要です。

LogManagerのプロパティを設定する場合
 
permission java.util.PropertyPermission "*", "read, write";
 
LogManagerがログ出力用の設定を読み書き(Propertyのset**)するための権限が必要です。

J2SE標準のファイルハンドラを使用する場合
 
permission java.io.FilePermission "<<ALL FILES>>", "read, write";
 
ログを実際にファイルに出力するための権限が必要です。ログのファイルへの出力には,読み取り権限だけではなく,書き込み権限も必要です。

JavaロギングAPIのLogger.addHandlerメソッドなどを使用してログ体系を変更する場合
 
permission java.util.logging.LoggingPermission "control";
 
JavaロギングAPIを使用するためのセキュリティパーミッションの指定が必要です。

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";
 
   //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サーバ用セキュリティポリシーファイル)の定義方法については,マニュアル「Cosminexus リファレンス 定義編」を参照してください。