隔離と管理機能/ Quarantine & Ops
検査結果を「見えなくする」だけでなく、感染ファイルをどう保管し、必要なときにどう扱うか。そして、うまく検査できなかったものをどう拾い直すか。定期処理と管理者向けの機能をまとめて説明します。
状態による可視性制御Visibility
検査結果はファイルの状態として記録されます。この状態を使い、データベースのアクセス制御(RLS=行単位で「誰がどの行を読めるか」を DB 自身が強制する仕組み)で、検査済み(clean)以外は一般利用者から見えないようにしています。
| 状態 | 一般利用者 | 管理者 | DL・プレビュー・共有・Drive 同期 |
|---|---|---|---|
| 検査済み(clean) | 見える | 見える | できる |
| 未検査・検査中 | 見えない | 見える | できない |
| 感染(infected) | 見えない | 隔離画面で見える | できない |
| 失敗(failed) | 見えない | 見える | できない(再スキャンを促す) |
| 検証不能(skipped) | 見えない(本人のみ状態確認可) | 見える | できない(再アップロードを案内) |
アクセス制御を DB 層で強制しているのが要点です。仮にアプリ側の表示制御をすり抜けても、データベースが検査済み以外の行を返さないため、未検査・感染ファイルが利用者に露出しません。
隔離処理と隔離台帳Quarantine
感染が確定すると、matsuba-scanner はファイルを隔離バケットへ移し、同時に隔離台帳(レジストリ)へ記録を残します。台帳には、Box 名・ファイル名・脅威名・検出日時・アップロード者などを、その時点のスナップショットとして保存します。
感染したファイルの扱いは、そのファイルに過去の検査済み版があるかで変わります。
| ケース | 何が起きるか | 利用者に見える「現在版」 |
|---|---|---|
| 初回アップロードが感染 clean 版が無い | 元のファイルの行を即時に撤去し、名前を解放する(記録は台帳が保持) | その名前のファイルは残らない |
| 差し替えで感染 clean 版がある | 感染した新しい版だけを隔離扱いにする | 元の検査済み版のまま(利用は継続できる) |
差し替えの失敗で壊れた版が残っても、正常な旧版があれば通常どおり使える、という考え方です。台帳に記録を残すことで、行を撤去したケースでも「いつ・何が・どの Box で」検出されたかを後から追跡できます。
取り出しと恒久削除Extract & Delete
隔離したファイルに対して管理者が行える操作は 2 つです。どちらも重大操作として、監査記録と管理者全員へのメール通知を伴います。
取り出し(調査用)
マルウェア解析などのために、隔離ファイルを安全に取り出す操作です。通常のダウンロード経路とは経路を分離しています。隔離バケットを読めるのは専用のサービスアカウント(隔離読取専用 SA)だけで、通常はどのサービスにも紐付けていません。取り出しのときだけ、アプリ本体がこのアカウントを一時的に借りて(impersonation)、短時間だけ有効な署名付き URL を発行します。
- 理由の入力(10 文字以上)と、取り扱いリスクの誓約チェックを必須にしています。
- 取り出したファイルはブラウザで開かず、必ずダウンロードされます(マルウェアがブラウザ内で実行されるのを防ぐため)。
- 2 人が同時に取り出そうとした場合は、1 件だけを通します。
- 誰が・いつ・なぜ取り出したかを監査に記録し、管理者全員にメールで知らせます。
恒久削除
隔離ファイルを完全に消す操作です。取り消せないため、二重の確認(理由の入力+確認欄に「削除」と入力)を求めます。削除は、削除だけしかできない権限(読み取りは持たない)で実行し、ストレージから物理削除するとともに台帳の行も消します。削除後も、監査記録にファイル名・脅威名を残すことで追跡できます。
再スキャンと滞留・失敗の検知Rescan & Detection
スキャンが何らかの理由で完了しないことがあります。それを検知し、拾い直す仕組みです。
- 滞留の検知: 5 分以上「検査中」のまま止まっているものを検知します。5 分間隔のジョブが件数を集計し、一定件数を超えたら管理者へ警告します。
- 失敗: タイムアウトや接続エラーで検査できなかった場合、すぐには「失敗」にせず「検査中」のまま残し、3 回連続で失敗して初めて「失敗」に確定させます(「失敗=復旧不能」と誤解させないため)。
-
再スキャン: 滞留・失敗したものを、個別または一括(最大 100 件)で再検査に回せます。状態を「未検査」に戻し、専用の再スキャン用イベント経由で
matsuba-scannerに再投入します。
管理画面Admin Screens
管理者向けに 2 つの画面を用意しています。どちらもシステム管理者だけがアクセスでき、それ以外の利用者には存在ごと見えません(アクセスすると 404)。
スキャンキュー
スキャンの稼働状況を運用する画面です。滞留・失敗・シグネチャ・EICAR の 4 つの健康指標カード、シグネチャ DB の詳細、検査サービスの処理件数やレイテンシ、滞留一覧・失敗一覧、そして検証不能ファイルの一覧を表示します。30 秒ごとに自動更新され、異常が出るとカードの色が変わります。
隔離ファイル
隔離台帳を一覧する画面です。脅威名・検出日時・所属 Box・アップロード者・サイズを表示し、90 日経過を強調します。各行から詳細・取り出し・恒久削除を行えます。