8.8.2 セキュリティポリシーの設定
ここでは,セキュリティポリシーの設定について説明します。
アプリケーションのソースプログラム上で,J2SE1.4仕様のLoggerクラスの構成を変更したり,FileHandlerクラスを作成したりして,J2SE標準のロギング機能を直接実装する場合,セキュリティポリシーを設定する必要があります。セキュリティポリシーは,server.policy(J2EEサーバ用セキュリティポリシーファイル)またはweb.policy(SecurityManager定義ファイル)に定義します。
なお,server.policyにセキュリティポリシーを定義する場合は,Smart Composer機能のコマンドでシステムを構築したあとに設定してください。
簡易構築定義ファイルのパラメタを基に構築されたロガーに対して出力指定をする場合,セキュリティポリシーを設定する必要はありません。セキュリティポリシーの設定が必要なのは,次のような場合です。
-
ユーザのアプリケーションのソースコード上でJ2SE標準のファイルハンドラを作成する場合
-
LoggerクラスのaddHandlerメソッドを呼び出してロガーの構成を変更する場合
この場合には,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サーバ用セキュリティポリシーファイル)」を参照してください。