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 リファレンス 定義編」を参照してください。