intra-mart Accel Platform ログ仕様書 第12版 2019-12-01

セキュリティログ

セキュリティログには、認証・認可の結果などのセキュリティに関連する情報が出力されます。
このログとリクエストログを合わせて解析することにより、不正アクセスを見つけ出すための情報を得ることも可能です。
モジュール コアモジュール
設定場所 %CONTEXT_PATH%/WEB-INF/conf/log/im_logger_security.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<included>

  <!--
     - SECURITY_LOG
    -->
  <appender name="SECURITY_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${im.log}/platform/security.log</file>
    <append>true</append>

    <!--
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>
        ${im.log}/platform/security-%d{yyyy-MM-dd}.log
      </fileNamePattern>
    </rollingPolicy>
    -->

    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${im.log}/platform/security%i.log</fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>5</maxIndex>
    </rollingPolicy>

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>10MB</maxFileSize>
    </triggeringPolicy>

    <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
      <layout class="jp.co.intra_mart.common.platform.log.layout.OutputStackTracePatternLayout">
        <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}]  [%thread]  %X{log.report.sequence}  %-5level  %logger{255}  %X{tenant.id}  %X{log.id}  -  %X{security.id.session}  %X{security.id.account}  %X{security.id.usertype}  [%X{log.message.code}]  %msg  %X{request.id}%nopex%n</pattern>

        <enableOutputStackTrace>true</enableOutputStackTrace>
        <stackTraceDir>${im.log}/platform/exception/</stackTraceDir>
        <stackTraceFilename>'exception_'yyyy-MM-dd_HH-mm-ss'_%logId.log'</stackTraceFilename>
      </layout>
    </encoder>
  </appender>

  <logger name="SECURITY_LOG" additivity="false">
    <level value="warn" />
    <appender-ref ref="STDOUT" />
    <appender-ref ref="SECURITY_FILE" />
  </logger>

</included>

ログレベルごとの出力内容

ログレベルごとのセキュリティログの出力内容を紹介します。

WARNレベル

このログレベルのセキュリティログが短時間で連続して出力されている場合、サーバに対して何らかの攻撃が行われている可能性があります。
WARNレベルにて出力される内容は以下の通りです。
ケース メッセージ例
認証に失敗した場合 ログインに失敗しました。ログインパスワードが間違っています。
認証確認に失敗した場合 認証確認に失敗しました。
権限の無いページへのアクセスした場合 アクセスする権限がありません。
SecureToken機能にてセキュアトークンが不正である場合 セキュアトークンが不正です。
アプリケーションライセンスを保持していない利用者がライセンスが必要な機能にアクセスした場合 アプリケーション「(プロダクトID)」のライセンスが設定されていないため、アクセスできません。
2段階認証の検証に失敗した場合 2段階認証に失敗しました。
管理者がユーザの2段階認証を必須にしており、ユーザのログインと同時に行う2段階認証設定の有効化に失敗した場合 2段階認証の設定に失敗しました。
管理者がユーザの2段階認証を必須にしており、ユーザのログインと同時に行う2段階認証設定の有効化のための確認コードの検証に失敗した場合 多要素認証の設定に失敗しました。

INFOレベル

INFOレベルにて出力される内容は以下の通りです。
ケース メッセージ例
認証に成功した場合 ログインに成功しました。
認証確認に成功した場合 認証確認に成功しました。

DEBUGレベル

DEBUGレベルにて出力される内容は以下の通りです。
ケース メッセージ例
ページへのアクセスに成功(権限があるページにアクセス)した場合 アクセスに成功しました。
SecureToken機能にてセキュアトークンのチェックに問題が無い場合 セキュアトークンのチェックに成功しました。
アプリケーションライセンスを保持している利用者がライセンスが必要な機能にアクセスした場合 アプリケーション「(プロダクトID)」のライセンスチェックに成功しました。
2段階認証設定が行われているユーザに2段階認証を要求した場合 ユーザに2段階認証を要求します。
管理者がユーザの2段階認証を必須にしており、ユーザのログインと同時に行う2段階認証設定を要求した場合 ユーザに2段階認証の設定を要求します。

標準出力設定

ログレベル(初期値) WARN
出力先(初期値)
コンソール
ファイル - ${im.log}/platform/security.log

出力パターン

利用可能なパターン文字列

セキュリティログで利用可能なパターン文字列は以下の通りです。
パターン文字列については「パターン文字列」を参照してください。
フォーマット文字列 設定有無(初期値) 説明
%d 出力日時
%thread スレッド名
%level ログレベル
%logger ロガー名
%msg
%X
利用可能なキーは「利用可能なMDCキー」を参照してください。

利用可能なMDCキー

セキュリティログで利用可能なMDCのキーは以下の通りです。
MDCについては「MDC」を参照してください。
MDCキー 設定有無(初期値) 説明
log.thread.group × スレッドグループ
log.report.sequence ログ出力順序番号
log.id ログ ID
security.id.session セッション ID
security.id.account
セキュリティに関する操作を行ったユーザコード
例として、ログイン画面でユーザコードに login_user と入力し、ログインに失敗した場合は、 login_user が取得されます。
security.id.usertype
セキュリティに関する操作を行った際の、操作に関わるユーザ種別
administrator : システム管理者
platform : ジョブなどのバックグラウンド
user : 一般ユーザ
例として、システム管理者のログインに失敗した場合は、administrator が取得されます。
log.message.code ログメッセージコード
request.id リクエスト ID
tenant.id
ログ出力時のアカウントコンテキストのテナント ID
intra-mart Accel Platform 2014 Spring(Granada) 以降、利用可能です。

コラム

アカウントコンテキストの詳細については、「アカウントコンテキストのJavaDoc」を参照してください。