6.8 アプリケーションの監査ログを出力するための実装

アプリケーションサーバでは,J2EEアプリケーションまたはバッチアプリケーションに実装できる監査ログ出力用のAPIを提供しています。監査ログ出力用のAPIを使用することで,アプリケーションに対する操作,およびアプリケーションによる処理が実行されたタイミングで,操作および処理の履歴を監査ログに出力させることができます。ここでは,監査ログ出力用のAPIの実装例と実装時の注意事項について説明します。

なお,監査ログ出力用のAPIの詳細については,マニュアル「Cosminexus アプリケーションサーバ リファレンス API編」の「11. 監査ログ出力で使用するAPI」を参照してください。

<この節の構成>
(1) 監査ログ出力用のAPIの実装例
(2) 監査ログ出力用のAPI実装時の注意事項

(1) 監査ログ出力用のAPIの実装例

監査ログ出力用のAPIの実装例を次に示します。

if (UserAuditLogger.isEnabled())
{
   try
   {
       UserAuditLogger logger = UserAuditLogger.getLogger("UserComponent");
       if (logger.isLoggable("Message1"))
       {
           AuditLogRecord record = new AuditLogRecord();
           record.setMessageId("Message1");
           record.setCategory(AuditLogRecord.CATEGORY_CONFIGURATION_ACCESS);
           record.setResult(AuditLogRecord.RESULT_SUCCESS);
           record.setObjectInfo("Object");
           record.setOperation(AuditLogRecord.OPERATION_REFER);
           record.setMessage("Message");
           logger.log(record);
       }
   }
   catch (AuditLogException e)
   {
       // 監査ログの出力に失敗したときの処理
   }
}

このように実装した場合の監査ログの出力例を次に示します。なお,この例はWindowsの場合です。

CALFHM 1.0, seqnum=2, msgid=Message1, date=2007-05-31T19:12:53.788+09:00, progid=Cosminexus, compid=UAP_UserComponent, pid=3984, ocp:host=hostname, ctgry=ConfigurationAccess, result=Success, subj:euid=username, obj="Object", op="Refer", loc="10.209.15.130/1234/0x0000000000000001", msg="Message"

(2) 監査ログ出力用のAPI実装時の注意事項

監査ログ出力用のAPIを実装するときの注意事項について説明します。

システムの管理・運用に関する情報について
システム管理や運用に関する情報のうち,監査を実行するユーザなどに参照させてはいけない情報を監査ログに出力しないようにしてください。監査ログに出力してはいけない情報の例を次に示します。
  • データベースにアクセスするユーザのユーザ名,およびパスワード
  • 監査ログファイルや監査ログの設定ファイルに対して書き込み権限を所有するユーザのユーザ名,およびパスワード
複数マシン間での時刻の設定について
複数のマシンにわたって監査ログを出力する場合は,それぞれのマシンに同じ時刻を設定しておいてください。
監査ログに出力する項目について
J2EEアプリケーションまたはバッチアプリケーションが出力する監査ログには,次の項目が必ず出力されるように実装してください。
  • メッセージID
  • 発生コンポーネント名
  • 監査事象の種別
  • 監査事象の結果