データベース設計・開発

監査ログ設計 かんさろぐせっけい

監査ログ変更履歴イベントログトレーサビリティコンプライアンスWho/When/What
監査ログって何のために記録するの?

簡単に言うとこんな感じ!

監査ログは「誰が・いつ・何を・どう変えたか」の全記録だよ!「このデータは誰が消したの?」「いつ価格が変わったの?」を後から調べられるようにするための台帳。コンプライアンスや事故調査でも欠かせない仕組みなんだ。


監査ログ設計とは

監査ログ(Audit Log / 監査証跡) とは、システム上のデータ変更・アクセス・操作を「誰が・いつ・何を・どのように変更したか」の形で記録したログです。

金融・医療・個人情報を扱うシステムでは法令上の要件として定められることも多く、内部統制・セキュリティインシデント調査・コンプライアンス対応において不可欠な設計要素です。


監査ログの基本設計

テーブル設計例

CREATE TABLE audit_logs (
    id          BIGINT PRIMARY KEY AUTO_INCREMENT,
    table_name  VARCHAR(100) NOT NULL,    -- 変更対象テーブル
    record_id   BIGINT       NOT NULL,    -- 変更対象レコードID
    action      VARCHAR(20)  NOT NULL,    -- INSERT/UPDATE/DELETE
    old_values  JSON,                     -- 変更前の値
    new_values  JSON,                     -- 変更後の値
    changed_by  BIGINT       NOT NULL,    -- 操作者のユーザーID
    changed_at  TIMESTAMP    NOT NULL,    -- 操作日時
    ip_address  VARCHAR(45),             -- 操作元IPアドレス
    user_agent  TEXT                     -- ブラウザ情報
);

監査ログの実装方式

方式内容メリットデメリット
アプリケーション層ビジネスロジックで記録柔軟性が高い記録漏れのリスク
DBトリガーテーブルトリガーで自動記録漏れなく記録DBに依存・パフォーマンス影響
CDC(変更データキャプチャ)DBのバイナリログを解析非侵入的・高信頼インフラの追加が必要

歴史と背景

  • SOX法(2002年):米国の企業会計改革法で内部統制としてのログ保存が義務化
  • GDPR(2018年):個人データの処理記録義務により監査ログの重要性が増す
  • 日本の個人情報保護法改正(2022年):アクセスログの整備が実質的な要件に

関連用語