Admin Audit Trail
コンプライアンス、説明責任、セキュリティの目的で、ウェブサイト内のすべてのコンテンツ管理および管理操作を追跡・記録する包括的なDrupal監査ログモジュールです。
admin_audit_trail
インストール
composer require 'drupal/admin_audit_trail:^1.0'
概要
Admin Audit Trailモジュールは、Drupal管理インターフェースおよびシステム操作を通じてユーザーが実行したイベントを自動的にログに記録します。すべてのログイベントは専用のデータベーステーブルに保存され、フィルタリング機能を備えた専用の監査証跡レポートページで閲覧できます。
このモジュールは、規制要件(HIPAA、GDPR、SOC 2など)に対応するコンプライアンス監査証跡の維持、コンテンツがいつどのように変更されたかの調査、セキュリティと説明責任のための管理操作のレビューを支援するよう設計されています。各ログエントリには、イベントタイプ、実行された操作、人間が読める説明、操作を実行したユーザー、タイムスタンプ、IPアドレス、操作が行われたページパスが記録されます。
このモジュールは、hookベースのAPIを通じてカスタムイベント追跡を簡単に追加できる拡張可能なアーキテクチャを備えています。Node、ユーザー、認証イベント、メニュー、Taxonomy、コメント、Media、ファイル、Block Content、Redirect、Workflow、Entityqueue、Paragraphs、Group、ユーザーロールなど、さまざまなEntityタイプを追跡するための14の専門サブモジュールが含まれています。
Features
- DrupalのEntity全体にわたるすべての作成、更新、削除(CUD)操作の包括的なログ記録
- /admin/reports/audit-trailにソート可能な列とページネーションを備えた専用の監査証跡レポートページ
- イベントタイプ、操作、ユーザー、Entity ID、IPアドレス、名前/マシン名、パス、説明キーワードによる高度なフィルタリング
- ユーザーアカウント、IPアドレス、タイムスタンプを含むすべてのログエントリでのユーザー識別
- Cronによる自動クリーンアップを伴う設定可能なログ保持期間(オプション:すべて、100、500、1,000、3,000、10,000、または100,000エントリ)
- 設定可能なデフォルト状態(展開または折りたたみ)を持つ折りたたみ可能なフィルターセクション
- カスタムイベントハンドラーを登録するためのhook_admin_audit_trail_handlers()による拡張可能なアーキテクチャ
- 特定のEntityタイプを追跡するための14の専門サブモジュールを標準搭載
- 設定不要 - サブモジュールは有効化後すぐにログ記録を開始
- 自動化スクリプトからのログ汚染を防ぐため、CLI操作は自動的に無視される
- ログエントリにはタイプ、操作、説明、ユーザー、タイムスタンプ、IPアドレス、パス、およびオプションの数値/文字参照が含まれる
Use Cases
規制コンプライアンス監査
HIPAA(医療)、GDPR(データ保護)、SOC 2(セキュリティ)、PCI-DSS(ペイメントカード業界)などの規制要件の対象となる組織は、Admin Audit Trailを使用してすべてのコンテンツ変更とユーザーアクティビティの包括的な監査ログを維持できます。コンプライアンス監査のために完全なレコードを保持するにはログ保持を「All」に設定し、監査中に特定のアクティビティを素早く特定するためにフィルタリング機能を使用します。
セキュリティインシデント調査
潜在的なセキュリティインシデントを調査する際、管理者はIPアドレス、ユーザー、または時間範囲で監査証跡をフィルタリングして疑わしいアクティビティを追跡できます。認証サブモジュールは、ログイン失敗試行、異常なログインパターン、または不正アクセス試行を特定するのに特に有用です。
コンテンツ変更追跡
コンテンツマネージャーとエディターは、監査証跡を使用して、誰がコンテンツに特定の変更を加えたか、変更がいつ発生したか、どのページが影響を受けたかを追跡できます。これは、編集ワークフローの管理、コンテンツの紛争解決、複数著者環境での説明責任の維持に役立ちます。
ユーザー管理の監視
サイト管理者は、新規登録、アカウント更新、削除、ロール割り当てを含むユーザーアカウント管理アクティビティを監視できます。ユーザーロールサブモジュールは、権限変更の詳細な追跡を提供し、潜在的な権限昇格や不正アクセス付与の特定に役立ちます。
メニューとサイト構造の変更
メニューの作成、メニューリンクの追加、更新、削除を含むサイトのナビゲーション構造へのすべての変更を追跡します。これにより、サイトの情報アーキテクチャがどのように進化するか、誰が構造的な変更を行うかの可視性を維持できます。
Mediaアセット管理
大規模なMediaライブラリを管理する組織は、画像、動画、ドキュメントがいつアップロード、変更、または削除されたかを追跡できます。これは、デジタルアセットの証拠保全を維持し、欠落または誤って変更されたMediaの調査に特に有用です。
ワークフロー状態遷移
コンテンツモデレーションを使用するサイトの場合、Workflowsサブモジュールはすべての状態遷移(例:ドラフト→レビュー、レビュー→公開)を追跡します。これにより、編集プロセスの完全な履歴が提供され、パブリッシングワークフローのボトルネックや問題を特定するのに役立ちます。
Tips
- 追跡が必要なサブモジュールのみを有効にする - これによりデータベースのオーバーヘッドが削減され、監査証跡が関連するアクティビティに集中します
- 高トラフィックサイトの場合、データベーステーブルが無制限に増大するのを防ぐために、適切なログ保持制限(例:10,000または100,000)を設定してください
- まずTypeフィルターを使用して結果を絞り込みます。Operationフィルターは選択されたタイプに基づいてエントリ数とともにオプションを動的に表示します
- URLを保存してフィルタリングされたビューをブックマーク - フィルターパラメーターはクエリ文字列に保持されます
- 監査担当者やセキュリティ担当者には「Access admin audit trail」権限を付与し、「Configure admin audit trail」は上級管理者のみに制限してください
- モジュールは自動化スクリプトやDrushコマンドからのログ汚染を防ぐため、CLI操作を自動的に無視します
- ログインアクティビティとログイン失敗試行のセキュリティ監視のために、すべてのサイトで認証サブモジュールを有効にすることを検討してください
Technical Details
Admin Pages 2
/admin/reports/audit-trail
すべてのログに記録された監査証跡イベントを表示および検索します。このページでは、タイムスタンプ、イベントタイプ、実行された操作、パス、説明、操作を実行したユーザー、IPアドレス、Entity ID、Entity名を含むすべての追跡イベントの包括的なテーブルが表示されます。テーブルは任意の列でソート可能で、多数のエントリをブラウズするためのページネーションが含まれています。
/admin/config/development/audit-trail/settings
フィルター表示設定やログ保持制限を含む、Admin Audit Trailモジュールのグローバル設定を構成します。
権限 2
Hooks 3
hook_admin_audit_trail_handlers
どのフォーム送信を追跡するか、およびその方法を定義するイベントログハンドラーを登録します。title、form_ids、form_ids_regexp、form_submit_callbackを含むハンドラー設定を持つ、イベントタイプをキーとした連想配列を返します。
hook_admin_audit_trail_log_alter
モジュールがログ配列をデータベースに保存する前に変更できるようにします。type、operation、description、ref_numeric、ref_charの値を変更するために使用できます。
hook_admin_audit_trail_handlers_alter
モジュールが登録済みのイベントハンドラーを変更できるようにします。他のモジュールによって定義されたハンドラーの変更、追加、削除に使用できます。
Troubleshooting 5
ベースのAdmin Audit Trailモジュールと適切なサブモジュールが有効になっていることを確認してください。ユーザーがログに記録されるアクションを実行する権限を持っているかどうかを確認してください。CLI操作(Drush、スクリプト)は意図的にログに記録されないことに注意してください。
/admin/config/development/audit-trail/settingsでログ保持制限を設定してください。適切な制限(例:10,000または100,000エントリ)を選択し、クリーンアップを実行するためにCronが定期的に実行されていることを確認してください。
ログのクリーンアップにはCronの実行が必要です。サイトでCronが設定され、実行されていることを確認してください。/admin/reports/statusのステータスレポートページで、Cronが最後に実行された時刻を確認してください。
/admin/config/development/audit-trail/settingsの「Filters Expanded」設定を調整して、デフォルトのフィルター表示動作を制御してください。
hook_admin_audit_trail_handlers()を実装してEntityタイプを登録するカスタムサブモジュールを作成し、Entityフック(insert/update/delete)を使用して適切なログデータでadmin_audit_trail_insert()を呼び出してください。
Security Notes 6
- 監査証跡エントリは、Cronで明示的にクリーンアップされない限り永続的です - ログ制限を設定する際はデータ保持ポリシーを考慮してください
- ログエントリにはIPアドレスが保存されており、GDPRでは個人データと見なされる可能性があります - プライバシーポリシーにこれを反映させてください
- 「Configure admin audit trail」権限は、この権限を持つユーザーがログ保持を削減し、自分のアクティビティの証拠を隠す可能性があるため、慎重に制限してください
- モジュールはアクションを実行したユーザーをログに記録しますが、管理者は他のユーザーになりすます可能性があります - 完全な説明責任のために他のセキュリティ対策と組み合わせてください
- ログエントリはデータベースにプレーンテキストで保存されます - 監査データが機密性の高い場合は、データベースレベルの暗号化を検討してください
- ログイン失敗試行は試行されたユーザー名とともにログに記録され、データベースを読み取れる人に有効なユーザー名が公開される可能性があります