【ツール活用|実務向け】Backlogのファイルアクセス履歴を突き止める:プラチナプランにおけるログ分析の実践

導入

プロジェクト管理ツールとしてBacklogを運用している際、「誰がいつ重要なファイルをダウンロードしたのか?」というセキュリティ上の疑問に直面することがあります。しかし、Backlogの標準画面上にはファイル履歴機能がありません。本記事では、プラチナプランで提供される「アクセスログ」を活用し、どのような手段で誰がファイルにアクセスしたかを技術的に追跡する方法を解説します。

基礎知識

Backlogのアクセスログは、サーバーに対するリクエスト情報を記録したものです。ここにはHTTPリクエストのパスやアクセス時刻、ユーザーIDなどが含まれます。ファイルのダウンロード操作は、特定のURLパス(エンドポイント)へのリクエストとして記録されます。プラチナプランで出力されるログを解析することで、単なる閲覧だけでなく、ダウンロードの証跡を抽出することが可能になります。

実装/解決策

アクセスログはCSV形式などで提供されることが多いため、これをパースして特定のパスを抽出するのが効率的です。個別のファイルダウンロードと、一括ダウンロードではリクエストパスが異なる点に注意が必要です。
1. アクセスログをダウンロードする。
2. ログからダウンロード関連のエンドポイント(`/downloadAttachment/` など)を含む行を抽出する。
3. 抽出した行からユーザーIDとタイムスタンプ、対象のファイルIDを紐付ける。

サンプルプログラム

以下は、取得したアクセスログからダウンロード操作を抽出するPythonスクリプト例です。

import csv

ログファイル名
log_file = 'access_log.csv'

特定したいダウンロードパスのパターン
target_paths = ['/downloadAttachment/', '/downloadSharedFile/']

def analyze_backlog_logs(file_path):
with open(file_path, mode='r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
# リクエストパスがダウンロード関連かチェック
if any(path in row['path'] for path in target_paths):
# ユーザーID、時刻、アクセスしたパスを出力
print(f"ユーザー: {row['user_id']} | 時刻: {row['time']} | アクション: {row['path']}")

実行
注意: CSVのヘッダー名(user_id, time, path)は実際のログ形式に合わせて調整してください
analyze_backlog_logs(log_file)

応用・注意点

一括ダウンロードの限界
参考情報にもある通り、一括ダウンロード(`/downloadAllAttachment/` 等)を使用された場合、ログには「zipファイルがダウンロードされた」という事実しか残りません。個々のファイル名までは特定できないため、機密情報を扱う場合は「ファイルをまとめてダウンロードさせない」といった運用ルールや、そもそも該当ファイルをBacklogにアップロードさせないといったガバナンス策を併用することが現場での鉄則です。また、ログの保持期間には制限があるため、監査目的であれば定期的にログを外部ストレージへ退避させる運用フローを構築しておきましょう。

コメント

タイトルとURLをコピーしました